CN101232522A - 一种网卡驱动方法 - Google Patents

一种网卡驱动方法 Download PDF

Info

Publication number
CN101232522A
CN101232522A CNA2008100598575A CN200810059857A CN101232522A CN 101232522 A CN101232522 A CN 101232522A CN A2008100598575 A CNA2008100598575 A CN A2008100598575A CN 200810059857 A CN200810059857 A CN 200810059857A CN 101232522 A CN101232522 A CN 101232522A
Authority
CN
China
Prior art keywords
network interface
interface card
data
register
upper strata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008100598575A
Other languages
English (en)
Other versions
CN101232522B (zh
Inventor
廉玉平
韩雁
霍明旭
陈金龙
张艳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2008100598575A priority Critical patent/CN101232522B/zh
Publication of CN101232522A publication Critical patent/CN101232522A/zh
Application granted granted Critical
Publication of CN101232522B publication Critical patent/CN101232522B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种网卡驱动方法。现有技术由于灵活性不够,导致不同模块之间通信效率的降低。本发明方法是:按照网卡的时序要求,配置好网卡的寄存器;根据网卡具体工作需要的参数对网卡进行初始化;监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态;如果接收到上层给出的发送使能信息,则进入数据发送流程;如果接收到网卡给出的中断信息,则进入中断处理流程;如果网卡的写指针没有发生变化,进入数据接收流程。本发明引入了应答等待机制,上层可以随时利用该驱动结束对网卡的数据传输过程,只需要向网卡驱动发出数据结束信号即可。这种基于时间的方法大大增强了网卡驱动的通用性。

Description

一种网卡驱动方法
技术领域
本发明属于集成电路技术领域,具体涉及一种网卡驱动方法。
背景技术
在网络技术高度发达的信息时代,作为OSI(开放***互联基本参考模型)数据链路层的网卡自然起到了不可忽视的重要作用。然而,不同公司的网卡接口信号不尽相同,不同工艺、不同型号的网卡时序要求也不一样,这对基于硬件实现的网卡驱动的灵活性带来很大的负面影响。
传统的网卡驱动是基于C或其他语言设计的软件程序,但若想把自主设计的芯片和网卡进行通信,必须用硬件电路实现对网卡的配置和控制。一般的网卡驱动都是针对具体的应用和特定型号的网卡,基本流程包括:网卡初始化,中断处理流程控制,发送流程控制,接收流程控制这几个方面,而且接口信号不易与和芯片中不同的电路模块进行通信,这无疑增加了接口信号的复杂性,导致不同模块之间通信效率的降低。
发明内容
本发明的目的是针对现有技术的不足,提供一种具有易移植、可配置、具有开放式接口等特点的网卡驱动方法。
本发明的网卡驱动方法包括网卡初始化流程、数据发送流程、中断处理流程和数据接收流程。
网卡初始化流程主要用于对网卡中的相应寄存器进行配置,这些寄存器主要包括网卡工作模式寄存器,读写指针寄存器,物理地址寄存器,组播地址寄存器,中断屏蔽寄存器,数据格式配置寄存器,发送配置寄存器,接收配置寄存器。
数据发送流程完成数据在上层和网卡之间的传递,即从上层读取数据包,然后传输给网卡。
数据接收流程中数据的传输方向是自底向上的,即从网卡中读取数据包,然后传输给上层。当网卡驱动检测到网卡中有新的数据包时,读取网卡中的数据,并向上层写入开始信号同时传输数据,若收到上层给出的应答信号,则表明上层已经成功的接受了该数据,此时可以撤销该数据端口的数据。重复该过程,直到将网卡中新的数据包读取完毕为止。
网卡中断处理流程主要处理由网卡送来的中断信号,并按照信号类型进入相应的处理流程。若网卡驱动接收到数据接收中断时,按照上述的数据接收流程进行处理,其它中断类型,如发送完成中断,发送错误中断,接收错误中断等,记录下该信息供上层查询以决定相应的操作。
本发明的网卡驱动方法的具体步骤是:
1、按照网卡的时序要求,利用高电平计数寄存器监测读写使能信号的高电平保持时间,利用低电平计数寄存器监测读写使能信号的低电平保持时间,配置好网卡的寄存器。具体是:网卡要求低电平的保持时间为T1,则低电平计数寄存器的初始值至少设为Tl/Tp,网卡要求高电平的保持时间为Th,则高电平计数寄存器的初始值至少设为Th/Tp,其中Tp为***时钟周期;在配置寄存器时,先对高电平计数寄存器进行操作,每过一个***时间,该高电平计数寄存器的值减1,当该值减为0时,对低电平计数寄存器进行操作,每过一个***时间,该低电平计数寄存器的值减1,当该值减为0时,完成寄存器的数据配置。
2、根据网卡具体工作需要的参数对网卡进行初始化。
3、监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态继续监测。
4、如果接收到上层给出的发送使能信息,则进入数据发送流程。具体是:首先从上层读出需要发送数据包的长度信息,以便驱动检测最终读进来的数据长度是否和开始给出的长度一致,同时将该长度信息写入网卡的长度寄存器以便网卡进行读操作;然后不断将上层发送来的数据信息按照具体的网卡时序写入到网卡的数据寄存器中;每写入一个数据,给上层一个应答信号,以便上层及时撤销已读数据并写入新数据,直至收到上层给出的结束信号。
5、如果接收到网卡给出的中断信息,则进入中断处理流程。如果网卡的写指针没有发生变化,表示该中断信息不是新的数据帧,则将该中断信息记录下来以备上层用户进行中断查询,同时清除网卡中断。如果写指针发生变化,表示该中断信息是新的数据帧,则进入步骤6。
6、该中断信息是新的数据帧时,从网卡的数据长度寄存器中读出该数据帧的长度信息,然后从网卡的数据寄存器中读出数据,并将该数据写入上层,每写入一个数据后,进入等待状态;当上层给出一个应答信号时,停止等待状态,将该数据帧的长度信息减1,不断重复该过程,直到数据帧的长度信息为0,表明整个数据帧读取完毕,给上层发送一个数据帧传输完毕信号,结束数据接收流程。
本发明的网卡驱动方法有如下特征:
当外部有发送请求信号时,网卡发送程序进行相应参数的配置,通过数据总线端口读出长度信息并且给出应答信号。随后上层若想传送数据给网卡,只要在数据总线端口中写入相应的数据并且给出发送使能信号,该使能信号必须等到网卡发送程序给出相应的应答信号才能撤消,这样整个过程就完成了一个数据的传输,上层若想结束网卡的发送过程,必须给出相应的结束信号如数据空信号,则网卡驱动自动执行对网卡的发送过程配置,从而完成了外部对网卡发送流程的控制。
当网卡发出中断请求时,网卡中断处理程序自动对中断类型进行检测并判断下一步的处理步骤。若不是接收中断,则记录相应的中断信息以备上层查询,同时清除网卡的中断寄存器。若有数据包需要传送给上层,则给出写数据使能信号,同时在数据端口准备好新的一帧数据,当上层给出数据接收完毕的应答信号时,网卡接受流程撤消使能信号并准备传输下一帧数据。当全部完成对网卡缓冲区中数据的接收时,网卡驱动给出相应的结束信号并对网卡进行相应的参数配置。
对于要使用网卡作为通信链路的芯片或电路来说,网卡给出的控制,数据和地址线,相对于该芯片来说是异步信号。不同的网卡读写时序要求是不同的,本发明中的网卡驱动方法提供了可配置的读写周期和数据建立及保持时间,可以实现对网卡与芯片之间数据交换速率的自由控制。该功能通过在网卡驱动中添加两个控制寄存器来实现,一个寄存器为高电平计数寄存器,用于记录送给网卡的读使能和写使能信号的高电平保持时间,另一个寄存器为低电平计数寄存器,用于记录送给网卡的读使能和写使能信号的低电平保持时间。
本发明中寄存器具体参数的配置以及寄存器的读写操作等为基本技术常识,采用通用技术手段。本发明的发明点在于提供一种增强网卡驱动通用性的数据传输控制方法。
不同***的数据处理速度是不相同的,上层的数据传输速度和网卡能够接收的速率一般是不相同的,典型的设计思想是添加数据存储区,上层负责将数据写入该存储区,网卡驱动读出该数据并按照特定网卡需要的传输速率进行传输,但若上层模块的处理速度改变或者更换网卡以后,该数据存储区的容量也就需要改变,这就大大影响了网卡驱动的通用性。
本发明引入了应答等待机制,当网卡驱动收到上层数据时,给出应答信号,通知上层该数据已经接收完成,可以传输下一个数据,上层可以随时利用该驱动结束对网卡的数据传输过程,只需要向网卡驱动发出数据结束信号即可。这种基于时间的方法大大增强了网卡驱动的通用性。
附图说明
图1是发明方法的流程图;
图2是图1中数据发送流程的流程图;
图3是图1中中断处理流程和数据接收流程的流程图。
具体实施方式
下面结合附图和具体实施例进一步说明本发明方法。
本实施例中选择ASIX公司的AX88796L的10M/100M自适应以太网。该网卡支持ISA,80186,68K和8051四种CPU类型,我们选择ISA总线来说明。网卡要求寄存器的写使能低电平保持时间最小为60ns,高电平保持时间最小为100ns。我们假设***工作频率为50Mhz即周期为20ns。
如图1,网卡驱动方法的具体流程是:
1、根据网卡高低电平保持时间和***工作频率,得出***时钟周期Tp=20ns,低电平保持时间Tl=60ns,则低电平计数寄存器的值设为3(Tl/Tp=60/20);同样,高电平的保持时间为Th=100ns,则高电平计数寄存器的值设为5(Th/Tp=100/20)。具体设计网卡驱动时,这两个寄存器可都设为8比特位宽,尽量满足不同型号网卡,不同***工作频率的要求。网卡驱动模块工作时,先对高电平计数寄存器进行操作,每过一个***时间,该高电平计数寄存器的值减1,当该值减为0时,对低电平计数寄存器进行操作,每过一个***时间,该低电平计数寄存器的值减1,当该值减为0时,完成寄存器的数据配置。
2、对网卡进行初始化,该步骤主要配置AX88796L网卡工作需要的参数,可按照如下流程进行配置:
1)读复位状态寄存器,并且等待近2ms等待复位完成,这里复位状态寄存器只能进行读操作来实现对网卡的复位;
2)通过向命令寄存器CR写入21H来选择第0页,进而可以配置该页的寄存器,包括发送缓冲区的开始指针,停止指针,读指针,写指针,中断使能,中断状态寄存器等;
3)为了下面的配置过程不受外界中断状态的影响,通过对状态寄存器写入00H来实现中断的屏蔽;
4)配置DCR(数据配置寄存器),主要配置DMA的数据传输模式是字节形式还是字的形式,如写入01H选择字传输形式;
5)向接收开始指针写入46H;
6)向接收结束指针写入80H;
7)向读指针写入46H;
8)将中断状态寄存器清0;
9)通过向命令寄存器CR写入61H来选择第1页,进而可以配置该页的寄存器,如物理地址,组播地址等;
10)配置物理地址寄存器PAR0~PAR6,组播地址寄存器MAR0~MAR7,这些值按照具体***要求进行配置,如IP可以配置为192.168.83.200;
11)向写指针写入47H;
12)读测试寄存器的值,确定网卡是否自动选择好网速,如果最低位为0,表明没有配置好,等待,否则,说明已经配置好了,可以继续进行下面的配置过程;
13)配置TPSR寄存器写入恰当的值来确定发送页地址,如40H;
14)打开中断使能,根据需要确保网卡检测相应的中断信号;
15)通过对命令寄存器CR写入22H来启动网卡工作;
上面是网卡初始化的全部流程,在上层需要复位网卡时,可以给网卡一个启动复位的输入信号EnaConfig来启动该初始化流程,当网卡结束初始化流程后,给出一个DONE信号。
3、监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态继续监测。
4、若接收到上层给出的发送使能信号,则进行发送数据操作,采用如下应答机制。
如图2,首先从上层读出需要发送数据包的长度信息,以便驱动检测最终读进来的数据长度是否和开始给出的长度是否一致,同时将该长度信息写入网卡的长度信息寄存器;启动网卡的发送流程并不断监测上层发送来的数据信息,若上层给出一个发送使能信号,驱动模块读取数据端口中的数据并且按照步骤一中所描述的时序将该数据写入到网卡的数据寄存器中,当该数据传输完毕时,给上层一个应答信号,以便上层及时撤消已读数据并写入新数据,不断重复该过程。当收到上层给出的结束信号时,结束对网卡的数据传输操作并检查写入的长度是否和开始的长度信息是否一致,若不一致,将网卡中的数据清除并给上层一个错误信号,若一致则向命令寄存器CR中写入26H启动网卡进行发送。
5、如果接收到网卡的中断信息,则进入中断处理流程。如果网卡的写指针没有发生变化,表示该中断信息不是新的数据帧,则将该中断信息记录下来以备上层用户进行中断查询,同时清除网卡中断。如果写指针发生变化,表示该中断信息是新的数据帧,则进入步骤6。
6、如图3,该中断信息是新的数据帧时,首先读取该数据包的长度信息,并将该长度信息记录到本地寄存器。该长度寄存器的值用于控制接收流程何时结束,驱动模块每读一个数据时,指针加1,当读取的数据个数和该长度寄存器的值相等时,说明该帧数据已经全部读出,停止对网卡的接收操作。其次,每次从网卡中读出一个新数据时,都向上层发送一个使能信号,通知上层数据端口的数据已经更新,可以进行新数据的读取,若上层给出一个应答信号,说明上层已经正确相应,此时,驱动模块撤销对上层的使能信号,并重新读取网卡中的新数据,不断重复该过程,直至将网卡中的新数据读完从而完成整个接收过程。最后,当网卡中的新数据读取完毕时,给上层一个数据包传输完毕的结束信号,结束整个接收流程。
本发明中,网卡驱动的时序可配置性主要是通过步骤1中的高电平计数寄存器和低电平计数寄存器来实现。传输过程中,使能信号的高电平和低电平保持时间是通过时钟计数的方式来完成的。网卡驱动的易移植性是通过在数据传输过程中引入应答等待机制实现的。整个传输过程中,每个数据的传输都是等到对方发出应答信号才撤消数据总线上的数据,这就避免了传统的数据存储区的引入,节省了硬件面积。而且,驱动和网卡之间的数据传输,可以通过前面所说的高电平计数寄存器和低电平计数寄存器来控制,所以并不会带来太大的时间延时。

Claims (1)

1.一种网卡驱动方法,包括网卡初始化流程、数据发送流程、中断处理流程和数据接收流程,其特征在于该网卡驱动方法的具体步骤是:
a.按照网卡的时序要求,利用高电平计数寄存器监测使能信号的高电平保持时间,利用低电平计数寄存器监测使能信号的低电平保持时间,配置好网卡的寄存器,具体是:网卡要求低电平的保持时间为Tl,则低电平计数寄存器的初始值至少设为Tl/Tp,网卡要求高电平的保持时间为Th,则高电平计数寄存器的初始值至少设为Th/Tp,其中Tp为***时钟周期;在配置寄存器时,先对高电平计数寄存器进行操作,每过一个***时间,该高电平计数寄存器的值减1,当该值减为0时,对低电平计数寄存器进行操作,每过一个***时间,该低电平计数寄存器的值减1,当该值减为0时,完成寄存器的数据配置;
b.根据网卡具体工作需要的参数对网卡进行初始化;
c.监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态继续监测;
d.如果接收到上层给出的发送使能信息,则进入数据发送流程,具体是:首先从上层读出需要发送数据包的长度信息,同时将该长度信息写入网卡的长度寄存器;然后不断将上层发送来的数据信息按照具体的网卡时序写入到网卡的数据寄存器中;每写入一个数据,给上层一个应答信号,直至收到上层给出的结束信号;
e.如果接收到网卡给出的中断信息,则进入中断处理流程;如果网卡的写指针没有发生变化,表示该中断信息不是新的数据帧,则将该中断信息记录下来,同时清除网卡中断;如果写指针发生变化,表示该中断信息是新的数据帧,则进入步骤f;
f.该中断信息是新的数据帧时,从网卡的数据长度寄存器中读出该数据帧的长度信息,然后从网卡的数据寄存器中读出数据,并将该数据写入上层,每写入一个数据后,进入等待状态;当上层给出一个应答信号时,停止等待状态,将该数据帧的长度信息减1,不断重复该过程,直到数据帧的长度信息为0,给上层发送一个数据帧传输完毕信号,结束数据接收流程。
CN2008100598575A 2008-02-22 2008-02-22 一种网卡驱动方法 Expired - Fee Related CN101232522B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100598575A CN101232522B (zh) 2008-02-22 2008-02-22 一种网卡驱动方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100598575A CN101232522B (zh) 2008-02-22 2008-02-22 一种网卡驱动方法

Publications (2)

Publication Number Publication Date
CN101232522A true CN101232522A (zh) 2008-07-30
CN101232522B CN101232522B (zh) 2010-06-16

Family

ID=39898694

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100598575A Expired - Fee Related CN101232522B (zh) 2008-02-22 2008-02-22 一种网卡驱动方法

Country Status (1)

Country Link
CN (1) CN101232522B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104079432A (zh) * 2014-06-20 2014-10-01 珠海市君天电子科技有限公司 网络设备异常的处理方法和装置
CN104519599A (zh) * 2013-09-30 2015-04-15 宁夏先锋软件有限公司 一种可显示时间和发声的usb无线网卡
CN104965696A (zh) * 2014-03-28 2015-10-07 帝斯贝思数字信号处理和控制工程有限公司 用于影响控制程序的方法和建模***
CN108712290A (zh) * 2018-05-25 2018-10-26 北京无线电测量研究所 网卡驱动方法、装置及存储介质
CN109714600A (zh) * 2019-01-12 2019-05-03 陈波 兼容性大数据采集***
CN110413328A (zh) * 2019-07-24 2019-11-05 苏州浪潮智能科技有限公司 一种网卡端口的pxe功能使能方法、装置及相关设备
CN113360191A (zh) * 2020-03-03 2021-09-07 杭州海康威视数字技术股份有限公司 网络交换芯片的驱动装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1173261C (zh) * 2001-10-08 2004-10-27 联想(北京)有限公司 用户模式下操作网卡核心驱动程序的方法
CN1661998A (zh) * 2004-02-26 2005-08-31 阳庆电子股份有限公司 双模无线网卡联机参数设定方法
CN1992732A (zh) * 2005-12-30 2007-07-04 英业达股份有限公司 网卡自动配置***及方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104519599A (zh) * 2013-09-30 2015-04-15 宁夏先锋软件有限公司 一种可显示时间和发声的usb无线网卡
CN104965696A (zh) * 2014-03-28 2015-10-07 帝斯贝思数字信号处理和控制工程有限公司 用于影响控制程序的方法和建模***
CN104079432A (zh) * 2014-06-20 2014-10-01 珠海市君天电子科技有限公司 网络设备异常的处理方法和装置
CN108712290A (zh) * 2018-05-25 2018-10-26 北京无线电测量研究所 网卡驱动方法、装置及存储介质
CN109714600A (zh) * 2019-01-12 2019-05-03 陈波 兼容性大数据采集***
CN110413328A (zh) * 2019-07-24 2019-11-05 苏州浪潮智能科技有限公司 一种网卡端口的pxe功能使能方法、装置及相关设备
CN110413328B (zh) * 2019-07-24 2022-05-24 苏州浪潮智能科技有限公司 一种网卡端口的pxe功能使能方法、装置及相关设备
CN113360191A (zh) * 2020-03-03 2021-09-07 杭州海康威视数字技术股份有限公司 网络交换芯片的驱动装置

Also Published As

Publication number Publication date
CN101232522B (zh) 2010-06-16

Similar Documents

Publication Publication Date Title
CN101232522B (zh) 一种网卡驱动方法
CN106951388B (zh) 一种基于PCIe的DMA数据传输方法及***
CN102023954B (zh) 具有多路i2c总线的装置、处理器、***主板及工控计算机
US7624223B2 (en) Apparatus and methods for multiple unidirectional virtual connections among SAS devices
CN102696021B (zh) 接口时钟管理
JP2757055B2 (ja) ディジタル・コンピュータのデータ転送方法
JPH02227765A (ja) デジタル・コンピユータのデータ転送装置
KR100692529B1 (ko) 최적화된 딜레이 타임 결정 방법, 장치 및 최적화된 딜레이타임 결정 프로그램이 기록된 컴퓨터로 판독 가능한기록매체
WO2008083541A1 (fr) Appareil et procédé de réalisation de communication entre une carte de service et une carte de contrôle principale
CN105677598B (zh) 基于i2c接口快速读取多个mems传感器数据的模块和方法
EP2499574A1 (en) Apparatus and method for polling addresses of one or more slave devices in a communications system
TW202018494A (zh) 具有協定仿真的裝置編程系統
US20200201804A1 (en) I3c device timing adjustment to accelerate in-band interrupts
CN115729870A (zh) 一种基于fpga的高效pcie dma数据传输方法
CN102567272A (zh) 一种提高spi接口电路工作频率的方法
CN101122894A (zh) 一种异步串行通讯控制器件
US6889265B2 (en) Apparatus and method to allow and synchronize schedule changes in a USB enhanced host controller
CN109522251A (zh) 一种基于PXIe总线的高速同步串口卡及其工作方法
CN101465838B (zh) 一种实现自适应速率模拟i2c总线通信的方法
CN111026691B (zh) 基于apb总线的owi通讯设备
US20210173808A1 (en) Early parity error detection on an i3c bus
US20070131767A1 (en) System and method for media card communication
CN107870885A (zh) 通信***、装置及方法
US20220358079A1 (en) I2c bus architecture using shared clock and dedicated data lines
US10572439B1 (en) I3C read from long latency devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100616

Termination date: 20130222