[发明专利]一种避免先入先出队列溢出的方法及设备有效
申请号: | 201110205098.0 | 申请日: | 2011-07-21 |
公开(公告)号: | CN102209042A | 公开(公告)日: | 2011-10-05 |
发明(设计)人: | 黄伟 | 申请(专利权)人: | 迈普通信技术股份有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 牛峥;王丽琴 |
地址: | 610041 四川省*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 避免 先入先出 队列 溢出 方法 设备 | ||
1.一种避免先入先出队列FIFO溢出的方法,其特征在于,包括如下步骤:
A、在设备内存中创建第一缓冲区描述符BD环和第二BD环;
B、硬件收发器将FIFO中的数据通过第一写指针写入第一BD环的空闲BD中,完成后硬件收发器产生接收中断;
C、驱动软件检测到接收中断后,利用第一读指针从第一BD环中读取数据;驱动软件利用第二写指针将所读取的数据写入第二BD环中;驱动软件利用第二读指针从第二BD环中读取数据并进行处理。
2.根据权利要求1所述的方法,其特征在于,所述第一BD环和第二BD环中的BD数目均为m,m≥n,n为硬件收发器产生一个接收中断对应的最大报文数。
3.根据权利要求1所述的方法,其特征在于,对于第一BD环和第二BD环,同一个BD环中的各个BD在内存中连续相邻,BD的状态字段中包含一个环回标志比特。
4.根据权利要求1所述的方法,其特征在于,对于第一BD环和第二BD环,同一个BD环中的各个BD在内存中不连续相邻,BD中有一个特殊字段用于存放下一个BD的内存起始地址,最后一个BD的该字段存放第一个BD的内存起始地址。
5.根据权利要求1-4任一项所述的方法,其特征在于,步骤B包括:
B1、硬件收发器FIFO达到高水位后,判断FIFO中是否有数据需要转移,若是执行步骤B2;否则转至步骤B6;
B2、判断第一写指针指向的第一BD环中的BD是否为空闲,若是,执行步骤B3,否则返回步骤B2;
B3、从W1指向的BD中取出缓冲区地址,将数据通过直接内存访问DMA的方式写入到缓冲区中;
B4、判断第一BD环是否完成一个报文的接收,若是,继续执行步骤B5,否则返回步骤B3;
B5、设置第一写指针指向的BD的空闲标志为有数据,然后将第一写指针指向第一BD环的下一个BD;
B6、硬件收发器判断是否满足产生接收中断的条件,若是则产生接收中断,完成步骤B;否则返回步骤B1。
6.根据权利要求1-4任一项所述的方法,其特征在于,步骤C包括:
C1、驱动软件在中断处理程序中检查第一读指针指向的第一BD环中的BD是否有数据,若是执行步骤C2,否则转至步骤C6;
C2、检查第二写指针指向的第二BD环的BD是否空闲,若是,执行步骤C3,否则转至步骤C5;
C3、将第二写指针指向BD的缓冲指针与第一读指针指向的BD的缓冲指针交换;
C4、设置第二写指针指向的BD的空闲标志为有数据,使第二写指针指向第二BD环的下一个BD;
C5、设置第一读指针指向的BD的空闲标志为空闲,使第一读指针指向第一BD环的下一个BD,然后转至步骤C1;
C6、在接收任务中检查第二读指针指向的第二BD环的BD是否有数据,如果没有数据,完成数据接收处理;如果有数据,转到步骤C7;
C7、从第二读指针指向的第二BD环的BD的缓冲地址中取出数据进行处理,完成后执行步骤C8;
C8、设置第二读指针指向的第二BD环的BD的空闲标志为空闲,使第二读指针指向第二BD环的下一个BD,然后转至步骤C6。
7.一种设备,包括硬件收发器模块,缓冲区描述符BD环模块和驱动软件模块,其特征在于,所述BD环模块中创建有第一缓冲区描述符BD环和第二BD环,其中:
所述硬件收发器模块,用于将先进先出FIFO单元中的数据通过第一写指针写入第一BD环的空闲BD中,完成后产生接收中断;
所述驱动软件模块,用于在检测到所述硬件收发器模块产生的接收中断后,利用第一读指针从第一BD环中读取数据;利用第二写指针将所读取的数据写入第二BD环中;并利用第二读指针从第二BD环中读取数据并进行处理。
8.根据权利要求7所述的设备,其特征在于,所述第一BD环和第二BD环中的BD数目均为m,m≥n,n为硬件收发器产生一个接收中断对应的最大报文数。
9.根据权利要求7所述的设备,其特征在于,对于第一BD环和第二BD环,同一个BD环中的各个BD在内存中连续相邻,BD的状态字段中包含一个环回标志比特。
10.根据权利要求7所述的设备,其特征在于,对于第一BD环和第二BD环,同一个BD环中的各个BD在内存中不连续相邻,BD中有一个特殊字段用于存放下一个BD的内存起始地址,最后一个BD的该字段存放第一个BD的内存起始地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于迈普通信技术股份有限公司,未经迈普通信技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110205098.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种制取气体的发生器
- 下一篇:具有夹层结构的厚氮化物半导体结构及其制作方法