[发明专利]用于嵌入式系统基于同步机制下的环形数据缓冲实现方法有效
| 申请号: | 201710620299.4 | 申请日: | 2017-07-26 |
| 公开(公告)号: | CN107368374B | 公开(公告)日: | 2019-08-06 |
| 发明(设计)人: | 赖志威;曾宪玮;解亚琦 | 申请(专利权)人: | 广州路派电子科技有限公司 |
| 主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/54;G06F11/07 |
| 代理公司: | 北京文苑专利代理有限公司 11516 | 代理人: | 王炜 |
| 地址: | 510663 广东省广州市萝岗区科学大道中*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 嵌入式 系统 基于 同步 机制 环形 数据 缓冲 实现 方法 | ||
本发明涉及一种用于嵌入式系统基于同步机制下的环形数据缓冲实现方法,包括:在工作状态一写入数据就切换到工作状态二;在工作状态二继续写入数据时,若缓冲区被新增加的数据写满,就进入工作状态四;在工作状态二下,读取缓冲区的数据,若读取的数据大小小于缓冲区缓冲好的数据大小,就进入工作状态三,否则进入工作状态四;在工作状态三,读取数据时,当缓冲区没有数据可读时,就进入工作状态一,向缓冲区写入数据时,若缓冲区被写满数据,则进入工作状态四。本发明使用嵌入式操作系统自带的信号量同步机制,原有的环形缓冲区更加强壮,采用可配置和可移植的环形缓冲区,适用于不同的软件系统和不同的硬件体系,能很好地满足实际应用的需要。
技术领域
本发明涉及一种用于嵌入式系统基于同步机制下的环形数据缓冲实现方法。
背景技术
嵌入式通信程序中,经常有这样一个情景:需要程序一边从通讯接口接收数据,一边解析接收的数据。具体情景为:嵌入式系统在采集并解析汽车数据的系统应用中,系统必须采集数据的同时根据这些实时数据以一定的形式向用户表达出来,或者根据数据做出一些逻辑运算等一系列可能比较耗时的工作。这样的情景一般存在以下约束:
1)由于实时性要求,必须边读取数据,边对数据进行解析,不能等数据全部接收完整后才能开始解析,同时也不能等解析完一帧数据后才开始接收下一帧数据;
2)数据的解析需要兼容性能和内存空间的利用效率,特别是应用在内存等资源比较有限的嵌入式系统环境中,所以要做到减少内存之间的直接拷贝,分配适当大小的缓存空间。
以上背景应用场景通常会使用环形缓冲方法来实现。
一般环形缓冲区的实现方法为:环形缓冲区通常有一个读指针和一个写指针,读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区,通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。
图1、图2和图3是一个环形缓冲区的运行示意图。图1是环形缓冲区的初始状态,可以看到读指针和写指针都指向第一个缓冲区处;图2是向环形缓冲区中添加了一个数据后的情况,可以看到写指针已经移动到数据块2的位置,而读指针没有移动;图3是环形缓冲区进行了读取和添加后的状态,可以看到环形缓冲区中已经添加了两个数据,已经读取了一个数据。
以上是现有技术的环形缓冲的基本实现原理和模型,在实际应用中存在诸多的问题:1)读指针和写指针会出现重叠的情况,这可能导致读取的数据不准确;2)当外部模块从缓存中读取数据的速度跟不上向该缓存写数据速度时,会出现读取的数据帧的前后不连续问题,例如引用上面图3中的环形缓冲区,假设读指针保持在2号位置,把这一刻时间定义为T0,而写指针不断向前递增,当写指针已经从6号位置跳到1号时,把这一刻时间定义为T1,然后继续递增到4号位置,这时T1时刻3号位置的数据已经不是T0时刻的数据;这种情况在对于要求保持采集数据帧连续性要求较高的场合下的应用是不允许出现的;例如,在两个相对独立的模块或系统之间的通讯的应用中,为了确保数据的准确性和安全性,通常会把通讯数据定义为“帧头+数据+校验和”的格式,而且这里的“帧头”通常会分拆到两个或多个联系的数据上发送到另外一个系统,而“校验和”则要根据一帧数据来计算,数据发送端和接收端都要根据“帧头”和“校验和”来判断数据的有效性,并且排除干扰数据;假如把这类通讯方式使用了上述带有缺陷的环形缓冲区,则很多数据帧及数据之间原有的前后连续性都有可能被破坏而导致数据接收端的系统不能正确有效地分析通讯数据。
目前有文献提出使用软件计数器的方法来实现对环形缓冲的读写数据,其基本实现原理是这样的:在读数据和写数据时同时判断读指针和写指针的位置,为保证读写数据不发生上述的冲突,由这两个位置差可以得出还剩余多少空间可以写入数据的;但这样的结构会比较耗CPU资源,因为其要不断进行逻辑判断的操作。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于提供一种可避免出现上述技术缺陷的用于嵌入式系统基于同步机制下的环形数据缓冲实现方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州路派电子科技有限公司,未经广州路派电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710620299.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种汽车仪表自动压装装饰圈设备
- 下一篇:一种抱具行走轮更换工装





