System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于MCU的数据存储方法及终端设备技术_技高网

一种基于MCU的数据存储方法及终端设备技术

技术编号:41282216 阅读:5 留言:0更新日期:2024-05-11 09:32
本发明专利技术涉及一种基于MCU的数据存储方法及终端设备,该方法中包括:设置物理页头部和逻辑页头部;获取最新记录存储地址;当接收到待存储数据时,判断待写入的物理页的剩余空间是否大于该待存储数据的大小,如果不大于,则切换至下一个物理页进行存储;否则,判断其与上一次存储数据的数据大小和存储时间间隔是否有一者发生变化,如果是,则切换至下一个逻辑页进行存储;否则,在当前逻辑页进行存储。本发明专利技术重新设计了数据的存储格式,并且定义了逻辑页的概念,在存储数据大小变化或者存储间隔变化时只需更换逻辑页即可,无需更换物理页,不会造成浪费。

【技术实现步骤摘要】

本专利技术涉及数据存储领域,尤其涉及一种基于mcu的数据存储方法及终端设备。


技术介绍

1、现有的基于mcu(microcontroller unit,微控制器)的数据存储方式具有以下问题:

2、(1)客户经常会有存储传感器数据的需求,并且存储的数据大小根据客户配置是变长的,而mcu的一般存储数据的格式为“时间戳(4字节)+数据(n字节)”,其中n是一个固定的常量,无法满足存储不定长数据的需求,并且每次存储时都要存储时间戳,会造成空间的浪费,存储效率低下。

3、(2)如果不同长度的数据存储在同一页,那么在导出时将无法解析数据的长度,能想到的一个办法就是存储的长度变化时就换页存储,但是换页存储会导致很大的浪费,比如一个页的大小是2k,刚刚存了32字节后存储的大小就变了,就要切到下一页存储,这样子就浪费了2016个字节,这种浪费在资源有限的mcu上往往是不可忍受的。

4、(3)若是设备刚上电时还未成功获取到时间,这时存储的数据时间是错误的,假设过一段时间后设备又获取到正确的时间了,这时候存储下来的数据有些时间是错的,有些是正确的,后面导出时无法将错误的时间进行修正。

5、(4)单片机写入的最小单元是8字节(很多mcu是这样),当存储的数据不是八字节的倍数时,需要强制对齐到8的倍数,这样也会造成很大的空间浪费。比如数据长度是9字节,这时候实际需要占用16字节,浪费率高达43%。

6、(5)裸机mcu上没有使用文件系统,不能实现flash的均衡磨损,因为flash是有寿命的,不可能往同一个页一直写入,否则用不了多久该页就会损坏。


技术实现思路

1、为了解决上述问题,本专利技术提出了一种基于mcu的数据存储方法及终端设备。

2、具体方案如下:

3、一种基于mcu的数据存储方法,包括以下步骤:

4、s101:设置物理页头部和逻辑页头部;物理页头部包括三个字段,分别用于表示物理页的使用状态,使用状态包括:可以使用、正在使用和已经写满;逻辑页头部中字段包括逻辑页的起始时间戳、存储时间间隔、记录大小和下一个逻辑页的起始地址;

5、s102:判断待存储的分区是否已配置过物理页头部,如果是,获取分区中的最新记录存储地址;否则,对分区进行格式化,以完成对分区中的各页的物理页头部的配置后,再获取分区中的最新记录存储地址;

6、s103:当接收到待存储数据时,将使用状态为正在使用的物理页作为待写入的物理页,并结合最新记录存储地址判断待写入的物理页的剩余空间是否大于该待存储数据的大小,如果是,进入s103;否则,切换至下一个物理页进行存储;

7、s104:判断待存储数据与上一次存储数据的数据大小和存储时间间隔是否有一者发生变化,如果是,则切换至下一个逻辑页进行存储;否则,在当前逻辑页进行存储。

8、进一步的,当物理页头部的第一个字段被正确填充时,表示物理页处于可以使用状态;当物理页头部的前两个字段被正确填充时,表示物理页处于正在使用状态;当物理页头部的三个字段均被正确填充时,表示物理页处于已经写满状态。

9、进一步的,判断待存储的分区是否已配置过物理页头部的方法为:判断分区的所有物理页中的物理页头部的第一个字段是否均被正确填充,如果是,则判定已配置过物理页头部;如果有至少两个物理页未被正确填充,则判定未配置过物理页头部;如果只有一个物理页未被正确填充,则将未被正确填充的填充内容进行修正。

10、进一步的,分区中的最新记录存储地址的获取方法为:以待存储数据的数据大小为最小单元,从前往后遍历待写入的物理页,当第一次出现该最小单元的内容为空时,将该最小单元对应的起始地址作为最新记录存储地址。

11、进一步的,当接收到待存储数据后先进行缓存,缓存的数据达到n的倍数字节后,将缓存的数据压入队列,等待写入分区;当队列中的数据写入完毕后将其弹出,再进行下一次的数据压入。

12、进一步的,当分区的最后一个物理页被写满时,擦除该分区的第一个物理页,将待存储数据写入该第一个物理页。

13、进一步的,当切换至下一个物理页进行存储时,判断下一个物理页的使用状态是否为可以使用,如果不是,则将下一个物理页中的数据清空后,再将下一个物理页的使用状态更改为正在使用后,将上一个物理页的使用状态更改为已经写满。

14、进一步的,数据存储格式包括掩码字段加数据字段,掩码字段包括一个字节,其中的每一位均表示一个传感器的使能状态。

15、进一步的,在切换至下一个逻辑页进行存储时,首先构建对应的逻辑页头部,并将上一次存储数据的存储时间作为该逻辑页的起始时间戳,同时将待存储数据的数据大小和存储时间间隔分别写入逻辑页头部的记录大小和存储时间间隔字段,并将该逻辑页的起始地址填入上一个逻辑页的下一个逻辑页的起始地址的字段内。

16、一种终端设备,包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本专利技术实施例上述的方法的步骤。

17、本专利技术采用如上技术方案,重新设计了数据的存储格式,并且定义了逻辑页的概念,在存储数据大小变化或者存储间隔变化时只需更换逻辑页即可,无需更换物理页,不会造成浪费。

本文档来自技高网...

【技术保护点】

1.一种基于MCU的数据存储方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于MCU的数据存储方法,其特征在于:当物理页头部的第一个字段被正确填充时,表示物理页处于可以使用状态;当物理页头部的前两个字段被正确填充时,表示物理页处于正在使用状态;当物理页头部的三个字段均被正确填充时,表示物理页处于已经写满状态。

3.根据权利要求2所述的基于MCU的数据存储方法,其特征在于:判断待存储的分区是否已配置过物理页头部的方法为:判断分区的所有物理页中的物理页头部的第一个字段是否均被正确填充,如果是,则判定已配置过物理页头部;如果有至少两个物理页未被正确填充,则判定未配置过物理页头部;如果只有一个物理页未被正确填充,则将未被正确填充的填充内容进行修正。

4.根据权利要求1所述的基于MCU的数据存储方法,其特征在于:分区中的最新记录存储地址的获取方法为:以待存储数据的数据大小为最小单元,从前往后遍历待写入的物理页,当第一次出现该最小单元的内容为空时,将该最小单元对应的起始地址作为最新记录存储地址。

5.根据权利要求1所述的基于MCU的数据存储方法,其特征在于:当接收到待存储数据后先进行缓存,缓存的数据达到N的倍数字节后,将缓存的数据压入队列,等待写入分区;当队列中的数据写入完毕后将其弹出,再进行下一次的数据压入。

6.根据权利要求1所述的基于MCU的数据存储方法,其特征在于:当分区的最后一个物理页被写满时,擦除该分区的第一个物理页,将待存储数据写入该第一个物理页。

7.根据权利要求1所述的基于MCU的数据存储方法,其特征在于:当切换至下一个物理页进行存储时,判断下一个物理页的使用状态是否为可以使用,如果不是,则将下一个物理页中的数据清空后,再将下一个物理页的使用状态更改为正在使用后,将上一个物理页的使用状态更改为已经写满。

8.根据权利要求1所述的基于MCU的数据存储方法,其特征在于:数据存储格式包括掩码字段加数据字段,掩码字段包括一个字节,其中的每一位均表示一个传感器的使能状态。

9.根据权利要求1所述的基于MCU的数据存储方法,其特征在于:在切换至下一个逻辑页进行存储时,首先构建对应的逻辑页头部,并将上一次存储数据的存储时间作为该逻辑页的起始时间戳,同时将待存储数据的数据大小和存储时间间隔分别写入逻辑页头部的记录大小和存储时间间隔字段,并将该逻辑页的起始地址填入上一个逻辑页的下一个逻辑页的起始地址的字段内。

10.一种终端设备,其特征在于:包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1~9中任一所述方法的步骤。

...

【技术特征摘要】

1.一种基于mcu的数据存储方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于mcu的数据存储方法,其特征在于:当物理页头部的第一个字段被正确填充时,表示物理页处于可以使用状态;当物理页头部的前两个字段被正确填充时,表示物理页处于正在使用状态;当物理页头部的三个字段均被正确填充时,表示物理页处于已经写满状态。

3.根据权利要求2所述的基于mcu的数据存储方法,其特征在于:判断待存储的分区是否已配置过物理页头部的方法为:判断分区的所有物理页中的物理页头部的第一个字段是否均被正确填充,如果是,则判定已配置过物理页头部;如果有至少两个物理页未被正确填充,则判定未配置过物理页头部;如果只有一个物理页未被正确填充,则将未被正确填充的填充内容进行修正。

4.根据权利要求1所述的基于mcu的数据存储方法,其特征在于:分区中的最新记录存储地址的获取方法为:以待存储数据的数据大小为最小单元,从前往后遍历待写入的物理页,当第一次出现该最小单元的内容为空时,将该最小单元对应的起始地址作为最新记录存储地址。

5.根据权利要求1所述的基于mcu的数据存储方法,其特征在于:当接收到待存储数据后先进行缓存,缓存的数据达到n的倍数字节后,将缓存的数据压入队列,等待写入分区;当队列中的数据写入完毕后将其弹出,再进行下一次的...

【专利技术属性】
技术研发人员:廖剑明蔡志斌
申请(专利权)人:厦门星纵物联科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1