这篇文章给了我很大的帮助。
转自:http://www.linuxfans.org/bbs/thread-173360-1-1.html
这里只介绍第二步。第一步在我的日志:学习笔记:虚拟机redhat9下安装SkyEye,移植uClinux已经介绍了。
生成支持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驱动程序运行了。