新的内核3.4.2移植成功后,系统跑起来后,发现内核不支持网卡驱动DM9000
分析后发现之前uboot里面设置的machid 为0x16a
set machid 16a // smdk2440 mach-smdk2440.c
set machid 7CF // mini2440 mach-mini2440.c
用set machid 7CF 试试看
问:dm9000 driver 什么时候调用呢
答:内核里面识别到了有同名的dm9000 plat_device(平台设备),才会调用dm9000_driver
问 怎么移植呢?
内核代码里面搜索dm9000
mach-mini2440.c里面有这个平台设备
平台设备 dm9000被注册到内核里面了! 注意这里说的是设备不是驱动
怎样的调用过程呢?
----->>>被调用
----->被调用
这里添加进内核里面 ----->被掉用
再回头看看我们的smdk2440代码,发现支持的平台设备很少且没有dm9000
在smdk2440.c代码里面添加如下代码:
make uImage -----uImage_net烧录到开发板---->set machid 16a--->bootm 32000000
ifconfig eth0 192.168.2.5.可以启动dm9000
问:以上是使用内核自带的dm9000驱动,如何使用最新的dm9000驱动,就需要自己写dm9000的驱动程序
发现写错了
mount -t nfs -o nolock,vers=2 192.168.2.102:/work/nfs_root/fs_mini_mdev_new /mnt 成功了
将自己移植的最新的dm9k.c 放到内核自带的dm9000文件夹里面
然后make uImage 编译进内核
问:如何设置 网络文件系统启动呢?
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.2.102:/work/nfs_root/fs_mini_mdev_new ip=192.168.2.5:192.168.2.102:192.168.2.1:255.255.255.0:eth0:off