CN112925485B - 嵌入式Linux的多通道高速数据传输存储方法及系统 - Google Patents

嵌入式Linux的多通道高速数据传输存储方法及系统 Download PDF

Info

Publication number
CN112925485B
CN112925485B CN202110508891.1A CN202110508891A CN112925485B CN 112925485 B CN112925485 B CN 112925485B CN 202110508891 A CN202110508891 A CN 202110508891A CN 112925485 B CN112925485 B CN 112925485B
Authority
CN
China
Prior art keywords
file
control chip
storage
chip
storage module
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.)
Active
Application number
CN202110508891.1A
Other languages
English (en)
Other versions
CN112925485A (zh
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.)
Hunan Bojiang Information Technology Co Ltd
Original Assignee
Hunan Bojiang Information Technology 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 Hunan Bojiang Information Technology Co Ltd filed Critical Hunan Bojiang Information Technology Co Ltd
Priority to CN202110508891.1A priority Critical patent/CN112925485B/zh
Publication of CN112925485A publication Critical patent/CN112925485A/zh
Application granted granted Critical
Publication of CN112925485B publication Critical patent/CN112925485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种嵌入式Linux的多通道高速数据传输存储方法及系统,所述方法应用于嵌入式Linux的多通道高速数据传输存储系统;所述嵌入式Linux的多通道高速数据传输存储系统包括硬核处理器、业务芯片、控制芯片和存储模块,所述业务芯片包括内存单元;所述硬核处理器分别通信连接于所述业务芯片、所述控制芯片和所述内存单元;所述存储模块通信连接于所述控制芯片;本发明采用文件异步IO方式,使数据不经过Linux的缓存,并减少文件IO的阻塞,能够更快的将数据写入到存储模块中,从而提高数据的传输速度,和存储稳定性,降低数据丢失的可能性。

Description

嵌入式Linux的多通道高速数据传输存储方法及系统
技术领域
本发明涉及嵌入式Linux数据传输及存储技术领域,具体涉及一种嵌入式Linux的多通道高速数据传输存储方法及系统。
背景技术
随着高速数据量的不断增大,对数据的传输及存储性能要求也越来越高,传统的嵌入式存储记录设备以Linux为操作系统,来进行数据的传输与存储;但是因Linux的进程调度算法主要考虑的是公平性,所以标准的Linux并不提供强实时性;当嵌入式存储记录设备的实时处理性能不够,或响应延时较高时,存储数据时速度较慢,且容易造成数据丢失的现象。
发明内容
本发明的主要目的是提供一种嵌入式Linux的多通道高速数据传输存储方法及系统,旨在解决现有的以Linux作为操作系统的嵌入式存储记录设备存储数据时速度较慢,且容易造成数据丢失的问题。
本发明提出的技术方案为:
本发明提出一种嵌入式Linux的多通道高速数据传输存储方法,应用于嵌入式Linux的多通道高速数据传输存储系统;所述嵌入式Linux的多通道高速数据传输存储系统包括硬核处理器、业务芯片、控制芯片和存储模块,所述业务芯片包括内存单元;所述硬核处理器分别通信连接于所述业务芯片、所述控制芯片和所述内存单元;所述存储模块通信连接于所述控制芯片;所述嵌入式Linux的多通道高速数据传输存储方法,包括:
通过所述业务芯片获取外界数据;
通过所述控制芯片和所述硬核处理器将所述外界数据存储至所述内存单元;
通过所述控制芯片和所述硬核处理器将所述外界数据通过文件异步IO的方式存储至所述存储模块。
优选的,所述控制芯片通过PCIe接口和所述硬核处理器通信连接;所述控制芯片运行有Linux操作系统;所述控制芯片还通信连接有上位机;所述通过所述业务芯片获取外界数据,包括:
通过所述控制芯片接收所述上位机发送的记录参数;
通过所述硬核处理器生成并启动与所述记录参数对应的创建文件线程,并将各所述创建文件线程放入所述业务芯片的各高速接口通道;
通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件;
通过所述控制芯片实时判断所述内存单元中是否存在空闲队列;
若是,通过所述控制芯片启动发送队列线程,基于所述发送队列线程申请所述内存单元中的空闲队列,并基于所述空闲队列生成发送队列消息;
通过所述控制芯片将所述发送队列消息发送至所述硬核处理器;
基于所述发送队列消息通过所述硬核处理器控制所述业务芯片的所述高速接口通道获取所述外界数据。
优选的,所述发送队列消息包括缓存地址;所述通过所述控制芯片和所述硬核处理器将所述外界数据存储至所述内存单元,包括:
通过所述硬核处理器判断所述业务芯片的所述高速接口通道是否获取到了所述外界数据;
若是,通过所述硬核处理器将所述外界数据存储至所述内存单元中,且存储地址为所述缓存地址;
若否,等待所述业务芯片的所述高速接口通道获取所述外界数据;
通过所述硬核处理器启动完成队列线程,以生成与所述发送队列消息对应的完成队列消息;通过所述硬核处理器将所述完成队列消息发送至所述控制芯片。
优选的,所述通过所述控制芯片和所述硬核处理器将所述外界数据通过文件异步IO的方式存储至所述存储模块,包括:
通过所述控制芯片启动接收队列线程,以判断所述控制芯片是否接收到了所述完成队列消息;
若是,通过所述控制芯片调用所述Linux操作系统的libaio异步接口,以将所述内存单元内的所述外界数据预写到所述存储模块的所述文件中,随后启动异步存储事件;
判断所述异步存储事件是否已经完成;
若是,释放所述发送队列消息,以于所述内存单元中生成新的所述空闲队列。
优选的,所述通过所述控制芯片和所述硬核处理器将所述外界数据通过文件异步IO的方式存储至所述存储模块,之后还包括:
通过所述控制芯片接收所述上位机发送的停止创建指令;
基于所述停止创建指令,通过所述控制芯片停止所述发送队列线程并释放至内存池;
基于所述停止创建指令,通过所述控制芯片判断是否接收到了所有的所述完成队列消息;
若是,通过所述硬核处理器停止所述完成队列线程并释放至内存池;
若否,等待所述控制芯片接收完所有的所述完成队列消息;
启动事件轮询线程,轮询所述异步存储事件,直至超过预设次数没有接收到所述异步存储事件的完成信息;停止所述事件轮询线程,并释放到线程池。
优选的,所述记录参数包括待接收数据大小
Figure 992876DEST_PATH_IMAGE001
;所述通过所述控制芯片在所述存 储模块创建与各所述创建文件线程对应的文件,包括:
获取所述业务芯片的高速接口通道的数量
Figure 960701DEST_PATH_IMAGE002
基于所述待接收数据大小和所述高速接口通道的数量,计算得到预设文件大小
Figure 945974DEST_PATH_IMAGE003
Figure 458995DEST_PATH_IMAGE004
通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件,且所述文件的大小为所述预设文件大小,所述文件创建完成时即占据所述存储模块的存储空间。
优选的,所述记录参数包括待接收数据大小
Figure 998561DEST_PATH_IMAGE001
;通过所述控制芯片在所述存储模 块创建与各所述创建文件线程对应的文件,之前还包括:
获取所述存储模块的剩余空间大小;
判断所述待接收数据大小是否小于所述剩余空间大小;
若是,执行所述通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件的步骤;
若否,获取所述存储模块中大于所述待接收数据大小的所有文件,剔除正在存储中的文件后标记为第一文件集;
计算所述第一文件集中各文件的重要系数
Figure 786388DEST_PATH_IMAGE005
Figure 344277DEST_PATH_IMAGE006
其中,
Figure 559358DEST_PATH_IMAGE007
为当前日期,取值单位为日;
Figure 851799DEST_PATH_IMAGE008
为所述第一文件集中各文件的创建日期, 取值单位为日;
Figure 912159DEST_PATH_IMAGE009
为所述第一文件集中各文件的大小;
Figure 793396DEST_PATH_IMAGE010
为所述第一文件集中各文件截 止至当前的读取次数;
Figure 648220DEST_PATH_IMAGE011
为所述第一文件集中各文件的平均读取次数;
Figure 896798DEST_PATH_IMAGE012
为类型权值常 数,当文件为所述存储模块中类型占比最大的文件时取1,当文件不为所述存储模块中类型 占比最大的文件时取0;
将所述重要系数最小的所述文件被标记为推荐删除文件;
判断所述推荐删除文件是否被删除;
若被删除,执行通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件。
优选的,所述记录参数包括待接收数据优先等级,所述优先等级的取值为普通和高级中任一项;所述等待所述业务芯片的所述高速接口通道获取所述外界数据,包括:
获取所述业务芯片的所述高速接口通道等待所述外界数据的时长,标记为等待时长;
判断所述优先等级是否为普通;
若是,当所述等待时长大于第一预设时长时,不再等待所述业务芯片的所述高速接口通道获取所述外界数据完成;
判断所述优先等级是否为高级;
若是,当所述等待时长大于第二预设时长时,向外界数据源主机发送催发信息,保留1个所述高速接口通道并持续等待获取所述外界数据,其中,所述第二预设时长大于所述第一预设时长。
优选的,所述通过所述控制芯片调用所述Linux操作系统的libaio异步接口,以将所述内存单元内的所述外界数据预写到所述存储模块的所述文件中,随后启动异步存储事件,之后包括:
获取所述待接收数据的大小和所述存储模块的读写速度;
基于所述待接收数据的大小和所述读写速度生成预估存储时长;
将所述预估存储时长显示于所述上位机。
本发明还提出一种嵌入式Linux的多通道高速数据传输存储系统,应用如上述中任一项所述的嵌入式Linux的多通道高速数据传输存储方法;所述嵌入式Linux的多通道高速数据传输存储系统包括硬核处理器、业务芯片、控制芯片和存储模块,所述业务芯片包括内存单元;所述硬核处理器分别通信连接于所述业务芯片、所述控制芯片和所述内存单元;所述存储模块通信连接于所述控制芯片。
通过上述技术方案,能实现以下有益效果:
本发明采用文件异步IO方式,使数据不经过Linux的缓存,并减少文件IO的阻塞,能够更快的将数据写入到存储模块(磁盘)中,从而提高数据的传输速度,和存储稳定性,降低数据丢失的可能性。
在实际应用中,传统的嵌入式数据采集系统,当采集速度到达550MB每秒时即会出现采集不及时的情况;而采用本发明提出的嵌入式Linux的多通道高速数据传输存储方法,最终测试采集速度到达2.7GB每秒也不会出现采集不及时的现象,大大优化并提高了数据传输及存储的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法第一实施例的流程图;
图2为本发明提出的一种嵌入式Linux的多通道高速数据传输存储系统一实施例的结构图。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提出一种嵌入式Linux的多通道高速数据传输存储方法及系统。
如附图1至图2所示,在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第一实施例中,本实施例应用于嵌入式Linux的多通道高速数据传输存储系统;所述嵌入式Linux的多通道高速数据传输存储系统包括硬核处理器、业务芯片、控制芯片和存储模块,所述业务芯片包括内存单元;所述硬核处理器分别通信连接于所述业务芯片、所述控制芯片和所述内存单元;所述存储模块通信连接于所述控制芯片;本实施例包括如下步骤:
步骤S110:通过所述业务芯片获取外界数据。
具体的,在实际应用中,业务芯片通常优选为FPGA芯片的PL端,硬核处理器即是FPGA芯片的PS端;FPGA芯片拥有外部高速接口,这样能够更加高效快速的接收外界数据;这里的内存单元为BRAM,BRAM 就是Block Memory(块存储单元),用于实现上述PS端到PL端的数据交互和共享,即PL端负责接收外界数据,PS端负责操作接收的外界数据。
步骤S120:通过所述控制芯片和所述硬核处理器将所述外界数据存储至所述内存单元。
具体的,即通过FPGA芯片的PL端和PS端将外界数据存储至内存单元,因内存的读写速度相对硬盘快很多,以便于对外界数据进行后续操作。
步骤S130:通过所述控制芯片和所述硬核处理器将所述外界数据通过文件异步IO的方式存储至所述存储模块。
具体的,采用文件异步IO方式(这里的异步IO,即是指当一个异步过程调用发出后,调用者不能立刻得到结果;实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者;使用异步IO的好处是,在发起IO请求到实际使用数据这段时间内,程序还可以继续做其他事情,不会因为处理数据而导致程序等待,提高了利于效率,减少了阻塞),使数据不经过Linux的缓存,并减少文件IO的阻塞,能够更快的将数据写入到存储模块(磁盘)中,从而提高数据的传输速度,和存储稳定性,降低数据丢失的可能性。
在实际应用中,传统的嵌入式数据采集系统,当采集速度到达550MB每秒时即会出现采集不及时的情况;而采用本发明提出的嵌入式Linux的多通道高速数据传输存储方法,最终测试采集速度到达2.7GB每秒也不会出现采集不及时的现象,大大优化并提高了数据传输及存储的效率。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第二实施例中,基于第一实施例,所述控制芯片通过PCIe接口和所述硬核处理器通信连接;所述控制芯片运行有Linux操作系统;所述控制芯片还通信连接有上位机;步骤S110,包括如下步骤:
步骤S210:通过所述控制芯片接收所述上位机发送的记录参数。
具体的,这里的记录参数即是关于上述待接收的外界数据的参数,用于表述外界数据的大小等信息。
步骤S220:通过所述硬核处理器生成并启动与所述记录参数对应的创建文件线程,并将各所述创建文件线程放入所述业务芯片的各高速接口通道。
具体的,记录参数对应的创建文件线程,即创建文件线程用于在存储模块创建文件,并将接收的外界数据填入创建的文件,故在外界数据接收之时,即将各所述创建文件线程放入所述业务芯片的各高速接口通道;使得各高速接口通道接收与记录参数对应的外界数据。
步骤S230:通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件。
具体的,创建文件线程用于在存储模块创建文件。
步骤S240:通过所述控制芯片实时判断所述内存单元中是否存在空闲队列。
具体的,这里是应用内存单元来对接收的外界数据进行转存,即外界数据由内存单元转移至存储模块中,故需要先判断内存单元中是否存在空闲队列。
若是,执行步骤S250:通过所述控制芯片启动发送队列线程,基于所述发送队列线程申请所述内存单元中的空闲队列,并基于所述空闲队列生成发送队列消息。
具体的,若存在空闲队列,则通过所述控制芯片启动发送队列线程,基于所述发送队列线程申请所述内存单元中的空闲队列,并基于所述空闲队列生成发送队列消息。
步骤S260:通过所述控制芯片将所述发送队列消息发送至所述硬核处理器。
步骤S270:基于所述发送队列消息通过所述硬核处理器控制所述业务芯片的所述高速接口通道获取所述外界数据。
具体的,接收到发送队列消息后,硬核处理器即控制所述业务芯片的所述高速接口通道获取所述外界数据。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第三实施例中,基于第二实施例,所述发送队列消息包括缓存地址;步骤S120,包括如下步骤:
步骤S310:通过所述硬核处理器判断所述业务芯片的所述高速接口通道是否获取到了所述外界数据。
具体的,因外界数据需要数据发送方来控制发送,故需要通过所述硬核处理器判断所述业务芯片的所述高速接口通道是否获取到了所述外界数据。
若是,执行步骤S320:通过所述硬核处理器将所述外界数据存储至所述内存单元中,且存储地址为所述缓存地址。
具体的,若接收到了外界数据,则通过所述硬核处理器将所述外界数据存储至所述内存单元中,且存储地址为所述缓存地址;即将接收到的外界数据暂时存储至内存单元中。
若否,执行步骤S330:等待所述业务芯片的所述高速接口通道获取所述外界数据。
具体的,若没有接收到外界数据,需要进行等待,直至所述业务芯片的所述高速接口通道获取所述外界数据。然后再执行步骤S320。
步骤S340:通过所述硬核处理器启动完成队列线程,以生成与所述发送队列消息对应的完成队列消息;通过所述硬核处理器将所述完成队列消息发送至所述控制芯片。
具体的,当外界数据存储至内存单元之后,通过所述硬核处理器启动完成队列线程,以生成与所述发送队列消息对应的完成队列消息;通过所述硬核处理器将所述完成队列消息发送至所述控制芯片。通过完成队列消息,使得控制芯片知晓外界数据已经暂时存储于内存单元中。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第四实施例中,基于第三实施例,步骤S130,包括如下步骤:
步骤S410:通过所述控制芯片启动接收队列线程,以判断所述控制芯片是否接收到了所述完成队列消息。
具体的,通过所述控制芯片启动接收队列线程,以判断所述控制芯片是否接收到了所述完成队列消息。即这里的接收队列线程,用于判断控制芯片是否接收到了完成队列消息,从而判断外界数据是否已经存储至内存单元中。
若是,执行步骤S420:通过所述控制芯片调用所述Linux操作系统的libaio异步接口,以将所述内存单元内的所述外界数据预写到所述存储模块的所述文件中,随后启动异步存储事件。
具体的,若是,则说明外界数据已经存储至内存单元中,则通过所述控制芯片调用所述Linux操作系统的libaio异步接口,以将所述内存单元内的所述外界数据预写到所述存储模块的所述文件中,随后启动异步存储事件(这里的异步存储时间即是真正将外界数据写入存储模块的事件)。
步骤S430:判断所述异步存储事件是否已经完成。
具体的,控制芯片判断所述异步存储事件是否已经完成,从而判断外界数据是否已经写入存储模块中。
若是,执行步骤S440:释放所述发送队列消息,以于所述内存单元中生成新的所述空闲队列。
具体的,若外界数据已经写入存储模块,则说明整个数据传输的步骤已经完成,则释放所述发送队列消息,以于所述内存单元中生成新的所述空闲队列。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第五实施例中,基于第四实施例,步骤S130,之后还包括如下步骤:
步骤S510:通过所述控制芯片接收所述上位机发送的停止创建指令。
具体的,通过所述控制芯片接收所述上位机发送的停止创建指令。这里的停止创建指令,即对应着不再接收并存储新的外界数据。
步骤S520:基于所述停止创建指令,通过所述控制芯片停止所述发送队列线程并释放至内存池。
具体的,基于所述停止创建指令,通过所述控制芯片停止所述发送队列线程并释放至内存池,即不再生成新的发送队列消息。
步骤S530:基于所述停止创建指令,通过所述控制芯片判断是否接收到了所有的所述完成队列消息。
具体的,虽然不再创建新的发送队列消息,但之前已经创建的发送队列消息仍然在运行,仍然会生成与之对应的完成队列消息,为此,需要将继续处理完仍然在生成中或者已经生成的完成队列消息,故通过所述控制芯片判断是否接收到了所有的所述完成队列消息。
若是,执行步骤S540:通过所述硬核处理器停止所述完成队列线程并释放至内存池。
具体的,若接收到了所有的完成队列消息,则说明之前生成的发送队列消息已经全部处理完毕,且对应的完成队列消息也全部被控制芯片接收完毕,故通过所述硬核处理器停止所述完成队列线程并释放至内存池。
若否,执行步骤S550:等待所述控制芯片接收完所有的所述完成队列消息。
具体的,若没有接收到了所有的完成队列消息,则需要等待直至之前生成的发送队列消息已经全部处理完毕,且对应的完成队列消息也全部被控制芯片接收完毕。
步骤S560:启动事件轮询线程,轮询所述异步存储事件,直至超过预设次数没有接收到所述异步存储事件的完成信息;停止所述事件轮询线程,并释放到线程池。
具体的,当所有的完成队列消息已经全部被控制芯片接收完毕后,启动事件轮询线程,轮询所述异步存储事件,直至超过预设次数(这里优选为1000次,以保证异步存储事件已经彻底完成,即外界数据已经全部存储至存储模块)没有接收到所述异步存储事件的完成信息;停止所述事件轮询线程,并释放到线程池。至此,整个外界数据传输存储的结束流程已全部完成。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第六实施例 中,基于第四实施例,所述记录参数包括待接收数据大小
Figure 744538DEST_PATH_IMAGE001
;步骤S230,包括如下步骤:
步骤S610:获取所述业务芯片的高速接口通道的数量
Figure 965434DEST_PATH_IMAGE002
具体的,控制芯片获取所述业务芯片的高速接口通道的数量
Figure 506006DEST_PATH_IMAGE002
步骤S620:基于所述待接收数据大小和所述高速接口通道的数量,计算得到预设 文件大小
Figure 773039DEST_PATH_IMAGE003
Figure 175202DEST_PATH_IMAGE004
具体的,这里的预设文件大小是通过各个高速接口通道接收的文件的大小,即每个高速接口通道负责接收的文件的大小,平均分配之后,能够充分利于各个高速通道接口的数据接收能力,保证接收速度。
步骤S630:通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件,且所述文件的大小为所述预设文件大小,所述文件创建完成时即占据所述存储模块的存储空间。
具体的,通过本实施例能够将待接收的外界数据基于高速通道接口平均分成若干个大小一致的预设文件,这样能够提升数据传输的效率。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第七实施例 中,基于第二至第六中任一实施例,所述记录参数包括待接收数据大小
Figure 14720DEST_PATH_IMAGE001
;步骤S230,之前 还包括如下步骤:
步骤S710:获取所述存储模块的剩余空间大小。
具体的,控制芯片获取所述存储模块的剩余空间大小。
步骤S720:判断所述待接收数据大小是否小于所述剩余空间大小。
具体的,控制芯片判断所述待接收数据大小是否小于所述剩余空间大小。
若是,执行步骤S230。
若否,步骤S730:获取所述存储模块中大于所述待接收数据大小的所有文件,剔除正在存储中的文件后标记为第一文件集。
具体的,若否,说明存储模块中的剩余空间已不足以继续存储待接收的外界数据,故需要对存储模块中已存储的文件进行选择性的删除,以腾出新的空间,为此,控制芯片获取所述存储模块中大于所述待接收数据大小的所有文件,这些文件再剔除正在存储中的文件后标记为第一文件集;这里的第一文件集即是所有大于待接收数据大小的所有文件,且不包含正在存储中的文件。
步骤S740:计算所述第一文件集中各文件的重要系数
Figure 273663DEST_PATH_IMAGE005
Figure 231254DEST_PATH_IMAGE006
其中,
Figure 702687DEST_PATH_IMAGE007
为当前日期,取值单位为日;
Figure 374144DEST_PATH_IMAGE008
为所述第一文件集中各文件的创建日期, 取值单位为日;
Figure 803988DEST_PATH_IMAGE009
为所述第一文件集中各文件的大小;
Figure 966985DEST_PATH_IMAGE010
为所述第一文件集中各文件截 止至当前的读取次数;
Figure 507688DEST_PATH_IMAGE011
为所述第一文件集中各文件的平均读取次数;
Figure 354421DEST_PATH_IMAGE012
为类型权值常 数,当文件为所述存储模块中类型占比最大的文件时取1,当文件不为所述存储模块中类型 占比最大的文件时取0;这里的重要系数越小,说明该对应的文件的重要程度越低,可以进 行删除。
具体的,该计算公式的意义是,创建日期越久的文件,其重要系数越小;文件在大于待接收数据的的大小的情况下,越小则说明其重要系数越小;文件的读取次数越少,其重要系数越小,文件如果不是本存储模块中类型占比最大的文件时,说明其重要系数越小,举例来说,若本存储模块主要是用来存储视频数据,视频数据的占比是最大的,那么其他非视频数据的重要系数要相对小,即相对不那么重要。
步骤S750:将所述重要系数最小的所述文件被标记为推荐删除文件。
具体的,控制芯片将所述重要系数最小的所述文件被标记为推荐删除文件。
步骤S760:判断所述推荐删除文件是否被删除。
具体的,控制芯片判断所述推荐删除文件是否被删除。
步骤S770:若被删除,执行步骤S240。
具体的,若被删除,则存储模块中的存储空间已经足够,故直接执行步骤S240。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第八实施例中,基于第三至第五中任一实施例,所述记录参数包括待接收数据优先等级,所述优先等级的取值为普通和高级中任一项;步骤S330,包括如下步骤:
步骤S810:获取所述业务芯片的所述高速接口通道等待所述外界数据的时长,标记为等待时长。
具体的,硬核处理器获取所述业务芯片的所述高速接口通道等待所述外界数据的时长,标记为等待时长。
步骤S820:判断所述优先等级是否为普通。
具体的,硬核处理器判断所述优先等级是否为普通。
若是,执行步骤S830:当所述等待时长大于第一预设时长时,不再等待所述业务芯片的所述高速接口通道获取所述外界数据完成。
具体的,若是普通,则当所述等待时长大于第一预设时长(例如10秒)时,不再等待所述业务芯片的所述高速接口通道获取所述外界数据完成。即当优先等级为普通时,业务芯片高速接口通道只等待10秒,10秒内还没有接收到外界数据,则放弃接收本次外界数据。
步骤S840:判断所述优先等级是否为高级。
具体的,硬核处理器判断所述优先等级是否为高级。
若是,执行步骤S850:当所述等待时长大于第二预设时长时,向外界数据源主机发送催发信息,保留1个所述高速接口通道并持续等待获取所述外界数据,其中,所述第二预设时长大于所述第一预设时长。
具体的,若是高级,当所述等待时长大于第二预设时长(如20秒)时,向外界数据源主机发送催发信息,保留1个所述高速接口通道并持续等待获取所述外界数据。即当优先等级为高级时,始终保持1个高速接口通道来等待外界数据的输入。
在本发明提出的一种嵌入式Linux的多通道高速数据传输存储方法的第九实施例中,基于第六实施例,步骤S420,之后包括如下步骤:
步骤S910:获取所述待接收数据的大小和所述存储模块的读写速度。
具体的,控制芯片获取所述待接收数据的大小和所述存储模块的读写速度。
步骤S920:基于所述待接收数据的大小和所述读写速度生成预估存储时长。
具体的,控制芯片基于所述待接收数据的大小和所述读写速度生成预估存储时长。
步骤S930:将所述预估存储时长显示于所述上位机。
具体的,将所述预估存储时长显示于所述上位机,以便于工作人员可实时知晓数据传输任务的进度。
本发明还提出一种嵌入式Linux的多通道高速数据传输存储系统,应用如上述中任一项所述的嵌入式Linux的多通道高速数据传输存储方法;所述嵌入式Linux的多通道高速数据传输存储系统包括硬核处理器、业务芯片、控制芯片和存储模块,所述业务芯片包括内存单元;所述硬核处理器分别通信连接于所述业务芯片、所述控制芯片和所述内存单元;所述存储模块通信连接于所述控制芯片。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,应用于嵌入式Linux的多通道高速数据传输存储系统;所述嵌入式Linux的多通道高速数据传输存储系统包括硬核处理器、业务芯片、控制芯片和存储模块,业务芯片为FPGA芯片的PL端,硬核处理器即是FPGA芯片的PS端;所述业务芯片包括内存单元;内存单元为BRAM,所述内存单元用于实现上述PS端到PL端的数据交互和共享,PL端负责接收外界数据,PS端负责操作接收的外界数据;FPGA芯片的PL端和PS端用于将外界数据存储至所述内存单元,以便于对外界数据进行后续操作;所述硬核处理器分别通信连接于所述业务芯片、所述控制芯片和所述内存单元;所述存储模块通信连接于所述控制芯片;所述控制芯片通过PCIe接口和所述硬核处理器通信连接;所述控制芯片运行有Linux操作系统;所述控制芯片还通信连接有上位机;所述嵌入式Linux的多通道高速数据传输存储方法,包括:
通过所述业务芯片获取外界数据,包括:通过所述控制芯片接收所述上位机发送的记录参数;
通过所述控制芯片和所述硬核处理器将所述外界数据存储至所述内存单元,其中,应用内存单元来对接收的外界数据进行转存,以使外界数据由内存单元转移至存储模块中;
通过所述控制芯片和所述硬核处理器将所述外界数据通过文件异步IO的方式存储至所述存储模块,其中,采用文件异步IO方式使数据不经过Linux的缓存,并减少文件IO的阻塞,以快速将数据写入到存储模块。
2.根据权利要求1所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述通过所述业务芯片获取外界数据,还包括:
通过所述硬核处理器生成并启动与所述记录参数对应的创建文件线程,并将各所述创建文件线程放入所述业务芯片的各高速接口通道;
通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件;
通过所述控制芯片实时判断所述内存单元中是否存在空闲队列;
若是,通过所述控制芯片启动发送队列线程,基于所述发送队列线程申请所述内存单元中的空闲队列,并基于所述空闲队列生成发送队列消息;
通过所述控制芯片将所述发送队列消息发送至所述硬核处理器;
基于所述发送队列消息通过所述硬核处理器控制所述业务芯片的所述高速接口通道获取所述外界数据。
3.根据权利要求2所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述发送队列消息包括缓存地址;所述通过所述控制芯片和所述硬核处理器将所述外界数据存储至所述内存单元,包括:
通过所述硬核处理器判断所述业务芯片的所述高速接口通道是否获取到了所述外界数据;
若是,通过所述硬核处理器将所述外界数据存储至所述内存单元中,且存储地址为所述缓存地址;
若否,等待所述业务芯片的所述高速接口通道获取所述外界数据;
通过所述硬核处理器启动完成队列线程,以生成与所述发送队列消息对应的完成队列消息;通过所述硬核处理器将所述完成队列消息发送至所述控制芯片。
4.根据权利要求3所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述通过所述控制芯片和所述硬核处理器将所述外界数据通过文件异步IO的方式存储至所述存储模块,包括:
通过所述控制芯片启动接收队列线程,以判断所述控制芯片是否接收到了所述完成队列消息;
若是,通过所述控制芯片调用所述Linux操作系统的libaio异步接口,以将所述内存单元内的所述外界数据预写到所述存储模块的所述文件中,随后启动异步存储事件;
判断所述异步存储事件是否已经完成;
若是,释放所述发送队列消息,以于所述内存单元中生成新的所述空闲队列。
5.根据权利要求4所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述通过所述控制芯片和所述硬核处理器将所述外界数据通过文件异步IO的方式存储至所述存储模块,之后还包括:
通过所述控制芯片接收所述上位机发送的停止创建指令;
基于所述停止创建指令,通过所述控制芯片停止所述发送队列线程并释放至内存池;
基于所述停止创建指令,通过所述控制芯片判断是否接收到了所有的所述完成队列消息;
若是,通过所述硬核处理器停止所述完成队列线程并释放至内存池;
若否,等待所述控制芯片接收完所有的所述完成队列消息;
启动事件轮询线程,轮询所述异步存储事件,直至超过预设次数没有接收到所述异步存储事件的完成信息;停止所述事件轮询线程,并释放到线程池。
6.根据权利要求4所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述记录参数包括待接收数据大小
Figure DEST_PATH_IMAGE001
;所述通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件,包括:
获取所述业务芯片的高速接口通道的数量
Figure 201153DEST_PATH_IMAGE002
基于所述待接收数据大小和所述高速接口通道的数量,计算得到预设文件大小
Figure DEST_PATH_IMAGE003
Figure 609001DEST_PATH_IMAGE004
通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件,且所述文件的大小为所述预设文件大小,所述文件创建完成时即占据所述存储模块的存储空间。
7.根据权利要求2至6中任一项所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述记录参数包括待接收数据大小
Figure DEST_PATH_IMAGE005
;通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件,之前还包括:
获取所述存储模块的剩余空间大小;
判断所述待接收数据大小是否小于所述剩余空间大小;
若是,执行所述通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件的步骤;
若否,获取所述存储模块中大于所述待接收数据大小的所有文件,剔除正在存储中的文件后标记为第一文件集;
计算所述第一文件集中各文件的重要系数
Figure 244512DEST_PATH_IMAGE006
Figure DEST_PATH_IMAGE007
其中,
Figure 573863DEST_PATH_IMAGE008
为当前日期,取值单位为日;
Figure DEST_PATH_IMAGE009
为所述第一文件集中各文件的创建日期,取值单位为日;
Figure 585812DEST_PATH_IMAGE010
为所述第一文件集中各文件的大小;
Figure DEST_PATH_IMAGE011
为所述第一文件集中各文件截止至当前的读取次数;
Figure 330390DEST_PATH_IMAGE012
为所述第一文件集中各文件的平均读取次数;
Figure DEST_PATH_IMAGE013
为类型权值常数,当文件为所述存储模块中类型占比最大的文件时取1,当文件不为所述存储模块中类型占比最大的文件时取0;
将所述重要系数最小的所述文件被标记为推荐删除文件;
判断所述推荐删除文件是否被删除;
若被删除,执行通过所述控制芯片在所述存储模块创建与各所述创建文件线程对应的文件。
8.根据权利要求3至5中任一项所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述记录参数包括待接收数据优先等级,所述优先等级的取值为普通和高级中任一项;所述等待所述业务芯片的所述高速接口通道获取所述外界数据,包括:
获取所述业务芯片的所述高速接口通道等待所述外界数据的时长,标记为等待时长;
判断所述优先等级是否为普通;
若是,当所述等待时长大于第一预设时长时,不再等待所述业务芯片的所述高速接口通道获取所述外界数据完成;
判断所述优先等级是否为高级;
若是,当所述等待时长大于第二预设时长时,向外界数据源主机发送催发信息,保留1个所述高速接口通道并持续等待获取所述外界数据,其中,所述第二预设时长大于所述第一预设时长。
9.根据权利要求6所述的一种嵌入式Linux的多通道高速数据传输存储方法,其特征在于,所述通过所述控制芯片调用所述Linux操作系统的libaio异步接口,以将所述内存单元内的所述外界数据预写到所述存储模块的所述文件中,随后启动异步存储事件,之后包括:
获取所述待接收数据的大小和所述存储模块的读写速度;
基于所述待接收数据的大小和所述读写速度生成预估存储时长;
将所述预估存储时长显示于所述上位机。
10.一种嵌入式Linux的多通道高速数据传输存储系统,其特征在于,应用如权利要求1-9中任一项所述的嵌入式Linux的多通道高速数据传输存储方法;所述嵌入式Linux的多通道高速数据传输存储系统包括硬核处理器、业务芯片、控制芯片和存储模块,所述业务芯片包括内存单元;所述硬核处理器分别通信连接于所述业务芯片、所述控制芯片和所述内存单元;所述存储模块通信连接于所述控制芯片。
CN202110508891.1A 2021-05-11 2021-05-11 嵌入式Linux的多通道高速数据传输存储方法及系统 Active CN112925485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110508891.1A CN112925485B (zh) 2021-05-11 2021-05-11 嵌入式Linux的多通道高速数据传输存储方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110508891.1A CN112925485B (zh) 2021-05-11 2021-05-11 嵌入式Linux的多通道高速数据传输存储方法及系统

Publications (2)

Publication Number Publication Date
CN112925485A CN112925485A (zh) 2021-06-08
CN112925485B true CN112925485B (zh) 2021-08-03

Family

ID=76174838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110508891.1A Active CN112925485B (zh) 2021-05-11 2021-05-11 嵌入式Linux的多通道高速数据传输存储方法及系统

Country Status (1)

Country Link
CN (1) CN112925485B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114356825B (zh) * 2021-12-17 2024-02-13 郑州信大捷安信息技术股份有限公司 一种基于芯片的spi双路通信方法和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN103488607A (zh) * 2013-09-07 2014-01-01 安徽华东光电技术研究所 嵌入式linux平台下SOC处理器与FPGA芯片的通信系统、方法
CN108459915A (zh) * 2018-01-31 2018-08-28 中电福富信息科技有限公司 一种适用于高并发场景的tcp通道管理系统及其方法
CN110806837A (zh) * 2018-08-06 2020-02-18 爱思开海力士有限公司 数据处理系统及其操作方法
CN112540951A (zh) * 2020-12-01 2021-03-23 南方电网数字电网研究院有限公司 一种适用于电力系统控制保护装置的专用主控芯片
CN112764949A (zh) * 2021-01-22 2021-05-07 苏州浪潮智能科技有限公司 一种异步IO实现Samba多线程多通道的方法、装置及介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101956702B1 (ko) * 2011-02-01 2019-03-12 주식회사 케이티 앱스토어와 무선 ap를 활용한 모바일 기기용 기업 어플리케이션 및 콘텐츠 유통 방법 및 시스템
US9699620B2 (en) * 2015-09-25 2017-07-04 Intel Corporation Transceiver selection system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN103488607A (zh) * 2013-09-07 2014-01-01 安徽华东光电技术研究所 嵌入式linux平台下SOC处理器与FPGA芯片的通信系统、方法
CN108459915A (zh) * 2018-01-31 2018-08-28 中电福富信息科技有限公司 一种适用于高并发场景的tcp通道管理系统及其方法
CN110806837A (zh) * 2018-08-06 2020-02-18 爱思开海力士有限公司 数据处理系统及其操作方法
CN112540951A (zh) * 2020-12-01 2021-03-23 南方电网数字电网研究院有限公司 一种适用于电力系统控制保护装置的专用主控芯片
CN112764949A (zh) * 2021-01-22 2021-05-07 苏州浪潮智能科技有限公司 一种异步IO实现Samba多线程多通道的方法、装置及介质

Also Published As

Publication number Publication date
CN112925485A (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
WO2017113688A1 (zh) 一种资源分配方法及装置
US20180332316A1 (en) Method and device for accelerating playback of a single-fragment video
US20180213268A1 (en) Video preloading method and apparatus
US8971511B2 (en) Method and apparatus for enhancing speaker selection
CN104219286B (zh) 流媒体处理方法、装置、客户端、cdn节点服务器及终端
CN112925485B (zh) 嵌入式Linux的多通道高速数据传输存储方法及系统
US11010094B2 (en) Task management method and host for electronic storage device
US9940732B2 (en) Implementing reduced video stream bandwidth requirements when remotely rendering complex computer graphics scene
CN108055311A (zh) Http异步请求方法、装置、服务器、终端和存储介质
WO2017101300A1 (zh) 一种通话方法、装置及终端
US12010197B2 (en) System, method and computer-readable medium for data accessing
WO2023246275A1 (zh) 语音消息的播放方法、装置、终端及存储介质
WO2015074623A1 (zh) 视频播放方法和装置、智能终端
US20200120366A1 (en) Video interaction management method and system, and computer-readable storage medium
CN106357557A (zh) 一种消息处理方法及装置
WO2019140963A1 (zh) 数据传输
CN102520897A (zh) 一种移动终端及其提高屏幕界面绘制速度的方法
WO2022151766A1 (zh) 一种io请求流水线处理设备、方法、系统及存储介质
CN113709214A (zh) 消息处理方法及装置、电子设备及存储介质
US20100121901A1 (en) Moving-picture processing device and moving-picture processing method
CN108521382A (zh) 一种消息发送方法、装置及系统
US9253441B2 (en) Conference system, program and conference method
WO2024109555A1 (zh) 一种资源动态调整方法及通信装置
WO2024125249A1 (zh) 码率适配方法、装置以及服务器
CN114900514B (zh) 一种远程截屏控制方法及系统

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
GR01 Patent grant
GR01 Patent grant