技术领域
本发明涉及数据处理技术领域,特别涉及基于异步软件的系统缓存技术领域,具体涉及一种高可靠性异步环形缓存区存储、处理的实现方法。
背景技术
在数据接收领域,外设的数据通信频率通常较低,而软件运行的主频较高,为了匹配两者之间的速度,数据接收缓存是常用的机制,即:数据通过中断或线程接收,在收到一定数量的数据之后,软件主进程中对缓存数据进行判定、执行,提高软件运行速率及数据处理能力。
数据缓存与处理属于两个相互独立的任务,两个任务通过数据缓存区接口进行联系。在数据缓存端,如何为数据缓存分配内存是数据可靠接收的关键,通常在嵌入式软件中分配一个超大的数组用于数据接收,而线程中常用链表扩展方式存储数据,两者均占用较多的内存资源;在数据处理端,在不破坏数据缓存区的情况下对数据可靠、高效处理是软件的核心。
现有技术方案主要有:通过动态分配内存方式,即接收到一个数据分配一个内存保存数据,简单但需要较多的系统资源,对轻量级应用不适合;通过固定长度的缓存区接收数据,分为先进先出、简易的环形缓存区保存数据,但处理效率较低。
在数据处理技术中,通常也有两种方式:通过等待方式,即当收到数据后,直至数据接收全部完成后,进行处理,但CPU运行效率较低,在多任务系统中无法运行;通过异步方式,即实时判定缓存区数据并处理,由于是并发操作,往往无法解析数据中的有效性信息。
为了解决上述技术问题:申请号为202011416055的专利中所述的环形缓存区,为解决多线程并发读写的“一写多读”场景,提出了一种一写多读高并发无锁环形缓存及其实现方法,主要解决了“多读”引起的错乱问题,但未能说明单一线程读取时如何高效可靠解析数据缓存区中的数据;申请号为201910829304.1的专利提供了一种基于异步环形缓冲区的数据读取、写入方法及装置,主要实现以较小的缓冲区完成对产品的成功升级,环形缓冲区的数据写入方式原始,读取方式效率较低。
针对上述问题,本发明提出了一种高可靠性异步环形缓存区存储、处理的实现方法,解决了数据存储、读取中数据占用存储多、解析效率低、识别率低的问题。
发明内容
为解决上述技术问题,本发明提供了一种高可靠性异步环形缓存区存储、处理的实现方法,异步环形缓存区包括存数地址、取数地址、帧头地址、帧尾地址、帧头及帧尾;帧头表示一帧正确数据的帧头地址;帧尾表示一帧正确数据的结束地址;
基于异步环形缓存区的存储实现步骤包括:
S11.整理需求,将数据包进行分包处理,整理通信协议;
S12.根据步骤S11中分包处理后的包大小,依次为通信端口创建环形缓存区接口对象,长度满足2
S13.建立数据接收任务,将步骤S12建立的数据缓存区首地址映射到接收端口上,实现数据接收;
S14.接收到一个字节数据后,存数地址加1,并与2
基于异步环形缓存区的处理实现步骤包括:
S21.在主进程中创建端口数据处理任务;
S22.比较存数地址与取数地址是否一致,发现不一致,对缓存区数据进行处理,包括帧头处理、数据帧长度处理,每处理一次存数地址,需要对存数地址进行加1,并与2
S23.帧头处理完成后,根据数据帧长度完成一帧数据接收,完成数据解析;
S24.数据解析正确,从环形缓存区中,根据帧头地址及帧尾地址取出数据帧,由主进程进行相应处理。
其中,所述异步环形缓存区的接口设计包括:rcvBuf为接收缓存区,长度为2
通过上述技术方案,本发明具有如下有益效果:
1、采用异步环形缓存区进行数据存储,可用效地节约存储空间;
2、数据达到结束地址时,通过对存数地址进行(2
3、数据处理中每次仅丢弃帧头字节,丢弃最小的字节,保证后续数据解析的正确性、可靠性;
4、主进程中比较存数地址与取数地址的位置,进行数据解析操作,存数地址达到结束时,通过对存数地址进行(2
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
附图1是本发明所述异步环形缓存区的构成示意图;
附图2是本发明所述异步环形缓存区的存储实现图;
附图3是本发明所述异步环形缓存区的处理实现图;
附图4是本发明所述异步环形缓存区的处理流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参考图1,本发明提供的异步环形缓存区包括存数地址、取数地址、帧头地址、帧尾地址、帧头及帧尾;帧头表示一帧正确数据的帧头地址;帧尾表示一帧正确数据的结束地址;异步环形缓存区的接口设计包括:rcvBuf为接收缓存区,长度为2
参考图2,基于异步环形缓存区的存储实现步骤包括:
S11.整理需求,将数据包进行分包处理,整理通信协议;
S12.根据步骤S11中分包处理后的包大小,依次为通信端口创建环形缓存区接口对象,长度满足2
S13.建立数据接收任务,将步骤S12建立的数据缓存区首地址映射到接收端口上,实现数据接收;
S14.接收到一个字节数据后,存数地址加1,并与2
参考图3及4,基于异步环形缓存区的处理实现步骤包括:
S21.在主进程中创建端口数据处理任务;
S22.比较存数地址与取数地址是否一致,发现不一致,对缓存区数据进行处理,包括帧头处理、数据帧长度处理,每处理一次存数地址,需要对存数地址进行加1,并与2
S23.帧头处理完成后,根据数据帧长度完成一帧数据接收,完成数据解析;
S24.数据解析正确,从环形缓存区中,根据帧头地址及帧尾地址取出数据帧,由主进程进行相应处理。
本发明具采用异步环形缓存区进行数据存储,可用效地节约存储空间;数据达到结束地址时,通过对存数地址进行(2
对上述实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
机译: 用于选择性地将存储缓冲区高速缓存行状态与响应缓冲区高速缓存行状态相关联的微处理器,装置和方法
机译: 用于选择性地将存储缓冲区高速缓存行状态与响应缓冲区高速缓存行状态相关联的微处理器,装置和方法
机译: 具有动态分配或释放缓冲区的高速缓存存储设备,包括该高速缓存存储设备的数字数据处理系统及其方法