在SkyEye上调试uClinux内核及与主机进行网络通讯

来源:互联网 发布:里程记录软件 编辑:程序博客网 时间:2024/05/17 23:26

在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上的实际操作
原创粉丝点击