发明名称 一种网卡驱动方法
摘要 本发明涉及一种网卡驱动方法。现有技术由于灵活性不够,导致不同模块之间通信效率的降低。本发明方法是:按照网卡的时序要求,配置好网卡的寄存器;根据网卡具体工作需要的参数对网卡进行初始化;监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态;如果接收到上层给出的发送使能信息,则进入数据发送流程;如果接收到网卡给出的中断信息,则进入中断处理流程;如果网卡的写指针没有发生变化,进入数据接收流程。本发明引入了应答等待机制,上层可以随时利用该驱动结束对网卡的数据传输过程,只需要向网卡驱动发出数据结束信号即可。这种基于时间的方法大大增强了网卡驱动的通用性。
申请公布号 CN101232522A 申请公布日期 2008.07.30
申请号 CN200810059857.5 申请日期 2008.02.22
申请人 浙江大学 发明人 廉玉平;韩雁;霍明旭;陈金龙;张艳
分类号 H04L29/10(2006.01);G06F9/445(2006.01) 主分类号 H04L29/10(2006.01)
代理机构 杭州求是专利事务所有限公司 代理人 张法高
主权项 1.一种网卡驱动方法,包括网卡初始化流程、数据发送流程、中断处理流程和数据接收流程,其特征在于该网卡驱动方法的具体步骤是:a.按照网卡的时序要求,利用高电平计数寄存器监测使能信号的高电平保持时间,利用低电平计数寄存器监测使能信号的低电平保持时间,配置好网卡的寄存器,具体是:网卡要求低电平的保持时间为Tl,则低电平计数寄存器的初始值至少设为Tl/Tp,网卡要求高电平的保持时间为Th,则高电平计数寄存器的初始值至少设为Th/Tp,其中Tp为系统时钟周期;在配置寄存器时,先对高电平计数寄存器进行操作,每过一个系统时间,该高电平计数寄存器的值减1,当该值减为0时,对低电平计数寄存器进行操作,每过一个系统时间,该低电平计数寄存器的值减1,当该值减为0时,完成寄存器的数据配置;b.根据网卡具体工作需要的参数对网卡进行初始化;c.监测是否有网卡给出的中断信息和上层给出的发送使能信息,若没有,则处在等待状态继续监测;d.如果接收到上层给出的发送使能信息,则进入数据发送流程,具体是:首先从上层读出需要发送数据包的长度信息,同时将该长度信息写入网卡的长度寄存器;然后不断将上层发送来的数据信息按照具体的网卡时序写入到网卡的数据寄存器中;每写入一个数据,给上层一个应答信号,直至收到上层给出的结束信号;e.如果接收到网卡给出的中断信息,则进入中断处理流程;如果网卡的写指针没有发生变化,表示该中断信息不是新的数据帧,则将该中断信息记录下来,同时清除网卡中断;如果写指针发生变化,表示该中断信息是新的数据帧,则进入步骤f;f.该中断信息是新的数据帧时,从网卡的数据长度寄存器中读出该数据帧的长度信息,然后从网卡的数据寄存器中读出数据,并将该数据写入上层,每写入一个数据后,进入等待状态;当上层给出一个应答信号时,停止等待状态,将该数据帧的长度信息减1,不断重复该过程,直到数据帧的长度信息为0,给上层发送一个数据帧传输完毕信号,结束数据接收流程。
地址 310027浙江省杭州市西湖区浙大路38号