一种Flash裸分区的读写方法、装置和存储介质与流程

文档序号:37859068发布日期:2024-05-07 19:33阅读:13来源:国知局
一种Flash裸分区的读写方法、装置和存储介质与流程

本技术涉及数据存储,尤其涉及一种flash裸分区的读写方法、装置和存储介质。


背景技术:

1、在嵌入式系统领域,由于闪速flash存储器在设备中扮演着重要的角色,我们经常需要对其进行裸分区的读写操作。这是因为嵌入式设备的存储空间相对有限,通常在几百kb至几m之间,无法直接导入完整的文件系统。

2、裸分区的读写操作不同于常规的文件系统操作,因为它们没有文件系统的辅助,导致难以确定数据的起始点。由于缺乏明显的标识来区分不同的数据条目,例如文件或记录,我们无法实现类似于文件系统的数据读写和检索。这意味着我们无法单独读取或写入flash存储器中的特定数据部分,而必须进行整块读取或整块写入。

3、为了解决这个问题,一种常见的方法是使用特定的数据结构或标记来识别不同的数据记录。这样可以在读取和写入时准确地找到数据的起始和结束位置。但是,这种方法可能会增加存储空间的占用和操作复杂性。总的来说,裸分区的flash读写是一个挑战,特别是在嵌入式环境中。我们需要采取有效的方法来管理和检索存储在flash中的数据,以确保高效的数据访问和可靠的存储。


技术实现思路

1、本技术提供一种flash裸分区的读写方法、装置和存储介质,能够基于一定的数据结构设计,实现类似文件系统的数据读写与检索,实现对flash裸分区数据的灵活读写和校验操作,以提高flash裸分区数据的存储和检索的可靠性和效率。

2、第一方面,本技术提供了一种flash裸分区的读写方法,所述方法包括:

3、读取所述flash裸分区中的第一块数据;

4、解析所述第一块数据的包头信息,所述包头信息包括数据大小和校验和;

5、根据所述第一块数据中的包头信息确定第一块数据的完整性是否正常;

6、在确定所述第一块数据的完整性正常的情况下,解析所述第一块数据中的一个或多个节点的数据元素;

7、将所述一个或多个节点的数据元素加入预设的链表中,所述链表用于查询所述flash裸分区中的数据元素。

8、在通常的文件系统中,每个文件都有文件头信息,用于标识文件的开始位置、文件大小、创建时间等元数据信息。然而,在裸分区中,没有文件系统的帮助,无法准确地找到数据的起始点。而如果无法准确判断数据的起始点,可能会导致数据的丢失或覆盖,从而损坏存储在flash中的数据。

9、本技术提供的方法通过对存储的数据结构进行创新,给每一块的数据新增了包头信息,便于解析和对数据的整合,进一步的,通过链表对每一块数据中的节点数据进行标记,通过链表的信息存储构造,以便于对每一块数据中的节点数据进行单个解析,这样的情况下,无需整块或整页的读取,可以实现单个节点的数据元素的读取。

10、在第一方面的又一种可选的实施方式中,所述方法还包括:

11、确定所述第一块数据有数据新增;

12、编辑新增的数据的节点的包头信息;

13、将所述新增的数据加入至所述链表;

14、根据所述新增的数据更新所述第一块数据的包头信息;

15、根据所述链表,将所述flash裸分区中的原有的第一块数据擦除,以写入更新后的第一块数据。

16、在第一方面的又一种可选的实施方式中,所述解析所述第一块数据中的一个或多个节点的数据元素,包括:

17、读取和解析所述一个或多个节点中的第一节点的包头信息,以确定读取的节点数据的完整性是否正常,所述第一节点的包头信息包括识别id、数据大小和校验和;

18、在确定所述节点数据的完整性正常的情况下,获取所述第一节点的数据元素。

19、在第一方面的又一种可选的实施方式中,所述方法还包括:

20、确定所述第一节点的数据元素的大小是否小于第一块数据的数据大小;

21、在确定所述第一节点的数据元素小于第一块数据的数据大小情况下,将所述第一节点的数据元素按顺序加入至预设的链表中;

22、在确定所述第一块数据包括除第一节点以外的其它节点的情况下,读取和解析第二节点的包头信息,所述第二节点为所述第一块数据的多个节点中除所述第一节点以外的其它节点;

23、获取所述第二节点的数据元素;

24、确定所述第二节点的数据元素的大小是否小于所述第一块数据的数据大小;

25、在确定所述第二节点的数据元素的大小小于所述第一块数据的数据大小的情况下,将所述第二节点的数据元素按照顺序加入至所述预设的链表中;

26、根据所述第一块数据的被延伸使用的总长度确定所述第一块数据解析结束。

27、在第一方面的又一种可选的实施方式中,所述将所述一个或多个节点的数据元素的映射加入预设的链表,包括:

28、在解析所述一个或多个节点的数据元素时,根据所述一个或多个节点的包头信息中的识别id,生成与所述识别id对应的附属标记和第一密钥;

29、将所述第一密钥与所述链表中预设的第二密钥进行比对,所述链表为单链表;

30、在比对成功的情况下,将所述一个或多个节点的数据元素的映射,以及与所述一个或多个节点的包头信息中的识别id对应的附属标记加入至所述链表,所述附属标记用于查询与对应节点数据所连接的下一节点的数据元素。

31、在第一方面的又一种可选的实施方式中,所述第一块数据的包头信息还包括标记位,其中,所述标记位用于标记第二块数据是否被使用;所述方法还包括:

32、在确定所述第一块数据的包头信息中的标记位表示还有第二块数据的情况下,获取并解析所述第二块数据的包头信息;

33、根据所述第二块数据的包头信息,解析所述第二块数据中的一个或多个节点的数据元素;

34、将所述第二块数据中的一个或多个节点的数据元素加入所述链表中。

35、在第一方面的又一种可选的实施方式中,在所述读取所述flash裸分区中的第一块数据之前,所述方法还包括:

36、确定所述flash裸分区中是否有预设的分区;

37、在确定所述flash裸分区中有预设的分区的情况下,将所述flash裸分区的分区进行初始化。

38、第二方面,本技术实施例提供一种flash裸分区的读写装置,所述装置至少包括读取单元、第一解析单元、第一确定单元、第二解析单元和第一加入单元。该flash裸分区的读写装置用于实现第一方面任一项实施方式所描述方法,其中读取单元、第一解析单元、第一确定单元、第二解析单元和第一加入单元的介绍如下:

39、读取单元,用于读取所述flash裸分区中的第一块数据;

40、第一解析单元,用于解析所述第一块数据的包头信息,所述包头信息包括数据大小和校验和;

41、第一确定单元,用于根据所述第一块数据中的包头信息确定第一块数据的完整性是否正常;

42、第二解析单元,用于在确定所述第一块数据的完整性正常的情况下,解析所述第一块数据中的一个或多个节点的数据元素;

43、第一加入单元,用于将所述一个或多个节点的数据元素加入预设的链表中,所述链表用于查询所述flash裸分区中的数据元素。

44、在通常的文件系统中,每个文件都有文件头信息,用于标识文件的开始位置、文件大小、创建时间等元数据信息。然而,在裸分区中,没有文件系统的帮助,无法准确地找到数据的起始点。而如果无法准确判断数据的起始点,可能会导致数据的丢失或覆盖,从而损坏存储在flash中的数据。

45、本技术提供的方法通过对存储的数据结构进行创新,给每一块的数据新增了包头信息,便于解析和对数据的整合,进一步的,通过链表对每一块数据中的节点数据进行标记,通过链表的信息存储构造,以便于对每一块数据中的节点数据进行单个解析,这样的情况下,无需整块或整页的读取,可以实现单个节点的数据元素的读取。

46、第三方面,本技术实施例提供一种flash裸分区的读写设备,该flash裸分区的读写设备包括处理器、存储器和通信接口;存储器中存储有计算机程序;处理器执行计算机程序时,所述通信接口用于发送和/或接收数据,该flash裸分区的读写设备可执行前述第一方面或者第一方面的任一种可能的实现方式所描述的方法。

47、第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储计算机程序,当所述指令在至少一个处理器上运行时,实现前述第一方面或者第一方面的任一种可选的方案所描述的方法。

48、第五方面,本技术提供了一种计算机程序产品,计算机程序产品包括计算机程序,当所述程序在至少一个处理器上运行时,实现前述第一方面或者第一方面的任一种可选的方案所描述的方法。

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