网卡驱动程序

网卡驱动程序框架:

app: socket

       ---------------
       --------------- 若干层网络协议--纯软件
       ---------------
       ---------------

hard_start_xmit|| /
/ || netif_rx sk_buff
---------------
硬件相关的驱动程序(要提供hard_start_xmit, 有数据时要用netif_rx上报)

           硬件           

怎么写网卡驱动程序?

  1. 分配一个net_device结构体
  2. 设置:
    2.1 发包函数: hard_start_xmit
    2.2 收到数据时(在中断处理函数里)用netif_rx上报数据
    2.3 其他设置
  3. 注册: register_netdevice

测试1th/2th:
nfs 30000000 192.168.31.202:/work/nfs_root/uImage_nonand
bootm 30000000

  1. insmod virt_net.ko //装载驱动
  2. ifconfig vnet0 3.3.3.3 //装载vnet0网卡
    ifconfig // 查看
  3. ping 3.3.3.3 // 成功
    ping 3.3.3.4 // 死机

测试DM9000C驱动程序:

  1. 把dm9dev9000c.c放到内核的drivers/net目录下

  2. 修改drivers/net/Makefile

    obj-((CONFIG_DM9000) += dm9000.o 改为 obj-)(CONFIG_DM9000) += dm9dev9000c.o

  3. 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

版权声明:本文为博主原创文章,转载请注明文章来源,有需要帮忙可加QQ:871263854
原文地址:https://www.cnblogs.com/Dream998/p/8540796.html