当前位置: 技术问答>linux和unix
DM9000网络驱动编写的问题
来源: 互联网 发布时间:2016-04-12
本文导语: DM9000网络驱动程序共包括三个程序dm9000.c dm9000x.c dm9000.h,请问 (1)dm9000.c和dm9000x.c有什么区别?到底哪个是主驱动? (2)看了源码流程,发现,发送数据完毕之后,会产生一次中断。请问这个中断是硬件自动产生的吗?...
DM9000网络驱动程序共包括三个程序dm9000.c dm9000x.c dm9000.h,请问
(1)dm9000.c和dm9000x.c有什么区别?到底哪个是主驱动?
(2)看了源码流程,发现,发送数据完毕之后,会产生一次中断。请问这个中断是硬件自动产生的吗?还是需要软件通知?为什么要产生中断?源源不断的发送数据不行吗?
(1)dm9000.c和dm9000x.c有什么区别?到底哪个是主驱动?
(2)看了源码流程,发现,发送数据完毕之后,会产生一次中断。请问这个中断是硬件自动产生的吗?还是需要软件通知?为什么要产生中断?源源不断的发送数据不行吗?
|
Q1:没有什么主驱动,次驱动的的说法! 如果他们都是DM9000的驱动,那么他们同等重要。你可以看看dev->hard_start_xmit
指向哪里? 这个成员函数是网卡用来发送数据的地方!如果这两个文件是一个驱动,那么在你的这两个文件中,应该只有一个文件中有对它指向的函数的定义!
Q2:中断,当然是硬件产生的,是告诉你硬件上数据已经发送完成,你可以继续向外发送数据了!另外还有一些错误信息,也是通过中断告诉你驱动的! 源源不断发送数据当然不行,网卡是一个总线设备,在这个总线上,接入的不止你一个网卡,还有n多其他网卡,它们也要发送数据,所以,在每个网卡的硬件上都有一种机制来保证发送不冲突(实际上冲突时有发生,硬件上一般会回退一个时间在尝试发送,从而避免数据不要丢失)! 基于这个原因, 你不能源源不断的发送,你一定等待网卡给你回应之后才能发送下一包,不然可能导致数据错误和丢失!关于ethernet这块,去看看相关的规范吧,有详细描述!我这里讲的不是很清楚,怕误导了你!
指向哪里? 这个成员函数是网卡用来发送数据的地方!如果这两个文件是一个驱动,那么在你的这两个文件中,应该只有一个文件中有对它指向的函数的定义!
Q2:中断,当然是硬件产生的,是告诉你硬件上数据已经发送完成,你可以继续向外发送数据了!另外还有一些错误信息,也是通过中断告诉你驱动的! 源源不断发送数据当然不行,网卡是一个总线设备,在这个总线上,接入的不止你一个网卡,还有n多其他网卡,它们也要发送数据,所以,在每个网卡的硬件上都有一种机制来保证发送不冲突(实际上冲突时有发生,硬件上一般会回退一个时间在尝试发送,从而避免数据不要丢失)! 基于这个原因, 你不能源源不断的发送,你一定等待网卡给你回应之后才能发送下一包,不然可能导致数据错误和丢失!关于ethernet这块,去看看相关的规范吧,有详细描述!我这里讲的不是很清楚,怕误导了你!