当前时区 GMT+8, 现在时间是 2008-7-7 10:14
游客:
注册
登录
仅登录论坛
|
搜索
帮助
中国Linux公社论坛
»
Skyeye项目专栏
» 在SkyEye上调试uClinux内核及与主机进行网络通讯
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 在SkyEye上调试uClinux内核及与主机进行网络通讯
ksh
高级会员
UID 92875
精华
1
积分 1465
帖子 771
阅读权限 50
注册 2004-2-4
来自 China
状态 离线
#1
发表于 2006-12-10 18:53
资料
短消息
加为好友
在SkyEye上调试uClinux内核及与主机进行网络通讯
在SkyEye上调试uClinux内核
(blackfin.kang@gmail.com)
1.1 安装skyeye
从服务器下载skyeye-2003-10-06.tar.bz2,然后解压:
$ tar jxvf skyeye-2003-10-06.tar.bz2
进入skyeye目录,按照readme文件中的要求,运行:
$ ./configure --target=arm-elf --prefix=/usr/local --without-gtk-prefix --without-gtk-exec-prefix --disable-gtktest
$ make
$ make install
1.2 编译uclinux
先安装交叉编译器,将arm-elf-tools-20011219.tar.gz在本机的“根目录”下解开,解到/usr/local/arm-elf目录下。请注意一定要在根目录下解压。
将uClinux-dist-20030522.tar.gz解开,比如解开在/usr/src/uclinux-dist/下,然后进入/usr/src/uClinux-dist/目录,执行如下命令:
$ make menuconfig
在vendor/product中选择GDB/ARMulator,kernel版本选择2.4,然后exit and save。
$ make dep
$ make
$ ln -s images/romfs.img boot.rom
这时在/usr/src/uClinux-dist/linux-2.4.x目录下生成linux文件,在/usr/src/uClinux-dist/image目录下生成文件系统。
解压uclinux4skyeye.tgz,这个包中应该有相应的skyeye.conf和8019网卡驱动程序,下面我们把网卡驱动程序加到上面的uclinux源码中。
在/usr/src/uclinux-dist目录下,拷贝相应的skyeye.conf到此目录下。注意skyeye.conf中应该是AT91的定义。就可以用skyeye来调试运行kernel了,在/usr/src/linux-dist目录下运行:
$ skyeye linux-2.4.x/linux
(gdb) target sim
(gdb) load
(gdb) run
kernel start. ....
这时应该可以看到uClinux的启动画面。如果需要进一步调试,需要学习gdb的命令使用。注意要在 skyeye.conf 和boot.rom所在目录下执行skyeye。
1.3 加载tuntap.o内核模块
tuntap.o是linux系统自带的模块,一般自己就加载了。如果没有就使用insmod命令。
步骤2 生成支持skyeye_ne2k网卡的内核
在完成第一部分内容后,在内核中添加skyeye_ne2k网络程序,添加显示网络包类型和数目的信息。
2.1 修改config文件
uClinux-dist/vendors/GDB/ARMulator/config.linux-2.4.x应该有如下项(没有就添加):
CONFIG_NET=y
CONFIG_NET_ETHERNET=y
CONFIG_SKYEYENE2k=y
2.2 修改Makefile文件
uClinux-dist/linux-2.4.x/drivers/net/Makefile应该有如下项(没有就添加):
obj-$(CONFIG_NET) += Space.o setup.o net_init.o loopback.o
obj-$(CONFIG_SKYEYENE2k) += skyeyene2k.o
2.3 修改Config.in文件
uClinux-dist/linux-2.4.x/drivers/net/Config.in应该有如下项(没有就添加):
if [ "$CONFIG_NET_ETHERNET" = "y" ]; then
#add for skyeye
if [ "$CONFIG_ARCH_ATMEL" = "y" ]; then
tristate ' SkyEye ne2k ethernet (for ARMUlator) ' CONFIG_SKYEYENE2k
fi
注意:if,方括号,单引号前后有空的地方,空格不能省略。
关于Config.in文件的语法,可以查阅linux-2.4.x目录下的Documentation/kbuild/config-language.txt文件。
2.4 增加驱动文件
把skyeyene2k.[ch]文件拷贝到uClinux-dist/linux-2.4.x/drivers/net/目录下。
2.5 运行make menuconfig
选择GDB/Armulator开发板,选择Custom Kernel Settings,然后exit and save。
在内核的配置菜单中,在Network Device Support项中,进入“Ethernet (10M and 100M)”,然后选择 ' SkyEye ne2k ethernet support (for ARMUlator)' 选项。然后编译uClinux内核:
$ make dep
$ make
2.7 用skyeye调试uClinux
用root帐号,通过SkyEye运行有skyeyene2k驱动支持的uClinux内核。
$ skyeye linux-2.4.x/linux
(gdb) target sim
(gdb) load
(gdb) run
.....
$ ifconfig eth0 10.0.0.2
在另一个linux终端执行如下目录:
$ /sbin/ifconfig
可以看到一个 net device tap0 10.0.0.1
$ping 10.0.0.2
可以ping通10.0.0.2,这证明skyeyene2k驱动程序运行了。
然后试着在uclinux上增加更多的应用,如ftp client/server,nfs server,telnet client/server,并运行调试一下。用skyeye在skyeyene2k驱动中设置断点,调试skyeyene2k驱动程序,观察它在init/send/recv上的实际操作。
lionwq
新手上路
UID 231687
精华 0
积分 8
帖子 3
阅读权限 10
注册 2006-11-26
状态 离线
#2
发表于 2006-12-10 21:41
资料
短消息
加为好友
首先,我用testsuit的列子运行 没有问题。
现在的问题是我自己编译uclinux后,(上面说的makefile和config.in也改了),出现uclinux界面后,ifconfig
eth0 Link encap:Ethernet HWaddr 00:04:03:02:01:0F
inet addr:10.0.0.2 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:16
主机上ifconfig
tap0 Link encap:Ethernet HWaddr 96:CA:7D:90:04:75
inet addr:10.0.0.0 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
很不理解 为什么 inet addr 是10.0.0.0 ????? 而不是10.0.0.1,testsuit里是10.0.0.1
skyeye.conf
cpu: arm7tdmi
mach: at91
...
net: state=on, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
我试用了ping 命令,当然是两边都没反应,不过从Tx Byte 和 Rx Byte 可以 看出数值 是一样的
这是什么问题呢?
ksh
高级会员
UID 92875
精华
1
积分 1465
帖子 771
阅读权限 50
注册 2004-2-4
来自 China
状态 离线
#3
发表于 2006-12-11 01:08
资料
短消息
加为好友
Then you can try modify ip of host:
ifconfig tap0 10.0.0.1
lionwq
新手上路
UID 231687
精华 0
积分 8
帖子 3
阅读权限 10
注册 2006-11-26
状态 离线
#4
发表于 2006-12-11 22:59
资料
短消息
加为好友
我搞定了,谢谢 版主。我刚接触linux对这些命令还不熟。
不过不明白为什么testsuit里的例子一运行就是ok的。
投票
交易
悬赏
活动
论坛跳转 ...
> 公告区
> 系统安装
> 硬件配置
> 共创 LINUX 专区
> 新华 LINUX 专区
> Magic Linux技术支持区
> Magic Linux开发培训版
> 中文化与桌面美化
> 桌面使用小技巧
> 命令行使用小技巧与SHELL编程
> 网络工具
> 办公软件
> 多媒体应用
> 游戏乐园
> 服务器与网络安全
> Linux资源共享区
> Debian/LFS/Gentoo专题版
> Linux高质量字体研究
> easyright计算机研究所
> Linux认证考试专题版
> 应用编程技术与项目孵化
> 网站开发技术与项目孵化
> 参与国际开源项目
> 翻译汉化
> 中文GNOME用户交流区
> Skyeye项目专栏
> lumit项目专栏
> eva项目专栏
> fanx项目专栏
> 连连看for Linux项目专栏
> OurLinux杂志专区
> BitStorm项目专栏
> AVS项目专栏
> VirgoFTP项目专栏
> EGui开源项目
> RT-Thread实时操作系统
> 内核源代码阅读交流
> 内核安装和升级
> 嵌入式开发
> 校园行动联盟
> Linux与公社文化杂谈
> 求职与招聘
> 公社接待中心
Powered by
Discuz!
5.5.0
© 2001-2007
Comsenz Inc.
TOP
清除 Cookies
-
联系我们
-
中国Linux公社
-
WAP