网卡驱动程序
网卡驱动程序框架:
app: socket
---------------
--------------- 若干层网络协议--纯软件
---------------
---------------
hard_start_xmit|| /\
/ || netif_rx sk_buff
—————
硬件相关的驱动程序(要提供hard_start_xmit, 有数据时要用netif_rx上报)
硬件
怎么写网卡驱动程序?
- 分配一个net_device结构体
- 设置:
2.1 发包函数: hard_start_xmit
2.2 收到数据时(在中断处理函数里)用netif_rx上报数据
2.3 其他设置 - 注册: register_netdevice
测试1th/2th:
nfs 30000000 192.168.31.202:/work/nfs_root/uImage_nonand
bootm 30000000
- insmod virt_net.ko //装载驱动
- ifconfig vnet0 3.3.3.3 //装载vnet0网卡
ifconfig // 查看 - ping 3.3.3.3 // 成功
ping 3.3.3.4 // 死机
测试DM9000C驱动程序:
-
把dm9dev9000c.c放到内核的drivers/net目录下
-
修改drivers/net/Makefile
把
obj-\((CONFIG_DM9000) += dm9000.o
改为
obj-\)(CONFIG_DM9000) += dm9dev9000c.o -
make uImage
cp arch/arm/boot/uImage /work/nfs_root/uImage_dm9000c
开发板重启
nfs 30000000 192.168.31.202:/work/nfs_root/uImage_dm9000c
bootm 30000000
使用新内核启动
使用NFS启动
或
ifconfig eth0 192.168.1.17
ping 192.168.1.1