CN112235206A - 一种基于单片机的环形缓冲队列数据接收机制 - Google Patents

一种基于单片机的环形缓冲队列数据接收机制 Download PDF

Info

Publication number
CN112235206A
CN112235206A CN201911326906.1A CN201911326906A CN112235206A CN 112235206 A CN112235206 A CN 112235206A CN 201911326906 A CN201911326906 A CN 201911326906A CN 112235206 A CN112235206 A CN 112235206A
Authority
CN
China
Prior art keywords
data
queue
ring buffer
buffer
frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201911326906.1A
Other languages
English (en)
Inventor
刁瑞朋
周理想
王胜平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qingdao Topscomm Communication Co Ltd
Original Assignee
Qingdao Topscomm Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qingdao Topscomm Communication Co Ltd filed Critical Qingdao Topscomm Communication Co Ltd
Priority to CN201911326906.1A priority Critical patent/CN112235206A/zh
Publication of CN112235206A publication Critical patent/CN112235206A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于单片机的环形缓冲队列数据接收机制。基于单片机的技术开发中,对任务的内存占用和处理效率比较敏感。环形缓冲区能够实现不增加内存资源、不影响处理效率的情况下支持高速率通信。环形缓冲区就是一个带“头指针”和“尾指针”的数组,头指针指向环形缓冲区中可读的数据,在读取数据后,“头指针”加1,指向下一个待读取数据;尾指针指向环形缓冲区中可写的缓冲空间,当接收到新的数据,则将数据保存到环形缓冲区中,并将“尾指针”加1,指向下一个存储位置。如果“尾指针”超过数组大小,则“尾指针”重新指向数组的首元素,从而形成“环形缓冲区”。当系统处于数据接收状态时,应用程序一直从缓冲区读取数据并解析,直到接收到完整协议帧,见图I。本发明利用环形缓冲队列提高片内资源利用率,解决了高速率通信时丢字节的问题。

Description

一种基于单片机的环形缓冲队列数据接收机制
技术领域
本发明涉及一种使用环形缓冲队列实现高速通信的方法。
背景技术
串口作为常用的通讯方式,在嵌入式领域有着广泛的应用,通常使用的数据接收方式是,在中断函数里将接收到的数据直接作协议解析,操作简单、易理解。但是该处理方式只适用于低速率通信,在通信速率提高后,如2Mbps,会出现先前接收到的数据未处理完,而串口又接收到新的数据,导致字节丢失的问题。
如果用普通队列作缓存,虽然能起到一定的缓冲作用,但需要开辟足够大的空间,且已处理的数据仍然占用原有数据空间,直到清空后才能开始新一轮的接收,单片机有限的内存资源没有得到有效利用;如果处理完一个数据,就把剩余的数据往前移动一次,又会极大降低单片机处理效率。
发明内容
本发明是一种基于单片机的环形缓冲队列数据接收方案,在不过多占用单片机内存资源的前提下支持高速通信。
环形缓冲区就是一个带“头指针”和“尾指针”的数组。头指针指向环形缓冲区中可读的数据,应用程序依次读出并处理缓冲区的数据,在读取数据后,“头指针”加1,指向下一个待读取数据;尾指针指向环形缓冲区中可写的缓冲空间,由中断函数写入缓冲区数据,当接收到新的数据,则将数据保存到环形缓冲区中,并将“尾指针”加1,指向下一个存储位置。如果“尾指针”超过数组大小,则“尾指针”重新指向数组的首元素,从而形成“环形缓冲区”。整体框图见图1。
实现的原理:初始化的时候,队列头与队列尾都指向地址0,见图2。当有数据存储的时候,数据存储在地址0,而队列尾tail指向地址1,再有数据来的时候,存储数据到地址1,然后队列尾tail指向下一个地址2,即队列尾tail始终指向可以进行写数据的地址。
队列头head就是指向已经存储的数据,并且这个数据是待处理的。当数据要进行处理的时候,先处理地址0空间的数据,也就是队列头head指向的数据,处理完后地址0的存储被释放掉,队列头指向地址1。从而实现整个环形缓冲区的数据读写。如果队列处于满载状态,不再允许写入数据,见图3。
附图说明
图1:环形缓冲队列数据接收框图。
图2:环形缓冲队列空状态。
图3:环形缓冲队列满状态。
具体实施方式
详述具体实施方式如下:
定义一个结构体,包括缓冲区大小、缓冲区头部位置、缓冲区尾部位置、缓冲区数组。
定义一个空队列,头指针head和尾指针tail都是指向数组的元素0。如图2所示,此时是不允许读取数据的。
定义一个满队列,即尾指针tail加1等于头指针head。如图3所示,此时是不允许写入数据的,避免将已有数据覆盖掉。
如果处理的速度赶不上接收的速度,可以适当增大缓冲区的大小,具体增大多少,可由实际测试决定。

Claims (4)

1.一种基于单片机的环形缓冲队列数据接收机制。其特征在于:a、定义通信协议状态机。b、提高片内资源利用率。c、支持高速通信。
2.如权利要求1所述定义通信协议的帧结构:帧头部、帧长度、帧控制域、帧地址域、帧头校验、链路数据域、帧校验、帧尾。
3.如权利要求1所述环形队列在逻辑上将数组的首尾连接,形成一个存放队列的环形空间,并用指针或数组下标来指明数据读、写的位置。在数据写入的时候,另一边可以把数据读出来,而读出后留下的空位,又可以作为存储空间备用。相比普通队列数据接收,环形缓冲队列能够有效提高资源利用率。
4.如权利要求1所述在中断里将收到的数据写入环形缓冲区,显著提高接收数据的速度。接收的同时,应用程序一直从缓冲区中读出数据并作解析,直到接收到符合帧结构的报文,有效的解决了因通信速率过高导致的数据丢包问题。
CN201911326906.1A 2019-12-20 2019-12-20 一种基于单片机的环形缓冲队列数据接收机制 Withdrawn CN112235206A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911326906.1A CN112235206A (zh) 2019-12-20 2019-12-20 一种基于单片机的环形缓冲队列数据接收机制

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911326906.1A CN112235206A (zh) 2019-12-20 2019-12-20 一种基于单片机的环形缓冲队列数据接收机制

Publications (1)

Publication Number Publication Date
CN112235206A true CN112235206A (zh) 2021-01-15

Family

ID=74111679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911326906.1A Withdrawn CN112235206A (zh) 2019-12-20 2019-12-20 一种基于单片机的环形缓冲队列数据接收机制

Country Status (1)

Country Link
CN (1) CN112235206A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416613A (zh) * 2021-12-29 2022-04-29 苏州雄立科技有限公司 一种dma数据传输系统及方法
CN115098733A (zh) * 2022-06-10 2022-09-23 深圳市移文科技有限公司 一种移动终端数据读取方法、装置及移动终端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103957089A (zh) * 2014-04-28 2014-07-30 上海大学 一种高可靠线速数据通信方法
US20170308488A1 (en) * 2016-04-25 2017-10-26 Imagination Technologies Limited Communication Interface Between Host System and State Machine
CN107302531A (zh) * 2017-06-19 2017-10-27 青岛华潞佳电子科技有限公司 一种基于状态机和环形队列的串口命令解析方法
CN108768884A (zh) * 2018-04-27 2018-11-06 江苏中科芯核电子科技有限公司 一种基于环形缓冲区的无线通信数据处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103957089A (zh) * 2014-04-28 2014-07-30 上海大学 一种高可靠线速数据通信方法
US20170308488A1 (en) * 2016-04-25 2017-10-26 Imagination Technologies Limited Communication Interface Between Host System and State Machine
CN107302531A (zh) * 2017-06-19 2017-10-27 青岛华潞佳电子科技有限公司 一种基于状态机和环形队列的串口命令解析方法
CN108768884A (zh) * 2018-04-27 2018-11-06 江苏中科芯核电子科技有限公司 一种基于环形缓冲区的无线通信数据处理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416613A (zh) * 2021-12-29 2022-04-29 苏州雄立科技有限公司 一种dma数据传输系统及方法
CN115098733A (zh) * 2022-06-10 2022-09-23 深圳市移文科技有限公司 一种移动终端数据读取方法、装置及移动终端
CN115098733B (zh) * 2022-06-10 2023-04-07 深圳市移文科技有限公司 一种移动终端数据读取方法、装置及移动终端

Similar Documents

Publication Publication Date Title
CN110462599B (zh) 用于循环缓冲器的自主硬件管理的设备和方法
CN108733344B (zh) 数据读写方法、装置以及环形队列
US8225026B2 (en) Data packet access control apparatus and method thereof
JP7162102B2 (ja) メモリアクセス技術およびコンピュータシステム
US8230180B2 (en) Shared memory burst communications
CN112084136B (zh) 队列缓存管理方法、系统、存储介质、计算机设备及应用
US20070274303A1 (en) Buffer management method based on a bitmap table
US20180248813A1 (en) Queue Flushing Method and Related Device
US11425057B2 (en) Packet processing
CN112235206A (zh) 一种基于单片机的环形缓冲队列数据接收机制
CN102023961A (zh) 一种基于共享内存的通信方法及装置
EP3206123B1 (en) Data caching method and device, and storage medium
CN111221759B (zh) 一种基于dma的数据处理系统及方法
CN112559436B (zh) 一种rdma通信设备的上下文访问方法及系统
CN111181874B (zh) 一种报文处理方法、装置及存储介质
JPS62261249A (ja) 回線アダプタ
CN110990169B (zh) 一种利用共享内存进行进程间字节流通信的结构及方法
US11176064B2 (en) Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US11042321B2 (en) Memory controller
CN115002052B (zh) 一种分层的缓存控制器、控制方法及控制设备
CN115955441A (zh) 一种基于tsn队列的管理调度方法、装置
CN116204466A (zh) Dma链表模式下的数据处理方法、装置及系统
CN113992608B (zh) 一种网络收发包路径优化方法、装置及存储介质
CN117499351A (zh) 报文转发装置及方法、通信芯片及网络设备
US8645597B2 (en) Memory block reclaiming judging apparatus and memory block managing system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20210115

WW01 Invention patent application withdrawn after publication