一种应用于无人机飞行数据的嵌入式文件存储系统及方法与流程

文档序号:12464997阅读:373来源:国知局
一种应用于无人机飞行数据的嵌入式文件存储系统及方法与流程

本申请涉及计算机技术领域,具体涉及一种应用于无人机飞行数据存储的嵌入式文件系统及方法。



背景技术:

无人机(Unmanned Aerial Vehicle),即无人驾驶飞机简称,是一种利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。从技术角度定义可以分为:无人直升机、无人固定翼机、无人多旋翼飞行器、无人飞艇、无人伞翼机等。按应用领域,可分为军用与民用。军用方面,无人机分为侦察机和靶机。民用方面主要应用在航拍、农业植保、测绘等领域,无人机+行业应用,是无人机真正的刚需,大大的拓展了无人机本身的用途。

在无人机中,主要依靠嵌入式文件系统。嵌入式文件系指的是嵌入式系统所应用的文件系统。嵌入式文件系统与通常所用的文件系统有较大的区别:平时所用的文件系统大致都是相同的,但嵌入式文件系统要为嵌入式系统的设计目的服务,不同用途的嵌入式操作系统下的文件系统在许多方面各不相同。目前大多数嵌入式系统采用的都是Linux,而嵌入式Linux常用的文件系统有Ext2fs第二版扩展文件系统、JFFS文件系统、YAFFS文件系统等。另外,由于嵌入式文件系统的载体是以Flash为主的存储介质,Flash的擦除次数是有限的,所以为了延长Flash的使用寿命,应该尽量减少对Flash的写入操作,尽量使对Flash的写入操作均匀分布在整个Flash上;由于各种存储器在分配使用一段时间后,会出现空缺和碎片数据,这就需要进行垃圾回收以保证存储器空间高效使用。Flash存储器以扇区为单位,垃圾回收也应该以扇区为单位,嵌入式Flash文件系统回收要先移动扇区数据,再擦除整个扇区;要求文件系统在频繁的文件操作(例如:新建、删除、截断等)下能够保持较高的读写性能,要求低碎片化;要求掉电安全,无数据的丢失现象。

在无人机飞行过程中,有很多重要的数据必须能够实时的记录并保存下来,比如飞行的参数(高度、角度、坐标等)、电源电压数据、时间等信息。当飞行器在某一时间发生了故障或特殊情况,技术人员可以导出之前实时保存下来的数据进行解析,以还原当时的飞行状态。在如上所述的嵌入式文件系统中,目前针对Flash,特别是Nor Flash等空间较小的存储器件,没有与之相适应的文件系统,这对需要存储连续数据文件以及获取文件目录、某特定文件对应的内容等带来了不便。



技术实现要素:

本发明要解决的技术问题是,提供能够从CAN总线上实时存取飞行器中的各种数据,并能在后期由上位机软件来读取和解析Flash中的相关数据的文件存储系统,该存储系统的存储和读取文件的效率更高,而且便于移植,有较好的通用性。

解决上述技术问题,本发明提供了一种应用于无人机飞行数据的嵌入式文件存储系统,包括:PMU电源管理单元和Flash文件储存单元,

所述PMU与CAN总线连接用以获取飞行数据,且与所述PMU连接的所述Flash文件储存单元按照如下格式存放所述飞行数据:Flash信息区、Flash索引区和Flash数据区,

所述Flash信息区,用以存储Flash器件自身信息;

所述Flash索引区,用以存储Flash索引范围内的内容;

所述Flash数据区,用以存储从所述CAN总线上实时获取的飞行数据;

还包括:用以定义不同的飞行数据的ID,并根据所述ID打包后储放的数据打包单元。

进一步,所述Flash文件储存单元还与上位机连接,所述上位机用以读取从CAN总线上进入所述PMU的飞行数据。

进一步,所述Flash索引区还用以按照如下格式建立索引格式:

索引头+索引编码+起始页码+结束页码+索引建立时间+索引修改时间+保留+校验码+结束符,

其中,所述索引头/结束符为设定格式,所述索引编码表示当前索引号,所述起始页码表示索引对应数据开始存储所在的Page页码号,所述结束页码表示断电前最后一次数据或者已到数据块大小上限,所述索引建立时间/所述索引修改时间为该索引创建的时间以及索引最近一次被修改的时间,所述保留表示填充为0,所述校验码表示对索引头~保留区的CRC校验值;

在所述Flash索引区中设定的起始和结束Page之间的存储空间为固定值。

进一步,所述Flash数据区还用以按照如下格式建立数据格式:

消息头+ID_x+ID_y+DATA_x/DATA_y+保留+校验码+结束符,

其中,所述DATA_x/DATA_y表示数据类型x/y的数据,ID_x/ID_y表示数据类型x/y,所述校验码表示对消息头、ID、DATA、REV的CRC校验值,所述REV表示保留区的最后两个字节为电源电压数据;

在所述Flash数据区中将所述CAN总线中实时获取的数据最大限度填满在一个Page内,再进行校验。

进一步,在所述Flash文件储存单元中,所述Flash信息区不变,在所述Flash索引区和所述Flash数据区中进行分配划分Flash空间。

进一步,所述数据打包单元还用以按照如下方法对所述Flash数据区中的数据进行打包:

通过对Page的256个字节的划分为:2bytes消息头+40bytes类型区+210bytes数据区+2bytes CRC+2bytes结束符,并根据上述划分判定新数据的类型和/或长度。

基于上述,本发明还提供了一种应用于无人机飞行数据的嵌入式文件存储方法,将Flash文件分为:Flash信息区、Flash索引区和Flash数据区,还包括如下步骤:

在上电后进行初始化,并开始储存CAN总线上的实时飞行数据;

在所述Flash信息区对应写入Flash器件信息,从所述Flash索引区获取索引号,并在所述Flash数据区内计算得到数据包的储存地址,

以及,对Flash数据区储放的数据进行打包后存放校验通过的数据。

进一步,在Flash索引区进行的步骤如下:

读取索引号,判断是否为第一次上电,若是则将索引号归零;

判断所述索引号是否超限,若否则计算索引地址,增加页码号然后更新索引内容/数据地址;若是则重新写入初始化索引后,再更新数据地址。

进一步,在Flash数据区进行的步骤如下:

从CAN纵向实时获取数据,对所述数据进行打包并写入数据,对应增加页码号并判断是否超限,

若是,则将页码号规定后进行增加索引号后,再更新索引内容;

若否,则更新并写入索引内容,同时更新数据地址。

进一步,所述打包进一步包括步骤如下:

根据数据类型和长度,判断所述类型空间是否充足,

若否,则计算page的CRC填充结束符;

若是,则继续判断所述长度空间是否充足,

若充足,则在类型区填充数据类型和该类型对应的长度,并更新剩余空间;

和/或,在数据区填充数据类型和该类型对应的数据,并更新剩余空间;

遍历上述步骤,继续判断类型空间是否充足

本发明的有益效果:

本发明中的应用于无人机飞行数据的嵌入式文件存储系统,该存储系统的存储和读取文件的效率更高,而且便于移植,有较好的通用性。另外,本系统内可从CAN总线上实时存取飞行器的各种数据,并由上位机软件来读取和解析Flash中的相关数据,以还原飞行器的飞行状态。特别是对于Nor Flash等空间较小的存储器件,提供与之相适应的文件系统,便于存储连续数据文件以及获取文件目录、某特定文件对应的内容等。

附图说明

图1是本发明中的应用于无人机飞行数据的嵌入式文件存储系统结构示意图;

图2是图1中的功能操作流程示意图;

图3是图1中Flash信息区的操作流程示意图;

图4是图1中Flash索引区的操作流程示意图;

图5是图1中Flash数据区的操作流程示意图;

图6是图1中打包单元的操作流程示意图。

具体实施方式

现在将参考一些示例实施例描述本公开的原理。可以理解,这些实施例仅出于说明并且帮助本领域的技术人员理解和实施例本公开的目的而描述,而非建议对本公开的范围的任何限制。在此描述的本公开的内容可以以下文描述的方式之外的各种方式实施。

如本文中所述,术语“包括”及其各种变体可以被理解为开放式术语,其意味着“包括但不限于”。术语“基于”可以被理解为“至少部分地基于”。术语“一个实施例”可以被理解为“至少一个实施例”。术语“另一实施例”可以被理解为“至少一个其它实施例”。

可以理解,本申请的电源管理单元(Power Management Unit),是一种高度集成的、针对便携式应用的电源管理方案,即将传统分立的若干类电源管理芯片等器件整合在单个的封装之内,这样可实现更高的电源转换效率和更低功耗,及更少的组件数以适应缩小的板级空间。

在本申请中,循环冗余校验(Cyclic Redundancy Check,CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

图1是本发明中的应用于无人机飞行数据的嵌入式文件存储系统结构示意图;其包括:PMU电源管理单元1和Flash文件储存单元2,所述PMU与CAN总线连接用以获取飞行数据,且与所述PMU连接的所述Flash文件储存单元2按照如下格式存放所述飞行数据:Flash信息区21、Flash索引区22和Flash数据区23,所述Flash信息区,用以存储Flash器件自身信息;所述Flash索引区,用以存储Flash索引范围内的内容;所述Flash数据区,用以存储从所述CAN总线上实时获取的飞行数据;还包括:用以定义不同的飞行数据的ID,并根据所述ID打包后储放的数据打包单元24。所述Flash文件储存单元2还与上位机3连接,所述上位机用以读取从CAN总线上进入所述PMU的飞行数据。此外,在所述Flash文件储存单元中,所述Flash信息区不变,在所述Flash索引区和所述Flash数据区中进行分配划分Flash空间。本系统内可从CAN总线上实时存取飞行器的各种数据,并由上位机软件来读取和解析Flash中的相关数据,以还原飞行器的飞行状态。特别是对于Nor Flash等空间较小的存储器件,提供与之相适应的文件系统,便于存储连续数据文件以及获取文件目录、某特定文件对应的内容等。

在一些实施例中,陀螺仪数据是单独发送到总线上的,并顺序发送到CAN总线上的,若数据不满8字节,PMU会填充补满8字节。

图2是图1中的功能操作流程示意图;其包括:将Flash文件分为:Flash信息区、Flash索引区和Flash数据区,还包括如下步骤:

在上电后进行初始化,并开始储存CAN总线上的实时飞行数据;

在所述Flash信息区对应写入Flash器件信息,从所述Flash索引区获取索引号,并在所述Flash数据区内计算得到数据包的储存地址,

以及,对Flash数据区储放的数据进行打包后存放校验通过的数据。

具体地,上述步骤具体为:

步骤S100上电,在系统上电后即就开始存CAN上的实时数据;

步骤S101系统模块初始化,

步骤S102获取信息区标志,如飞行速度、高度、角度、时间、电压等,不同的数据有自己特定的信息区标志;

步骤S103信息区是否已写,若否则进入步骤S104;若是则进入步骤S105;

步骤S104设置信息区数据,存储Flash器件的描述;

步骤S105获取最新索引号,即当前上电后的新索引号

步骤S106获取最新页码,

步骤S107计算下一个数据包的储存地址,决定将数据包储存在哪个地址下;

步骤S108地址是否超范围,若否则进入步骤S111,若是则进入步骤S109;

步骤S109从起始地址覆盖之前的存储数据,由于Flash文件具有可擦写性;

步骤S110CAN实时数据,

步骤S111数据是否打包完成,若否则继续采集CAN实时数据,若是则进入步骤S112;

步骤S112数据存储不校验,对消息头、ID、DATA、REV的CRC校验值,校验长度为(256-4);

步骤S113该索引中页码是否超出范围,若是则进入步骤S114,若否则进入步骤S115;

步骤S114创建新的索引号;

步骤S115更新索引内容;

步骤S116更新最新索引号和索引内容;

图3是图1中Flash信息区的操作流程示意图;Flash信息区的具体操作流程如下:

步骤S200开始

步骤S201读取信息区数据

步骤S202器件名称是否正确,若是则进入步骤S207,若否则进入步骤S203;

步骤S203第一上电标志,

步骤S204写入信息区数据,

步骤S205读取信息去数据,

步骤S206器件类型是否正确,若是则进入步骤S207;

步骤S207信息区数据已正确写入;

步骤S208结束。

在一些实施例中,如图4所示是图1中Flash索引区的操作流程示意图;所述Flash索引区还用以按照如下格式建立索引格式:

索引头+索引编码+起始页码+结束页码+索引建立时间+索引修改时间+保留+校验码+结束符,

其中,所述索引头/结束符为设定格式,所述索引编码表示当前索引号,所述起始页码表示索引对应数据开始存储所在的Page页码号,所述结束页码表示断电前最后一次数据或者已到数据块大小上限,所述索引建立时间/所述索引修改时间为该索引创建的时间以及索引最近一次被修改的时间,所述保留表示填充为0,所述校验码表示对索引头~保留区的CRC校验值;在所述Flash索引区中设定的起始和结束Page之间的存储空间为固定值。

具体地,Flash索引区可以进行如下的格式划分储存空间,索引区主要是存储Flash索引的内容,索引范围为index0~index4091,每个索引中的页码范围为page0~page4095。

索引头:0x8A8A

索引编码:当前索引号

起始页码:该索引对应数据开始存储所在的Page号

结束页码:断电前最后一次数据或者已到数据块大小上限

索引建立时间:该索引创建的时间,如2016.02.06 21:18:26

索引修改时间:该索引最近一次被修改的时间,如2016.02.07 12:56:03

保留:填充0

校验码:对索引头~保留区的CRC校验值,校验长度(256-4)

结束符:0xC7C7

在一些实施例中,索引中所设定的起始和结束Page之间的存储空间是一定的,设定为1M。比如,在索引0中的起始页码为Page0,随着数据的连续存储,Page不断增加,每次增加都必须要更新一次索引0。若Page大于4095(4096个Page大小为1MB),则需要新建一个索引1,起始Page为4096,后续处理步骤相同。

具体步骤如下:

步骤S301开始

步骤S302读取最新索引号;

步骤S303索引号是否超出限度;若是则进入步骤S304;

步骤S304索引号归零;

步骤S305写入索引号;

步骤S306初始化索引0内容;

步骤S307写入索引0的内容;

步骤S308是否为第一次上电,若是则返回至步骤S304;若否则进入步骤S302;

步骤S309计算索引地址;

步骤S310读取并校验是否正确;

步骤S311读取当前索引中的页码号;

步骤S312页码号自增

步骤S313页码号是否超出限制,若是则进入步骤S315;

步骤S314写入索引号;

步骤S315页码号归零;

步骤S316索引号自增;

步骤S317索引号是否超限制;若是则返回步骤步骤S304;若否则进入步骤S314;

步骤S318更新索引内容;

步骤S319写入索引内容;

步骤S320更新地址数据;

步骤S321结束。

在一些实施例中,如图5所示是图1中Flash数据区的操作流程示意图;所述Flash数据区还用以按照如下格式建立数据格式:

消息头+ID_x+ID_y+DATA_x/DATA_y+保留+校验码+结束符,

其中,所述DATA_x/DATA_y表示数据类型x/y的数据,ID_x/ID_y表示数据类型x/y,所述校验码表示对消息头、ID、DATA、REV的CRC校验值,所述REV表示保留区的最后两个字节为电源电压数据;

在所述Flash数据区中将所述CAN总线中实时获取的数据最大限度填满在一个Page内,再进行校验。

具体地,Flash数据区可以进行如下的格式划分储存空间,数据区主要是存储从CAN总线上实时获取的飞行数据,一次连续可存储126976个Page数据,若当前数据包存储起始地址大于0x01FFFFFF时,从0x00100000覆盖存储。

消息头:0x7B7B

ID_x:数据类型x

ID_y:数据类型y

DATA_x、DATA_y:数据类型x的数据、数据类型y的数据

保留:填充0x00

校验码:对消息头、ID、DATA、REV的CRC校验值,校验长度为(256-4)

结束符:0xD8D8

在一些实施例中,对于数据区,将CAN模块实时获取的数据尽可能填满一个Page,再进行校验,打包成256个字节。若当前数据包存储起始地址大于0x01FFFFFF时,从0x00100000覆盖存储。

具体数据区的操作步骤如下:

步骤S400开始

步骤S401CAN实时获取数据

步骤S402数据有效并准备好,若是则进入步骤S403,若否则继续进行步骤S401;

步骤S403开始打包数据;

步骤S404写入数据;

步骤S405读取并校验是否正确;

步骤S406更新数据地址;

步骤S407写入索引内容;

步骤S408更新索引内容;

步骤S409页码号是否超出限制;

步骤S410页码号自增;

步骤S411写入索引号;

步骤S412索引号是否超出限制;

步骤S413索引号自增;

步骤S414页码号归零;

步骤S415写入索引0内容;

步骤S416初始化索引0内容;

步骤S417写入索引号;

步骤S418索引号归零;

在一些实施例中,如图6所示是图1中打包单元的操作流程示意图,所述数据打包单元还用以按照如下方法对所述所述Flash数据区中的数据进行打包:通过对Page的256个字节的划分为:2bytes消息头+40bytes类型区+210bytes数据区+2bytes CRC+2bytes结束符,并根据上述划分判定新数据的类型和/或长度。打包单元根据CAN上实时获取的数据,定义不同数据的ID,不同ID的数据长度目前都是8字节,不断存储,最大限度充满一个page。

数据打包的具体操作流程如下:

步骤S500开始

步骤S501判定新的数据类型和长度;

步骤S502类型空间是否充足;若是则进入步骤S503;若否则进入步骤S507;

步骤S503数据空间是否充足;若是则进入步骤S504;

步骤S504类型区填充ID_x和LEN_x,并更新剩余空间;

步骤S505数据区填充ID_x和DATA_x,并更新剩余空间;

步骤S506类型空间是否充足

步骤S507计算page的CRC填充结束符;

步骤S508结束。

虽然本公开以具体结构特征和/或方法动作来描述,但是可以理解在所附权利要求书中限定的本公开并不必然限于上述具体特征或动作。而是,上述具体特征和动作仅公开为实施权利要求的示例形式。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1