CN115801814A - 一种基于串口双fifo缓冲区结构的数据传输方法、系统及存储介质 - Google Patents
一种基于串口双fifo缓冲区结构的数据传输方法、系统及存储介质 Download PDFInfo
- Publication number
- CN115801814A CN115801814A CN202211647001.6A CN202211647001A CN115801814A CN 115801814 A CN115801814 A CN 115801814A CN 202211647001 A CN202211647001 A CN 202211647001A CN 115801814 A CN115801814 A CN 115801814A
- Authority
- CN
- China
- Prior art keywords
- serial port
- data
- fifo buffer
- port double
- buffer area
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Communication Control (AREA)
Abstract
本发明涉及一种基于串口双FIFO缓冲区结构的数据传输方法、系统及存储介质,该方法包括T1:在云平台的监控系统和车端的自动驾驶系统中各自分配至少一块物理内存,分别对两个系统中的物理内存通过双向链表建立空闲内存池和工作内存池,同时在两个系统中都建立至少一个串口双FIFO缓冲区及其对应的读写指针;T2:基于所述车端的自动驾驶系统发送优先级不同的数据请求,获取所述车端自动驾驶系统的空闲内存池的内存并填入数据请求,将填入数据请求的内存加入到所述车端自动驾驶系统的工作内存池中,输出数据请求的物理起始地址及大小。本发明不仅减少由于缓冲区占用问题导致的优先级反转几率,而且提高了系统实时响应性能。
Description
技术领域
本发明涉及数据传输技术领域,尤其是涉及一种基于串口双FIFO缓冲区结构的数据传输方法、系统及存储介质。
背景技术
在嵌入式系统中,串口是使用较多的一种数据传输接口,在传输数据时,串口驱动程序一般使用中断的方式进行单个字节接收或发送,对于应用层而言,应该提供一种比较通用的接口,比如直接发送一个字节数组,或者直接接收一个字节数组,而不是收发单个字节, 为了达成这个目的,通常考虑在串口驱动中加入数据缓冲管理。
常用的串口收发缓冲管理一般是设置2个缓冲区,一个是发送缓冲区TxBuf,一个是接收缓冲区RxBuf,并为每个缓冲区分别设置两个指针,一个记录中断服务程序将处理的字节,另一个记录使用串口服务的上层程序将处理的字节。以串口发送为例,两个指针分别为inTxBuf和outTxBuf。outTxBuf指向发送中断要发送的数据,inTxBuf指向上层程序将数据放入缓冲区的起始位置。这种方式被称之为采用双缓冲队列的方法。在缓冲区够大的情况下,上层程序可以一次将要发送的数据全部放入缓冲区中,而不是一次发送一个字节。在发送时,第一次发送先取outBuf指向的字节发送,并将outBuf指向下一个待发送字节位置,当前字节发送完成后产生发送中断,然后在中断判断缓冲区是否为空,不为空则继续取出字节发送,直到所有字节发送完成。
以上串口发送缓冲区方式可以让应用层以数组的方式将一整包数据存放到待发送缓冲区中,如果在单线程应用调用中是没有问题的,但如果在多线程、多任务的系统中,多个优先级不同的应用任务同时使用串口发送各自的数据包时,就会产生缓冲区竞争问题,甚至导致任务优先级反转,主要原因在于只有一个inBuf指针指向待写入缓冲区起始位置,比如,一个低优先级的任务A正在使用inBuf将自己的待发送数据包拷贝进缓冲区时,一个高优先级的任务B也要使用inBuf将自己的数据包写入缓冲区中,但此时任务A已占用了inBuf指针,高优先级任务B必须等待A将自己的整个数据包拷贝完成之后再将inBuf释放给任务B,这个拷贝过程是不能被抢占的,否则会打乱各个任务应用层要发送的数据包,造成数据混乱,而高优先级的任务B必须等待低优先级任务A拷贝完所有数据包后才能拷贝自己的应用数据,这就造成了一定的优先级反转,整个系统中如果存在较多应用任务要使用串口缓冲区发送数据包,优先级反转的概率则会加大,最终导致系统实时性降低。
发明内容
鉴于以上现有技术的不足,本发明提供了一种基于串口双FIFO缓冲区结构的数据传输方法、系统及存储介质,不仅减少由于缓冲区占用问题导致的优先级反转几率,而且提高了系统实时响应性能。
为了实现上述目的及其他相关目的,本发明提供的技术方案如下:
一种基于串口双FIFO缓冲区结构的数据传输方法,包括:
T1:在云平台的监控系统和车端的自动驾驶系统中各自分配至少一块物理内存,分别对两个系统中的物理内存通过双向链表建立空闲内存池和工作内存池,同时在两个系统中都建立至少一个串口双FIFO缓冲区及其对应的读写指针;
T2:基于所述车端的自动驾驶系统发送优先级不同的数据请求,获取所述车端自动驾驶系统的空闲内存池的内存并填入数据请求,将填入数据请求的内存加入到所述车端自动驾驶系统的工作内存池中,输出数据请求的物理起始地址及大小;
T3:将所述数据请求的物理起始地址及大小写入所述车端的自动驾驶系统的串口双FIFO缓冲区,根据数据请求的优先级不同,先后输出优先级高的数据请求和优先级低的数据请求;
T4:将所述优先级高的数据请求和优先级低的数据请求发送至所述云平台的监控系统,所述云平台的监控系统将反馈数据请求通过串口双FIFO缓冲区发送至所述车端的自动驾驶系统。
进一步的,在步骤T3中,所述先后输出优先级高的数据请求和优先级低的数据请求包括:
T31:将优先级不同的数据请求输入至所述串口双FIFO缓冲区,所述串口双FIFO缓冲区按照优先级对数据请求进行拷贝;
T32:若优先级低的数据请求正在使用所述串口双FIFO缓冲区写入数据,优先级高的数据请求输入到所述串口双FIFO缓冲区,将优先级低的数据请求写入进程打断,完成优先级搞得数据请求,然后再完成优先级低的数据请求。
进一步的,所述串口双FIFO缓冲区包括写入指针、读出指针和至少一个缓冲区间单元。
进一步的,所述写入指针为指向首个未被使用的缓冲区间单元。
进一步的,所述读出指针为指向待发送的首个缓冲区间单元。
进一步的,当数据请求输入所述串口双FIFO缓冲区,根据所述写入指针,选择相应的缓冲区间单元,所述写入指针指向下一个空闲的缓冲区间单元。
进一步的,当优先级高的数据请求输入同一个所述串口双FIFO缓冲区时,优先级高的数据请求占用空闲的缓冲区间单元进行数据拷贝,优先级低的数据请求则停止进行数据拷贝,等待优先级高的数据请求完成数据拷贝。
为了实现上述目的及其他相关目的,本发明还提供了一种基于串口双FIFO缓冲区结构的数据传输系统,包括计算机设备,该计算机设备被编程或配置以执行任意一项所述基于串口双FIFO缓冲区结构的数据传输方法的步骤。
为了实现上述目的及其他相关目的,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行任意一项所述基于串口双FIFO缓冲区结构的数据传输方法的计算机程序。
本发明具有以下积极效果:
1.本发明通过加入串口双FIFO缓冲区,可以减少由于缓冲区占用问题导致的优先级反转几率。
2.本发明通过在云平台的控制系统和车载自动驾驶系统中设置了串口双FIFO缓冲区,提高了系统实时响应性能。
附图说明
图1为本发明方法流程示意图;
图2为本发明串口双FIFO缓冲区结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
实施例1:如图1所示,一种基于串口双FIFO缓冲区结构的数据传输方法,包括:
T1:在云平台的监控系统和车端的自动驾驶系统中各自分配至少一块物理内存,分别对两个系统中的物理内存通过双向链表建立空闲内存池和工作内存池,同时在两个系统中都建立至少一个串口双FIFO缓冲区及其对应的读写指针;
T2:基于所述车端的自动驾驶系统发送优先级不同的数据请求,获取所述车端自动驾驶系统的空闲内存池的内存并填入数据请求,将填入数据请求的内存加入到所述车端自动驾驶系统的工作内存池中,输出数据请求的物理起始地址及大小;
T3:将所述数据请求的物理起始地址及大小写入所述车端的自动驾驶系统的串口双FIFO缓冲区,根据数据请求的优先级不同,先后输出优先级高的数据请求和优先级低的数据请求;
T4:将所述优先级高的数据请求和优先级低的数据请求发送至所述云平台的监控系统,所述云平台的监控系统将反馈数据请求通过串口双FIFO缓冲区发送至所述车端的自动驾驶系统。
在本实施例中,如图2所示,在步骤T3中,所述先后输出优先级高的数据请求和优先级低的数据请求包括:
T31:将优先级不同的数据请求输入至所述串口双FIFO缓冲区,所述串口双FIFO缓冲区按照优先级对数据请求进行拷贝;
T32:若优先级低的数据请求正在使用所述串口双FIFO缓冲区写入数据,优先级高的数据请求输入到所述串口双FIFO缓冲区,将优先级低的数据请求写入进程打断,完成优先级搞得数据请求,然后再完成优先级低的数据请求。
在本实施例中,所述串口双FIFO缓冲区包括写入指针、读出指针和至少一个缓冲区间单元。
在本实施例中,所述写入指针为指向首个未被使用的缓冲区间单元。
在本实施例中,所述读出指针为指向待发送的首个缓冲区间单元。
在本实施例中,当数据请求输入所述串口双FIFO缓冲区,根据所述写入指针,选择相应的缓冲区间单元,所述写入指针指向下一个空闲的缓冲区间单元。
在本实施例中,当优先级高的数据请求输入同一个所述串口双FIFO缓冲区时,优先级高的数据请求占用空闲的缓冲区间单元进行数据拷贝,优先级低的数据请求则停止进行数据拷贝,等待优先级高的数据请求完成数据拷贝。
为了实现上述目的及其他相关目的,本发明还提供了一种基于串口双FIFO缓冲区结构的数据传输系统,包括计算机设备,该计算机设备被编程或配置以执行任意一项所述基于串口双FIFO缓冲区结构的数据传输方法的步骤。
为了实现上述目的及其他相关目的,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行任意一项所述基于串口双FIFO缓冲区结构的数据传输方法的计算机程序。
实施例2:在实施例1的一种基于串口双FIFO缓冲区结构的数据传输方法、系统及存储介质的基础上,下面对本发明作进一步的说明。
如图2所示,在多任务系统中,如果有不同优先级的多个任务同时使用串口发送数据,比如低优先级的任务A正在使用缓冲区写入数据,它先取到了写入指针,即占领了写入指针所指向的缓冲区间,然后立即将写入指针指向下一个空闲的缓冲区间,这时一个高优先级的任务B也要使用串口发送数据,由于写入指针已指向空闲的缓冲区间,任务B可不用等待任务A完成拷贝数据动作,立即打断任务A,占领写入指针指向的缓冲区间,然后完成数据拷贝,任务B完成后,返回到任务A的断点处继续执行,完成任务A的数据拷贝。这样看来,串口的双fifo缓冲结构,可以减小高优先级任务B等待低优先级任务A完成数据拷贝的时间,提高了系统实时响应性能。
综上所述,本发明不仅减少由于缓冲区占用问题导致的优先级反转几率,而且提高了系统实时响应性能。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (9)
1.一种基于串口双FIFO缓冲区结构的数据传输方法,其特征在于,包括:
T1:在云平台的监控系统和车端的自动驾驶系统中各自分配至少一块物理内存,分别对两个系统中的物理内存通过双向链表建立空闲内存池和工作内存池,同时在两个系统中都建立至少一个串口双FIFO缓冲区及其对应的读写指针;
T2:基于所述车端的自动驾驶系统发送优先级不同的数据请求,获取所述车端自动驾驶系统的空闲内存池的内存并填入数据请求,将填入数据请求的内存加入到所述车端自动驾驶系统的工作内存池中,输出数据请求的物理起始地址及大小;
T3:将所述数据请求的物理起始地址及大小写入所述车端的自动驾驶系统的串口双FIFO缓冲区,根据数据请求的优先级不同,先后输出优先级高的数据请求和优先级低的数据请求;
T4:将所述优先级高的数据请求和优先级低的数据请求发送至所述云平台的监控系统,所述云平台的监控系统将反馈数据请求通过串口双FIFO缓冲区发送至所述车端的自动驾驶系统。
2.根据权利要求1所述的基于串口双FIFO缓冲区结构的数据传输方法,其特征在于,在步骤T3中,所述先后输出优先级高的数据请求和优先级低的数据请求包括:
T31:将优先级不同的数据请求输入至所述串口双FIFO缓冲区,所述串口双FIFO缓冲区按照优先级对数据请求进行拷贝;
T32:若优先级低的数据请求正在使用所述串口双FIFO缓冲区写入数据,优先级高的数据请求输入到所述串口双FIFO缓冲区,将优先级低的数据请求写入进程打断,完成优先级搞得数据请求,然后再完成优先级低的数据请求。
3.根据权利要求2所述的基于串口双FIFO缓冲区结构的数据传输方法,其特征在于:所述串口双FIFO缓冲区包括写入指针、读出指针和至少一个缓冲区间单元。
4.根据权利要求3所述的基于串口双FIFO缓冲区结构的数据传输方法,其特征在于:所述写入指针为指向首个未被使用的缓冲区间单元。
5.根据权利要求3所述的基于串口双FIFO缓冲区结构的数据传输方法,其特征在于:所述读出指针为指向待发送的首个缓冲区间单元。
6.根据权利要求2所述的基于串口双FIFO缓冲区结构的数据传输方法,其特征在于:当数据请求输入所述串口双FIFO缓冲区,根据所述写入指针,选择相应的缓冲区间单元,所述写入指针指向下一个空闲的缓冲区间单元。
7.根据权利要求6所述的基于串口双FIFO缓冲区结构的数据传输方法,其特征在于:当优先级高的数据请求输入同一个所述串口双FIFO缓冲区时,优先级高的数据请求占用空闲的缓冲区间单元进行数据拷贝,优先级低的数据请求则停止进行数据拷贝,等待优先级高的数据请求完成数据拷贝。
8.一种基于串口双FIFO缓冲区结构的数据传输系统,包括计算机设备,其特征在于,该计算机设备被编程或配置以执行权利要求1~7中任意一项所述基于串口双FIFO缓冲区结构的数据传输方法的步骤。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程或配置以执行权利要求1~7中任意一项所述基于串口双FIFO缓冲区结构的数据传输方法的计算机程序。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202211647001.6A CN115801814A (zh) | 2022-12-21 | 2022-12-21 | 一种基于串口双fifo缓冲区结构的数据传输方法、系统及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202211647001.6A CN115801814A (zh) | 2022-12-21 | 2022-12-21 | 一种基于串口双fifo缓冲区结构的数据传输方法、系统及存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN115801814A true CN115801814A (zh) | 2023-03-14 |
Family
ID=85427588
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202211647001.6A Pending CN115801814A (zh) | 2022-12-21 | 2022-12-21 | 一种基于串口双fifo缓冲区结构的数据传输方法、系统及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN115801814A (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116701282A (zh) * | 2023-06-12 | 2023-09-05 | 深圳市安保医疗科技股份有限公司 | Vcp数据传输方法、装置、设备及介质 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104239248A (zh) * | 2014-09-16 | 2014-12-24 | 国家计算机网络与信息安全管理中心 | Pci-e多缓冲区dma数据传输方法 |
| CN108427894A (zh) * | 2018-03-27 | 2018-08-21 | 中国农业银行股份有限公司 | 一种数据通信方法及装置 |
| CN111124961A (zh) * | 2019-12-30 | 2020-05-08 | 武汉先同科技有限公司 | 一种连续读写模式下的单口ram转伪双口ram的实现方法 |
-
2022
- 2022-12-21 CN CN202211647001.6A patent/CN115801814A/zh active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104239248A (zh) * | 2014-09-16 | 2014-12-24 | 国家计算机网络与信息安全管理中心 | Pci-e多缓冲区dma数据传输方法 |
| CN108427894A (zh) * | 2018-03-27 | 2018-08-21 | 中国农业银行股份有限公司 | 一种数据通信方法及装置 |
| CN111124961A (zh) * | 2019-12-30 | 2020-05-08 | 武汉先同科技有限公司 | 一种连续读写模式下的单口ram转伪双口ram的实现方法 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116701282A (zh) * | 2023-06-12 | 2023-09-05 | 深圳市安保医疗科技股份有限公司 | Vcp数据传输方法、装置、设备及介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4272819A (en) | Inter-subsystem direct transfer system | |
| JPS61109164A (ja) | バス制御方法 | |
| CN115658571B (zh) | 一种数据传输方法、装置、电子设备及介质 | |
| JP2006513493A5 (zh) | ||
| CN118550857B (zh) | 一种数据传输方法、装置、电子设备以及存储介质 | |
| US11789634B2 (en) | Systems and methods for processing copy commands | |
| US12019572B2 (en) | Bridging module, data transmission system, and data transmission method | |
| JPH0587854B2 (zh) | ||
| CN111258932A (zh) | 加速ufs协议处理的方法与存储控制器 | |
| CN112559400A (zh) | 多级调度装置、方法、网络芯片及计算机可读存储介质 | |
| WO2025152635A1 (zh) | 缓存请求的处理方法、装置、设备、存储介质及程序 | |
| US20200183875A1 (en) | Usb transmission device and transmission method | |
| CN115563038A (zh) | 基于dma控制器的数据处理系统、方法和数据处理设备 | |
| CN115801814A (zh) | 一种基于串口双fifo缓冲区结构的数据传输方法、系统及存储介质 | |
| CN108958903B (zh) | 嵌入式多核中央处理器任务调度方法与装置 | |
| CN119988054A (zh) | 异构核间通信方法和片上系统 | |
| CN100530078C (zh) | 一种堆栈缓冲区管理方法 | |
| US11972110B2 (en) | Storage device and storage system | |
| CN110865953A (zh) | 异步拷贝方法和装置 | |
| US12019909B2 (en) | IO request pipeline processing device, method and system, and storage medium | |
| CN108958905B (zh) | 嵌入式多核中央处理器的轻量级操作系统 | |
| JPS6336531B2 (zh) | ||
| JP2008015876A (ja) | データアクセスシステム、データアクセス装置、データアクセス集積回路及びデータアクセス方法 | |
| CN120066433B (zh) | 多线程打印调度方法、装置、电子设备及存储介质 | |
| JP6502879B2 (ja) | 記憶装置 |
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 |