一种网卡驱动方法

文档序号:6460412阅读:191来源:国知局
专利名称:一种网卡驱动方法
技术领域
本发明属于集成电路技术领域,具体涉及一种网卡驱动方法。
技术背景在网络技术高度发达的信息时代,作为OSI(开放系统互联基本参考模型)数据链路层的网卡自然起到了不可忽视的重要作用。然而,不同公 司的网卡接口信号不尽相同,不同工艺、不同型号的网卡时序要求也不一 样,这对基于硬件实现的网卡驱动的灵活性带来很大的负面影响。传统的网卡驱动是基于c或其他语言设计的软件程序,但若想把自主设计的芯片和网卡进行通信,必须用硬件电路实现对网卡的配置和控制。 一般的网卡驱动都是针对具体的应用和特定型号的网卡,基本流程包括.-网卡初始化,中断处理流程控制,发送流程控制,接收流程控制这几个方 面,而且接口信号不易与和芯片中不同的电路模块进行通信,这无疑增加 了接口信号的复杂性,导致不同模块之间通信效率的降低。 发明内容本发明的目的是针对现有技术的不足,提供一种具有易移植、可配 置、具有开放式接口等特点的网卡驱动方法。本发明的网卡驱动方法包括网卡初始化流程、数据发送流程、中断处 理流程和数据接收流程。网卡初始化流程主要用于对网卡中的相应寄存器进行配置,这些寄存 器主要包括网卡工作模式寄存器,读写指针寄存器,物理地址寄存器,组 播地址寄存器,中断屏蔽寄存器,数据格式配置寄存器,发送配置寄存 器,接收配置寄存器。数据发送流程完成数据在上层和网卡之间的传递,即从上层读取数据 包,然后传输给网卡。数据接收流程中数据的传输方向是自底向上的,即从网卡中读取数据包,然后传输给上层。当网卡驱动检测到网卡中有新的数据包时,读取网 卡中的数据,并向上层写入开始信号同时传输数据,若收到上层给出的应 答信号,则表明上层己经成功的接受了该数据,此时可以撤销该数据端口 的数据。重复该过程,直到将网卡中新的数据包读取完毕为止。网卡中断处理流程主要处理由网卡送来的中断信号,并按照信号类型 进入相应的处理流程。若网卡驱动接收到数据接收中断时,按照上述的数 据接收流程进行处理,其它中断类型,如发送完成中断,发送错误中断, 接收错误中断等,记录下该信息供上层査询以决定相应的操作。本发明的网卡驱动方法的具体步骤是1、 按照网卡的时序要求,利用高电平计数寄存器监测读写使能信号 的高电平保持时间,利用低电平计数寄存器监测读写使能信号的低电平保 持时间,配置好网卡的寄存器。具体是网卡要求低电平的保持时间为 Tl,则低电平计数寄存器的初始值至少设为Tl/Tp,网卡要求高电平的保持时间为Th,则高电平计数寄存器的初始值至少设为Th/Tp,其中Tp为系 统时钟周期;在配置寄存器时,先对高电平计数寄存器进行操作,每过一 个系统时间,该高电平计数寄存器的值减1,当该值减为0时,对低电平 计数寄存器进行操作,每过一个系统时间,该低电平计数寄存器的值减 1,当该值减为0时,完成寄存器的数据配置。2、 根据网卡具体工作需要的参数对网卡进行初始化。3、 监测是否有网卡给出的中断信息和上层给出的发送使能信息,若 没有,则处在等待状态继续监测。4、 如果接收到上层给出的发送使能信息,则进入数据发送流程。具 体是首先从上层读出需要发送数据包的长度信息,以便驱动检测最终读 进来的数据长度是否和开始给出的长度一致,同时将该长度信息写入网卡 的长度寄存器以便网卡进行读操作;然后不断将上层发送来的数据信息按 照具体的网卡时序写入到网卡的数据寄存器中;每写入一个数据,给上层 一个应答信号,以便上层及时撤销已读数据并写入新数据,直至收到上层给出的结束信号。5、 如果接收到网卡给出的中断信息,则进入中断处理流程。如果网 卡的写指针没有发生变化,表示该中断信息不是新的数据帧,则将该中断 信息记录下来以备上层用户进行中断查询,同时清除网卡中断。如果写指 针发生变化,表示该中断信息是新的数据帧,则进入步骤6。6、 该中断信息是新的数据帧时,从网卡的数据长度寄存器中读出该 数据帧的长度信息,然后从网卡的数据寄存器中读出数据,并将该数据写入上层,每写入一个数据后,进入等待状态;当上层给出一个应答信号时,停止等待状态,将该数据帧的长度信息减1,不断重复该过程,直到数据帧的长度信息为0,表明整个数据帧读取完毕,给上层发送一个数据 帧传输完毕信号,结束数据接收流程。本发明的网卡驱动方法有如下特征当外部有发送请求信号时,网卡发送程序进行相应参数的配置,通过 数据总线端口读出长度信息并且给出应答信号。随后上层若想传送数据给 网卡,只要在数据总线端口中写入相应的数据并且给出发送使能信号,该 使能信号必须等到网卡发送程序给出相应的应答信号才能撤消,这样整个 过程就完成了一个数据的传输,上层若想结束网卡的发送过程,必须给出 相应的结束信号如数据空信号,则网卡驱动自动执行对网卡的发送过程配 置,从而完成了外部对网卡发送流程的控制。当网卡发出中断请求时,网卡中断处理程序自动对中断类型进行检测 并判断下一步的处理步骤。若不是接收中断,则记录相应的中断信息以备 上层查询,同时清除网卡的中断寄存器。若有数据包需要传送给上层,则 给出写数据使能信号,同时在数据端口准备好新的一帧数据,当上层给出 数据接收完毕的应答信号时,网卡接受流程撤消使能信号并准备传输下一 帧数据。当全部完成对网卡缓冲区中数据的接收时,网卡驱动给出相应的 结束信号并对网卡进行相应的参数配置。对于要使用网卡作为通信链路的芯片或电路来说,网卡给出的控制,数据和地址线,相对于该芯片来说是异步信号。不同的网卡读写时序要求 是不同的,本发明中的网卡驱动方法提供了可配置的读写周期和数据建立 及保持时间,可以实现对网卡与芯片之间数据交换速率的自由控制。该功 能通过在网卡驱动中添加两个控制寄存器来实现, 一个寄存器为高电平计 数寄存器,用于记录送给网卡的读使能和写使能信号的高电平保持时间, 另一个寄存器为低电平计数寄存器,用于记录送给网卡的读使能和写使能 信号的低电平保持时间。本发明中寄存器具体参数的配置以及寄存器的读写操作等为基本技术 常识,采用通用技术手段。本发明的发明点在于提供一种增强网卡驱动通 用性的数据传输控制方法。不同系统的数据处理速度是不相同的,上层的数据传输速度和网卡能 够接收的速率一般是不相同的,典型的设计思想是添加数据存储区,上层 负责将数据写入该存储区,网卡驱动读出该数据并按照特定网卡需要的传 输速率进行传输,但若上层模块的处理速度改变或者更换网卡以后,该数 据存储区的容量也就需要改变,这就大大影响了网卡驱动的通用性。本发明引入了应答等待机制,当网卡驱动收到上层数据时,给出应答 信号,通知上层该数据已经接收完成,可以传输下一个数据,上层可以随 时利用该驱动结束对网卡的数据传输过程,只需要向网卡驱动发出数据结 束信号即可。这种基于时间的方法大大增强了网卡驱动的通用性。


图l是发明方法的流程图;图2是图1中数据发送流程的流程图;图3是图1中中断处理流程和数据接收流程的流程图。
具体实施方式
下面结合附图和具体实施例进一歩说明本发明方法。本实施例中选择ASIX公司的AX88796L的10M/100M自适应以太网。 该网卡支持ISA, 80186, 68K和8051四种CPU类型,我们选择ISA总线来说明。网卡要求寄存器的写使能低电平保持时间最小为60ns,高电平 保持时间最小为100ns。我们假设系统工作频率为50Mhz即周期为20ns。 如图l,网卡驱动方法的具体流程是1、 根据网卡高低电平保持时间和系统工作频率,得出系统时钟周期 Tp=20ns,低电平保持时间Tl=60ns,则低电平计数寄存器的值设为3(Tl/Tp=60/20);同样,高电平的保持时间为Th=100ns,则高电平计数 寄存器的值设为5 (Th/Tp=100/20)。具体设计网卡驱动时,这两个寄存 器可都设为8比特位宽,尽量满足不同型号网卡,不同系统工作频率的要 求。网卡驱动模块工作时,先对高电平计数寄存器进行操作,每过一个系 统时间,该高电平计数寄存器的值减1,当该值减为0时,对低电平计数 寄存器进行操作,每过一个系统时间,该低电平计数寄存器的值减1,当 该值减为O时,完成寄存器的数据配置。2、 对网卡进行初始化,该步骤主要配置AX88796L网卡工作需要的参 数,可按照如下流程进行配置1) 读复位状态寄存器,并且等待近2ms等待复位完成,这里复位状 态寄存器只能进行读操作来实现对网卡的复位;2) 通过向命令寄存器CR写入21H来选择第0页,进而可以配置该页的寄存器,包括发送缓冲区的开始指针,停止指针,读指针,写指针,中 断使能,中断状态寄存器等;3) 为了下面的配置过程不受外界中断状态的影响,通过对状态寄存 器写入OOH来实现中断的屏蔽;4) 配置DCR(数据配置寄存器),主要配置DMA的数据传输模式是字节 形式还是字的形式,如写入01H选择字传输形式;5) 向接收开始指针写入46H;6) 向接收结束指针写入80H;7) 向读指针写入46H;8) 将中断状态寄存器清O;9) 通过向命令寄存器CR写入61H来选择第1页,进而可以配置该页 的寄存器,如物理地址,组播地址等;10) 配置物理地址寄存器PAR0 PAR6,组播地址寄存器MAR(TMAR7,这些 值按照具体系统要求进行配置,如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中的高电平计 数寄存器和低电平计数寄存器来实现。传输过程中,使能信号的高电平和 低电平保持时间是通过时钟计数的方式来完成的。网卡驱动的易移植性是 通过在数据传输过程中引入应答等待机制实现的。整个传输过程中,每个 数据的传输都是等到对方发出应答信号才撤消数据总线上的数据,这就避 免了传统的数据存储区的引入,节省了硬件面积。而且,驱动和网卡之间 的数据传输,可以通过前面所说的高电平计数寄存器和低电平计数寄存器 来控制,所以并不会带来太大的时间延时。
权利要求
1、一种网卡驱动方法,包括网卡初始化流程、数据发送流程、中断处理流程和数据接收流程,其特征在于该网卡驱动方法的具体步骤是a.按照网卡的时序要求,利用高电平计数寄存器监测使能信号的高电平保持时间,利用低电平计数寄存器监测使能信号的低电平保持时间,配置好网卡的寄存器,具体是网卡要求低电平的保持时间为Tl,则低电平计数寄存器的初始值至少设为Tl/Tp,网卡要求高电平的保持时间为Th,则高电平计数寄存器的初始值至少设为Th/Tp,其中Tp为系统时钟周期;在配置寄存器时,先对高电平计数寄存器进行操作,每过一个系统时间,该高电平计数寄存器的值减1,当该值减为0时,对低电平计数寄存器进行操作,每过一个系统时间,该低电平计数寄存器的值减1,当该值减为0时,完成寄存器的数据配置;b.根据网卡具体工作需要的参数对网卡进行初始化;c.监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态继续监测;d.如果接收到上层给出的发送使能信息,则进入数据发送流程,具体是首先从上层读出需要发送数据包的长度信息,同时将该长度信息写入网卡的长度寄存器;然后不断将上层发送来的数据信息按照具体的网卡时序写入到网卡的数据寄存器中;每写入一个数据,给上层一个应答信号,直至收到上层给出的结束信号;e.如果接收到网卡给出的中断信息,则进入中断处理流程;如果网卡的写指针没有发生变化,表示该中断信息不是新的数据帧,则将该中断信息记录下来,同时清除网卡中断;如果写指针发生变化,表示该中断信息是新的数据帧,则进入步骤f;f.该中断信息是新的数据帧时,从网卡的数据长度寄存器中读出该数据帧的长度信息,然后从网卡的数据寄存器中读出数据,并将该数据写入上层,每写入一个数据后,进入等待状态;当上层给出一个应答信号时,停止等待状态,将该数据帧的长度信息减1,不断重复该过程,直到数据帧的长度信息为0,给上层发送一个数据帧传输完毕信号,结束数据接收流程。
全文摘要
本发明涉及一种网卡驱动方法。现有技术由于灵活性不够,导致不同模块之间通信效率的降低。本发明方法是按照网卡的时序要求,配置好网卡的寄存器;根据网卡具体工作需要的参数对网卡进行初始化;监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态;如果接收到上层给出的发送使能信息,则进入数据发送流程;如果接收到网卡给出的中断信息,则进入中断处理流程;如果网卡的写指针没有发生变化,进入数据接收流程。本发明引入了应答等待机制,上层可以随时利用该驱动结束对网卡的数据传输过程,只需要向网卡驱动发出数据结束信号即可。这种基于时间的方法大大增强了网卡驱动的通用性。
文档编号G06F9/445GK101232522SQ20081005985
公开日2008年7月30日 申请日期2008年2月22日 优先权日2008年2月22日
发明者廉玉平, 艳 张, 陈金龙, 霍明旭, 雁 韩 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1