问一个网卡驱动学习的问题
学习了一下DM9000 的驱动, 都是一些对硬件寄存器的操作, 这些只是一些最基本的设备操作, 难道内核里面网卡驱动只是需要按照这个框架搭建起来就行了?
要全面点的写网卡驱动还需要学习哪方面的知识呢?
分析TCP/IP 源码有没有太大的必要? 以太网协议也都在内核里面实现了吧.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
找一个类似的网卡驱动源代码仔细分析一下。
学习linux最大的好处就是开源,这也是我们最丰富的资源,好好利用。
对啊, 分析了一下 DM9000 的驱动, 好像没有多少内容跟协议有关系,
就是调用 netif_rx , netif_wake_queue 直接让内核处理了, 光看驱动内容的话, 跟单片机驱动没有什么关系
如果学习驱动,你学个框架就行。
如果学习网卡驱动,就要看看协议了。
同理,如果是写某个具体协议的驱动,还是要看协议和硬件文档,整明白协议有哪些功能,硬件已经实现其中的哪些功能和协议的哪些层面。然后就清楚驱动要实现剩下的那些。
网卡驱动和什么协议有关?
我也没发现DM9000驱动里面有什么协议, 如果有的话那就只有一个接收数据包判断的条件, 协议部分好像都通过netif调用到上层函数里面了.
操作系统一般来说还是分得很细得。网卡驱动一般只管和硬件打交道,也就是收发数据。具体协议那些由操作系统得其他部分做掉了。
这样做的好处是,支持一个新网卡只要加一些最基本的功能即可。其他协议部分不用动,可以用现成的
IEEE 802.3啊, 相当于2层的MAC,相当于1层的PHY。
其实这个规范不用怎么看, 只要拿一个现成的driver对照着datasheet看一遍就成了。
是啊,这个协议和写网卡驱动没有太紧密的联系,看看datasheet就差不多了。
IEE802.3 好像也是在上层函数里面完成的了, 内核太强大了, 什么都不要自己做,
相比较起来, 单片机下的网卡驱动以及协议都需要自己做, 也更能学到东西