网卡底层驱动程序的编写
更新时间: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
正在阅读:
网卡底层驱动程序的编写05-21
唉他这个人作文400字06-27
外科休克和MODS知识点分享04-01
无法诉说的烦恼作文600字07-12
县营商办年度工作总结及下阶段工作规划06-05
书如彩虹作文500字06-22
文博考研学硕名词解释01-27
四年级上册综合实践教学计划12-28
奶奶的菜园子作文600字06-25
常见的木本植物08-07
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 底层
- 驱动程序
- 网卡
- 编写
- 译林版七年级下册英语语法
- Infrared Renormalons and Power Corrections in Deep-Inelastic Sum Rules
- 高考语文每日悦读:聚拢逸散的温暖
- 科技论文撰写要点
- 上海市闸北区2016届九年级上学期期末考试数学试卷(WORD版)
- 实验一 全基因组DNA的分离及纯化
- 2015上海财经大学统计与管理学院研究生招生简章
- 职场不能说的十句傻话
- 隧道控制超欠挖技术研究(13).
- 引水隧洞灌浆施工技术方案
- 大庆地区《资源与评价》九下化学参考答案
- 助力汽车业的全球接轨进程——专访美国汽车工业行动集团(AIAG)亚太区总监兼驻中国首席代表陈以龙博士
- 最新人教版八下英语期末复习提纲
- 山东省栖霞市高一下学期期中段考语文试题
- 培训用 阀门的基础知识
- 《父母与孩子之间的爱》教案2
- 临汾市2013年公务员招录职位表
- 房地产课程设计任务书
- 大学计算机考试基础知识(包含部分网络知识点)
- 内外力作用与地表形态变化