网卡底层驱动程序的编写
实践与经验
功能通常都是用1234器件来实现的。不同的以太网卡所用的器件有所不同。
在本文中所采用的网卡上的1234器件是
下几个基本部分:
!硬件初始化!发送初始化
!接收和发送的中断服务程序
(硬件初始化.)
硬件的初始化为网络控制器在当前的系统中正确运行提供了配置参数。这其中包括主机将适当的值加载到配置寄存器和地址寄存器中,并使网络控制器在网络上正常工作,以下一些参数是在网络控制器能够工作前所必须初始化的:
&+25-.673!&89:;8<=>::?$>@:8A%;B8CD8;(ED;CE:E8CF。
,以太网控制器&+25-.673
它&+25-.673是高度集成的以太网控制器,
的全双工功能能使网卡通过双绞线同时接收、发送数据,它内置有.0G3&7"。它有以下的一些主要特点:
!遵守%;B8CD8;44、4%%%5-,/H、.-I9J8K、.-I9J8,、.-I9J8+等标准
!与’%,--软件兼容
以使通道的带宽加!支持全双工以太网功能,
倍
!数据总线的宽度!物理地址!中断服务的类型!接收缓冲区的大小
!=4=#门槛值
!可能接收的数据包类型
应该注意的是,数据结构寄存器!$(&F必须在其他所有寄存器!除了命令寄存器!(&F之外F之前初始化,对初始化的顺序也有一定的要求。
(驱动程序的编写,)
发送驱动程序一般分为两个部分,第一部分
!支持*+)、7*4和I’(的自动检测功能
自动改正极性!在.-I9J8+网络中,
!5条中断线
!提供可选择的.0个4L#口基地址!内置.0G的3&7"
H主机和控制器之间的数据传递
主机和控制器之间通常采用两种方式进行数
!$COM8CJ8DPF使上层软件无论何时传送一个数据包
到驱动程序时,都能为其初始化一个传输过程。如果驱动程序不能立即发送这个数据包!也就是说发送器很忙F,则将该数据包送入在缓冲区内的未发送数据包队列中,当初始化完数据包或者将数据包送到队列中后,$COM8CJ8DP返回。$COM8C38DP是和中断服务程序!$COM8C43&F一起协同工作的,当发送完成后,网络控制器向主机发出中断请求表示发送完成,同时使发送状态寄存器的!+3&F相应位置位。
由上面的讨论可知,发送驱动程序包括两部分,$COM8C38DP和$COM8C43&,同时,$COM8C43&中还包括接收驱动程序。中断服务程序!$COM8C43&F(如图H)与由接收、发送产生的中断有关。$COM8C43&由两部分组成,一部分是数据包发送程序,另一部分是数据包接收程序。
发送驱动程序.)
发送驱动程序由两部分组成。第一部分是$COQ当被上层调用时,对发送进行初始M8C38DP!见图NF,
化。$COM8C38DP通过读取命令寄存器!(&F中的内容!+R)位是否为-F来检查控制器是否为发送作好了
据的交换,一种是内存共享模式,一种是4L#端口所以主模式。在本文中所采用的是4L#端口模式,要对这种方式进行讨论。
如图,所示为4L#端口方式,这种方式用于在该方式下,控制器的内存是通’EM8::的’%,---。
过系统的4L#空间中的一个端口来访问的,一次只能读写一个字节或一个字。以太网控制器通过用户编程来控制它的内存和4L#端之间的数据传递。控制器的内部寄存器和内存访问端口在主机系统的4L#端口表中,主机系统通过访问这些端口
来设定相应的内部寄存器以及访问控制器的内存。
现
代计算机
!
图,4L#端口
N网络控制器驱动程序的编写
一个正确的以太网控制器驱动程序应包括以
!
"$%&’(#")*+&
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高等教育网卡底层驱动程序的编写(2)全文阅读和word下载服务。
相关推荐: