网卡驱动1----程序框架

1.网卡驱动架构分析

1.1初始化
1.1.1分配net_device结构-alloc_etherdev
1.1.2初始化net_device结构(设备号,基地址,MAC地址,netdev_ops
1.1.3初始化硬件
1.1.4注册网卡驱动—register_netdev 

发送数据frame的过程需要关中断接收数据frame的过程不需要关中断的原因

答:在发送过程中是不能被打断的,在发送的过程中,不关中断,这时候如果有一个中断到来,那么cpu有可能会去相应该中断,如果该中断需要改写的数据是发送数据的缓冲区,那么缓冲区将被改写,这样即使cpu相应完毕该中断,再发送数据,接收方也不认识该数据不能接收。

在接收数据的时候,需要打开中断,是因为要及时的相应接收到的数据。如果关闭该中断,那么接收方有可能因为相应优先级高的中断而接收不到该数据


1.2数据发送
1.2.1通知上层协议,暂停向网卡发送数据-netif_stop_queue
1.2.2将SKb的数据写入网卡寄存器,发送走。
1.2.3释放skb结构-dev_kfree_skb
1.2.4在发送中断处理过程中,通知上层协议可以向网卡送数据-netif_wake_queue
1.3.3数据接收
1.3.1读取接收状态
1.3.2读取接收到数据的长度
1.3.3分配skb结构-dev_alloc_skb
1.3.4把网卡寄存器读出数据存入skb
1.3.5把收到的skb数据包交给协议栈处理-netif_rx



2、驱动编写测试

(1)安装驱动,为网卡配置IP,先ping自己,再ping同一网段的IP


(2)eth0是开发板的DM9000 网卡


(3)查看网卡

(4)ping自己时能ping通,但是没有提供发包函数。这说明不经过硬件相关层,因而也就是在硬件相关层之上,也就是表明IP是纯软件的概念。


(5)ping别的IP时ping不通,因为需要通过硬件相关层进行收发。因为没有提供发包收包函数。

注意:如果电脑有两个网卡,不要设置为同一网段,否则ping一个IP,操作系统根本不知道把数据发给哪一个网卡。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值