网卡底层驱动程序的编写

更新时间:2023-05-21 02:24:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

网卡底层驱动程序的编写

实践与经验

网卡底层驱动程序的编写

刘海波

!""""柳瑞禹,郑桂林

(武汉大学电气工程学院,武汉#$%%&’)

摘要:随着网络的发展,要求对网卡有越来越深入的了解。本文介绍了网卡的结构和工作原理,着重介绍网卡同时介绍了驱动程序的编写。上控制器()*+%,-./工作原理和初始化,

关键词:网卡;驱动程序

引言

在+-世纪的今天,人类正逐步进入信息社会,计算机通信技术也正在迅猛发展。从局域网到广计域网、从公用数据网到12#&综合业务数字网,算机与通信技术网络的结合越来越紧密,已广泛应用于各个领域。13456354的发展也促进了计算机通信技术的发展。无论多么庞大、复杂的计算机通信 网,都是建立在计算机点对点进行通信的基础上的。随着人们对计算机通信的理解的增多,相应地对网卡也要求有更多的了解。本文将讨论网卡的底层驱动程序的编写。

配以前导码、帧定界符、目的地址、源地址以及填充段、然后再串行发送。接收时,首先鉴’%’校验等,别目的地址,如与本站地址不符,则将此帧信息丢弃,否则进行串7并转换,再对信息帧进行分解,把有效数据送往缓冲存储器。接收完一个信息帧后,如如校验正确,则向发送站送出一个8’9应答帧,有错误,则发出&89否定应答帧。

-以太网卡的一般结构

以太网卡是以太网的核心,它完成信息传输等

主要功能,图-为其组成框图。以太网是由以太网络控制器和微处理器用其他控制转换部件组成的智能接口,是信息传输、控制和管理的重要环节。

为了满足信息串7并转换的要求,使主机的传输速度能与快速的以太网卡相匹配,在网卡上设置了数据缓冲存储器。数据的串并转换、’%’校验以及数据的发送与接收、碰撞检测等都是在网卡上完成的,网卡上的各部件都在网络控制器的统一协调

现代计算机

图-以太网卡的组成结构

(电缆收发控制+)

包括载波侦听、碰撞检测、发送定时等。碰撞检测的方法是在发送信息的同时对电缆上的信息进行接收采样,再与发送信息比较,若不一致就表明有碰撞产生。

以太网的核心由三部分组成,即数据链路控制器、曼彻斯特编码转换器和收发器电路,这三部分

总下工作。主机以传输命令的方式控制网卡的工作,

第其工作任务大致上有以下几个方面:

(数据的发送和接收-)一

发送时,网卡将数据按一定的格式装配成帧,一

七期

!!"#$%&’"!()*$%+,,-./")

网卡底层驱动程序的编写

实践与经验

功能通常都是用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网络控制器驱动程序的编写

一个正确的以太网控制器驱动程序应包括以

!

"$%&’(#")*+&

,--./0

总第一一七"期!

网卡底层驱动程序的编写

实践与经验

准备。如果控制器已作好准备,#123415467用控制器的远程#!8通道将数据包从主机内存发送到发送缓冲区中,然后发出发送命令并返回。否则,如果控制器忙的话0*9(位为-:,#123415467将数据包送到待发送数据包队列,然后返回。

#12341=5%为控制器提出的中断服务并且记录

发送状态寄存器0*5%:中的内容,发送在未发送数据包队列中的下一数据包。因此,对于发送中断,

#12341=5%执行下面几步:

!恢复中断寄存器0=5%:中的(*9位;

"通过读发送状态寄存器0*5%:检查是否正确

发送;

发送#如果还有更多的数据包在未发送队列,下一数据包,否则到第<步;

检查是否还有未处理$读取中断状态寄存器,的中断。

接收驱动程序+)

因为接收驱动程序只能是一个中断服务程序,所以它完全包含在#12341=5%之中。当产生接收中断,一个或多个数据包由控制器存入缓冲环中,

#12341=5%将这些数据包从缓冲环中移走然后送入

到主机,直到缓冲环中空为止。接收数据包驱动程序步骤如下:

!恢复中断状态寄存器中的(9*位;

读取数据包”命令读出缓冲环中"通过发出“

的下一个数据包;

#检查接收缓冲环是否为空:>&%?寄存器是

否等于’))%寄存器;

则到第-步,否则读取中断状$若环不为空,

态寄存器以处理其他中断。

参考文献

图;中断服务程序的流程图

华中理@-A刘乐善主编.微型计算机接口技术及应用.武汉:工大学出版社,+,,,

电子科技大学出@+A陈露晨等.计算机通信接口技术.成都:版社,-BBB

(收稿日期:+,,-C,DC++)

现代计算机

总第图<#123415467程序

一七期

"!"#$%&’"!()*$%+,,-./!)

网卡底层驱动程序的编写

实践与经验

12*345678912*&:56;:9<3%’==:56>5?

(@:A4?*?5BCDE5F;9@:A4?GH--I,(A5?4)

J7EFD4KF:@5FAFACLCBC>8MNC?F8O%FACD?CF9PCP4?FF8Q?8PN8DC478:FFAC?CFP8DQK4DL/+A5EM4MCD5?FD8L:KCEFAC

EFD:KF:DC4?LFAC8MCD4F58?MD5?K5M>C8OK4DL/+ACM4MCD4>E8M:FECNMA4E5E8?FAC8MCD4F58?MD5?K5M>C4?LA4DLP4DC5?5F54>5R4F58?8O&+1S-.TJU/+ACM4MCD5?FD8L:KCEA8PF8PD5FCLD5BCDO8DFACK4DL5?FACC?L/

VC;P8DLE:’CFP8DQK4DL;$D5BCD

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

(上接第00页)

结论

由于智能卡携带容易,使用者不必记忆任何相并且具有较安全的关资料!最多只要记忆)2’号],

动态密码认证技术,所以智能卡在电子商务领域会得到越来越多的应用。

参考文献

%>ECB5CDUK5C?KC9,---(8NM:FCD(8NN:?5K4F58?E,

^,_18:DC5D8/U9"8>B4/&/"875>C(8LC)D8FCKF58?P5FAUN4DF6K4DLE/)D8KCCL5?ZE8O%(##),---P8DQEA8M8?"875>C#76XCKFU;EFCNE/U8MA54J?F5M8>5E9‘D4?KC9a:?C.HFA9,---^H_UKA?C5CD/W9UA8EF4KQ/J/WDC4Q5?Z*M2E34DLF8$8b"8LC6>5?ZUCK:D5F;+ADC4FEO8DUN4DF(4DLE/*U%’2[@8DQEA8M8?UN4DF(4DL+CKA?8>8Z;9*U%’2[)DCEE9.TTT

(收稿日期:,--.6-c6-S)

^._*D5C?/)/2?FCD?CFK4DL,4EN4DFK4DL4E4FD:C2?FCD?CF?8LC/

J:FAC?F5K4F58?5?%>CKFD8?5K(8NNCDKCW4ECL8?UN4DF(4DLE

(J#+54?6X5C9

<3J’=Y8?Z6M5?Z

($CM4DFNC?F8O(8NM:FCDUK5C?KC4?L+CKA?8>8Z;9(A5?4*?5BCDE5F;8O"5?5?Z4?L+CKA?8>8Z;9[:RA8:,,.--S(A5?4)

J7EFD4KF:UN4DFK4DLE4DCEN4>>4?LC4E;F8K4DD;4D8:?L9;CFA4BCC?8:ZAMD8KCEE5?ZM8PCD4?LL4F4EF8D4ZCF8EF8DC:ECD

MD8O5>CE9C?KD;MF4?LLCKD;MFL4F494?LE:MM8DFC>CKFD8?5KK8NNCDKC4MM>5K4F58?E/2?FA5EM4MCDPCL5EK:EEFACMD87>CNE8O4:FAC?F5K4F58?5?FD4L5F58?4>C>CKFD8?5KK8NNCDKC94?LFAC?Z5BC4?ECK:D5F;NCKA4?5EN74ECL8?EN4DFK4DLE/

VC;P8DLE:UN4DFK4DLE;UCK:D5F;;(A4>>C?ZC\&CEM8?EC;+5NCU;?KAD8?8:E

代计算机总第一一七#期"

!

!

"$%&’(#")*+&

,--./0

本文来源:https://www.bwwdw.com/article/ns14.html

Top