嵌入式系统环形缓冲区快速读写方法的设计与实现.pdf
《嵌入式系统环形缓冲区快速读写方法的设计与实现.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统环形缓冲区快速读写方法的设计与实现.pdf(5页珍藏版)》请在咨信网上搜索。
1、第2 3 卷,第1期2024年1月北京工业职业技术学院学报JOURNAL OF BEIJING POLYTECHNIC COLLEGENo.1 Vol.23Jan.2024嵌入式系统环形缓冲区快速读写方法的设计与实现樊利军1(1.北京工业职业技术学院信息工程学院,北京10 0 0 42;2.北京市煤炭矿用机电设备技术开发公司,北京10 0 0 42;3.北京工业职业技术学院基础教育学院,北京10 0 0 42)摘要:针对常用环形缓冲区读写数据运行效率低的弊端,提出了一种快速读写环形缓冲区数据的方法。在读写缓冲区数据时,通过位与逻辑运算修改读写指针值,利用读写指针的差值作为缓冲区有效数据个数实现
2、环形缓冲区状态判断。通过仿真测试实验和测试数据分析,这种快速读写环形缓冲区的方法可以显著提高系统运行效率。关键词:环形缓冲区;嵌入式系统;环形缓冲区状态;位与逻辑运算中图分类号:TP319D0I:10.3969/j.issn.1671-6558.2024.01.002Design and Implementation of Fast Reading and Writing Method田柏林?文献标识码A文章编号:16 7 1-6 558(2 0 2 4)0 1-0 6-0 5for Ring Buffer in Embedded Systems彭淑梅3FAN LijunTIAN Bolin?
3、PENG Shumei.3(1.School of Information Engineering,Beijing Polytechnic College,Beijing 100042,China;2.Beijing Coal Mining Electric Equipment and Technique Development Co.,Ltd.,Beijing 100042,China;3.School of Fundamental Education,Beijing Polytechnic College,Beijing 100042,China)Abstract:In view of t
4、he low efficiency of reading and writing data in the common ring buffer,a fast method forreading and writing ring buffer data is proposed.When reading and writing buffer data,modify the read and writepointer value through bit and logic operations,and use the difference between the read and write poi
5、nters as thenumber of effective data in the buffer to determine the status of the circular buffer.Through simulation testingexperiments and data analysis,this fast method of reading and writing ring buffers can significantly improve theefficiency of system operation.Key words:ring buffer;embedded sy
6、stem;ring buffer state;bit and logic operation0引言环形缓冲区在嵌人式系统软件设计中是一种很重要的数据结构,广泛应用在数据采集、数字通信中数据产生率和数据处理率存在差异的场合。在实时收稿日期:2 0 2 3-0 7-0 8基金项目:2 0 19 年北京工业职业技术学院应用性招标课题(BGY2019KY-05ZY);2 0 2 3 年北京工业职业技术学院科研课题(BGY2023KY-53)。作者简介:樊利军(19 7 2 一),男,陕西韩城人,教授,工程硕士,研究方向为嵌人式技术应用。性要求较高的嵌人式应用场合,由于内存资源非常有限,如果系统在很短的
7、时间内获取大量数据且不允许数据丢失,采用环形缓冲区是一种理想的方法 。目前常用的环形缓冲区采用链表形式和数组形环形缓冲区第1期式实现。链表形式采用动态内存管理方式,在读写数据时频繁进行内存申请和释放,形成内存碎片,内存使用效率低;数组形式采用静态内存管理方式,在读写数据以及判断缓冲区状态时需要进行取模操作,存在代码运行效率低的缺点。丁远 2 研究了单链表环形数据结构,该结构既具有链表存储动态申请内存实现缓冲区动态扩展的优点,又避免了频繁申请释放内存带来的内存碎片。李为民 3 提出通过设置数组形式缓冲区大小为2 的幂,可以快速进行缓冲区读写操作。杨凯乔 4 提出利用数组形式缓冲区读写指针之间的关
8、系,借助读写指针的差值作为缓冲区有效数据个数实现缓冲区状态判断,提高了内存利用率和运行效率。本文提出一种基于数组形式的环形缓冲区数据快速读写方法,通过位与逻辑运算修改读写指针值,利用读写指针的差值作为缓冲区有效数据个数来实现环形缓冲区状态判断。此方法突出的优点是可以提高系统读写缓冲区代码的运行效率。1常用环形缓冲区实现方法环形缓冲区是一种首尾相连、先人先出(FirstInFirstOut,FIFO)的数据队列结构,数据组织简单,判断缓冲区状态和读写数据操作简单 5。常用的数组形式环形缓冲区示意图如图1所示,先利用数组定义在内存中开辟所需的空间,再定义一个队头开始判断是否空?*tail=*hea
9、d且Lag=0?否读取缓冲区pop_data=ring*head修改队头指针*head=(*head+1)%N判断是否空?*tail=*head?计算数据长度size=(*tail-*head+N)%N返回成功(a)读数据流程图樊利军,等:嵌入式系统环形缓冲区快速读写方法的设计与实现区写数据的第一个数据地址。26354tail图1数组形式环形缓冲区示意图常用环形缓冲区设置缓冲区的大小为N,缓冲区存放数组ringN,缓冲区状态标记tag,缓冲区数据长度存放在变量size。缓冲区初始化时队头指针变量、队尾指针变量都指向缓冲区首地址。读写数据开始,先判断缓冲区的状态,如果缓冲区满或空则返回相应状态;
10、读写操作后,队头、队尾指针值加1并对N取模修改指针值,然后再判断缓冲区状态,缓冲区满 tag=1,缓冲区空 tag=0;通过队头、队尾指针差值加上N,再对N取模计算缓冲区数据长度。常用环形缓冲区的读写数据流程如图2 所示。开始是判断是否满?*tail=*head且tag=1?返回空否写入缓冲区ringl*tail=push_data修改队尾指针*tail=(*tail+1)%N是判断是否满?*tail=*head?标记位清零tag=0否计算数据长度size=(*tail-*head+N)%N返回成功(b)写数据流程图图2 常用环形缓冲区读写数据流程图7指针变量(head)指向缓冲区读取数据的第
11、一个数据地址,最后定义一个队尾指针变量(tail)指向缓冲head是+返回失败是设置满标记位tag=182快速读写环形缓冲区的设计原理快速读写环形缓冲区设计时,设置缓冲区大小为M,其中M=2且2 -1 N2。修改队头、队尾指针时,通过指针值和M-1进行位与逻辑运算实现,以队头、队尾指针差值作为缓冲区数据长度。把常用环形缓冲区实现过程的取模运算,用位与逻辑运算和差值计算替代,可以提高程序运行效率。2.1修改队头、队尾指针分析以M=16=24为例,即M-1=15,设队头或队尾指针值为x,以下分三种情况,通过位与逻辑运算和直接取模运算结果对比,验证位与逻辑运算修改缓冲区队头、队尾指针在环形缓冲区内存
12、映射的正确性。(1)当x M时,x=2+2+.+2,n4的部分,采用位与逻辑运算后的值为0;n4部分运算结果同(1),即x&(M-1)=x%M。假设=3 9,则=1+2+4+3 2=2+2+2+25,x&(M-1)=39&15=7,x%M=39%16=7,即x&(M-1)=x%M。由上可知,当缓冲区大小M为2 的幂时,无论值为多少,x&(M-1)=x%M 恒成立,因此快速读写环开始判断是否空?size=0tag=0?读取缓冲区pop_data=ring*head修改队头指针*head=(*head+1)&(M-1)判断是否空?*tail=*head?否计算数据长度size=*tail-*hea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 环形 缓冲区 快速 读写 方法 设计 实现
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。