一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种嵌入式Linux系统中的数据处理方法、设备及介质与流程

2022-04-14 00:02:21 来源:中国专利 TAG:

一种嵌入式linux系统中的数据处理方法、设备及介质
技术领域
1.本发明涉及数据处理领域,尤其涉及一种嵌入式linux系统中的数据处理方法、设备及介质。


背景技术:

2.串口通信因其易用性、稳定性和标准化广泛用于电气设备的板级、板间和系统级通信,如果使用ttl电平,只需要gnd(地线)、rx(接收线)和tx(发送线)这3根线就可以实现全双工通信,如果只要单向通信则只需要两根,通信双方交叉连接,一方的tx连接到另一方的tx,一下统称“总线”,数据传输是异步的,只要总线状态是空闲的,发送方就可以马上发送数据,而接收方时刻需要准备接收数据;如果接收方是单片机,可以按字节处理,能保证实时性,但如果接收方是嵌入式的linux系统等非实时的操作系统,则需要等整个缓冲区满或者空闲态超时后,底层驱动才会通知上层应用读取数据,遇到连续发送的同一数据,只能等待缓冲区满才会发送通知,这样是为了提高cpu的效率,但牺牲了实时性,如果与单片机一样按字节处理,会耗费大量cpu时间在串口io上,即挤占了应用的cpu时间,也提高了功耗。因此目前对于嵌入式的linux系统在进行串口通信数据传输过程中存在实时性较差,难以满足实时性的要求。


技术实现要素:

3.为了克服现有技术的不足,本发明的目的之一在于提供一种嵌入式linux系统中的数据处理方法,其能解决目前对于嵌入式的linux系统在进行串口通信数据传输过程中存在实时性较差,难以满足实时性的要求的问题。
4.本发明的目的之二在于提供一种电子设备,其能解决目前对于嵌入式的linux系统在进行串口通信数据传输过程中存在实时性较差,难以满足实时性的要求的问题。
5.本发明的目的之三在于提供一种计算机可读存储介质,其能解决目前对于嵌入式的linux系统在进行串口通信数据传输过程中存在实时性较差,难以满足实时性的要求的问题。
6.本发明的目的之一采用以下技术方案实现:
7.一种嵌入式linux系统中的数据处理方法,所述方法由linux系统中的驱动层执行,包括以下步骤:
8.判定待读取数据包,判定待读取数据包的数据量是否大于缓冲区前缓冲值,若是,执行步骤扩大缓冲区,若否,执行步骤缩小缓冲区,所述缓冲区前缓冲值为缓冲区当前的存储大小;
9.扩大缓冲区,将缓冲区满触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并按照预设扩大规则将缓冲区对应的缓冲区前缓冲值进行扩大处理;
10.缩小缓冲区,将超时触发通知作为触发通知的条件通知linux系统中的应用层读
取缓冲区的待读取数据包,并按照预设缩小规则将缓冲区对应的缓冲区前缓冲值进行缩小处理。
11.进一步地,当缓冲区为第一次接收待读取数据包时,在判定待读取数据包之前还包括设定缓冲区,将linux系统中缓冲区的缓冲值大小设置为预设初始缓冲值,将预设初始缓冲值作为缓冲区初始的缓冲区前缓冲值。
12.进一步地,所述预设扩大规则为以一倍的增量进行扩大,所述扩大缓冲区具体为:将缓冲区满触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并将缓冲区对应的缓冲区前缓冲值按照一倍的增量进行扩大。
13.进一步地,所述预设缩小规则为减半处理,所述缩小缓冲区具体为:将超时触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并将缓冲区对应的缓冲区前缓冲值进行减半处理。
14.进一步地,所述缓冲区满触发通知具体为:当缓冲区已经存满已经接收的待读取数据包,无法继续存储剩下未接收的缓冲待读取数据包时,发送用于提醒读取缓冲区内待读取数据包的通知信息至linux系统中的应用层。
15.进一步地,所述超时触发通知具体为:当缓冲区接收完待读取数据包后,当待读取数据包对应的超时时间达到预设超时阈值时,发送用于提醒读取缓冲区内待读取数据包的通知信息至linux系统中的应用层。
16.进一步地,所述超时时间为待读取数据包在缓冲区存储且未被读取的时间。
17.进一步地,通过预设总线将用于提醒读取缓冲区内待读取数据包的通知信息发送至linux系统中的应用层。
18.本发明的目的之二采用以下技术方案实现:
19.一种电子设备,包括:处理器;
20.存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于本技术中所述的一种嵌入式linux系统中的数据处理方法。
21.本发明的目的之三采用以下技术方案实现:
22.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行本技术中所述的一种嵌入式linux系统中的数据处理方法。
23.相比现有技术,本发明的有益效果在于:本技术中的一种嵌入式linux系统中的数据处理方法,包括以下步骤:判定待读取数据包的数据量是否大于缓冲区前缓冲值,缓冲区前缓冲值为缓冲区当前的存储大小,将缓冲区满触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并按照预设扩大规则将缓冲区对应的缓冲区前缓冲值进行扩大处理;若否,将超时触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并按照预设缩小规则将缓冲区对应的缓冲区前缓冲值进行缩小处理;通过判定待读取数据包的数据量的大小动态调整缓冲区的大小,实现了对应用层通知的动态调整,提高了嵌入式的linux系统在进行串口通信数据传输过程中数据传输的实时性,且同时降低了linux系统中的cpu的负载。
24.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
25.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
26.图1为本发明的一种嵌入式linux系统中的数据处理方法的流程示意图。
具体实施方式
27.下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
28.在本实施例中,在嵌入式linux系统的串口通信进行数据处理的过程中,数据的读取都是先由linux系统中的驱动层发出用于提醒linux系统中应用层读取缓冲区中数据的触发通知,然后linux系统中读取缓冲区的数据。触发通知的条件是缓冲区满或者空闲态超时。触发通知会出现以下两种情况:第一种情况:待读取数据包的大小要小于缓冲区的存储大小,缓冲区接收完数据包后,总线回到空闲态,当待读取数据包达到超时后通知linux系统中应用层,令整个过程中linux系统中应用层对于待读取数据的接收延迟为tc,则接收延迟tc=数据包大小(sp)
×
单字节传输时间(tb) 超时时间(to)。单字节传输时间(tb)由通信波特率确定;第二种情况:待读取数据包大于等于缓冲区的存储大小,此时接收延迟(tc)=缓冲区大小(sb)
×
单字节传输时间(tb),结合两种情况,延迟最大的情况为数据包比缓冲区小1字节的时候,tc=(sb-1)
×
tb to;通常对于实时性的要求为:接收延迟(tc)《最大允许延迟(th),即(sb-1)
×
tb to《th,变换一下为:sb《1 (th-to)/tb,根据上述的不等式可知超时时间(to)与缓冲区大小(sb)为反比关系,这样缓冲区的大小就被限定了,例如应用于卫星定位接收机接收20hz原始数据,使用921600波特率,超时取1毫秒,最大延迟要求5毫秒,得缓冲区不能超过368字节,如果采用固定长度的缓冲区,按5kb一包,则每秒通知次数为20*5*1024/368≈278次。因此采用固定长度的缓冲区,会造成通知次数太多,加重了linux系统中的cpu的负载。因此采用动态设置缓冲区大小的方法来满足实时性的要求又不会加重linux系统中的cpu的负载。
29.如图1所示,本技术中的一种嵌入式linux系统中的数据处理方法,包括以下步骤:
30.判定待读取数据包,判定待读取数据包的数据量是否大于缓冲区前缓冲值,若是,执行步骤扩大缓冲区,若否,执行步骤缩小缓冲区。所述缓冲区前缓冲值为缓冲区当前的存储大小,当缓冲区为第一次接收待读取数据包时,在判定待读取数据包之前还包括设定缓冲区,将linux系统中缓冲区的缓冲值大小设置为预设初始缓冲值,将预设初始缓冲值作为缓冲区初始的缓冲区前缓冲值。
31.扩大缓冲区,将缓冲区满触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并按照预设扩大规则将缓冲区对应的缓冲区前缓冲值进行扩大处理。所述预设扩大规则为以一倍的增量进行扩大,所述扩大缓冲区具体为:将缓冲区满触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并将缓冲区对应的缓冲区前缓冲值按照一倍的增量进行扩大。
32.缩小缓冲区,将超时触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并按照预设缩小规则将缓冲区对应的缓冲区前缓冲值进行缩小
处理。所述预设缩小规则为减半处理,所述缩小缓冲区具体为:将超时触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并将缓冲区对应的缓冲区前缓冲值进行减半处理。
33.在本实施例中,所述缓冲区满触发通知具体为:当缓冲区已经存满已经接收的待读取数据包,无法继续存储剩下未接收的缓冲待读取数据包时,发送用于提醒读取缓冲区内待读取数据包的通知信息至linux系统中的应用层,所述超时时间为待读取数据包在缓冲区存储且未被读取的时间,linux系统中的驱动层通过预设总线将用于提醒读取缓冲区内待读取数据包的通知信息发送至linux系统中的应用层。
34.本技术还提供一种电子设备,包括:处理器;
35.存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行本技术中所述的一种嵌入式linux系统中的数据处理方法。
36.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行本技术中的一种嵌入式linux系统中的数据处理方法。
37.本技术中的一种嵌入式linux系统中的数据处理方法,包括以下步骤:判定待读取数据包的数据量是否大于缓冲区前缓冲值,缓冲区前缓冲值为缓冲区当前的存储大小,将缓冲区满触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并按照预设扩大规则将缓冲区对应的缓冲区前缓冲值进行扩大处理;若否,将超时触发通知作为触发通知的条件通知linux系统中的应用层读取缓冲区的待读取数据包,并按照预设缩小规则将缓冲区对应的缓冲区前缓冲值进行缩小处理;通过判定待读取数据包的数据量的大小动态调整缓冲区的大小,实现了对应用层通知的动态调整,提高了嵌入式的linux系统在进行串口通信数据传输过程中数据传输的实时性,且同时降低了linux系统中的cpu的负载。
38.以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献