本技术涉及flash,特别是涉及一种flash数据管理方法及装置。
背景技术:
1、flash是微控制单元(microcontroller unit,mcu)的重要组成部分,用于存储代码、数据等信息。flash是存储芯片的一种,flash存储器又称闪存,它结合了rom(只读存储器)和ram(随机存储器)的长处,不仅具备电子可擦除可编程的性能,还可以快速读取数据,使数据不会因为断电而丢失,常用于存储代码、数据等信息。例如:对于汽车控制器来说,flash存储的数据和代码保证了汽车控制器每次重新上电之后,汽车控制器的控制行为能够满足用户预期。
2、对于flash来说,如何在flash上定位到最新的数据块是一个重要的性能问题。当前技术中,常用的方式是在mcu上电后,预先对flash存储的数据块进行遍历,为每一个数据块建立一个缓存索引表,并将每个数据块建立的一个缓存索引表存储到缓存空间,以便于后续根据每个数据块对应的缓存索引表,实现对flash存储的数据块的定位。
3、综上所述,为每一个数据块建立一个缓存索引表,会占用大量的缓存空间,从而使得mcu可用缓存空间减少,导致mcu性能下降。
技术实现思路
1、基于上述问题,本技术提供了一种flash数据管理方法及装置,减少所占用的缓存空间,保证mcu可用缓存的空间,提升mcu的性能。
2、本技术实施例公开了如下技术方案:
3、第一方面,本技术提供了一种flash数据管理方法,包括:预先将flash存储空间划分为多个子空间;为预设数据块分配对应的子空间,并为一个子空间对应的预设数据块分配索引号;根据所述预设数据块、所述对应的子空间以及所述预设数据块的索引号,构建第一级表,并存储所述第一级表;为每个子空间划分出用于存储第二级表的存储空间,所述第二级表用于顺序记录写入对应的子空间的数据块的索引号;接收操作命令并解析;基于所述第一级表和所述第二级表,执行解析后的操作命令。
4、可选的,所述存储所述第一级表,包括:
5、将所述第一级表存储到flash存储空间或rom存储空间中。
6、可选的,所述子空间包括第一空间和第二空间;所述第一空间的存储空间与所述第二空间的存储空间相同;
7、所述为每个子空间划分出用于存储第二级表的存储空间,包括:
8、为每个子空间的第一空间和第二空间分别划分出用于存储第二级表的存储空间。
9、可选的,所述操作命令包括:写命令;所述解析后的写命令携带待写入数据块的数据;
10、所述基于所述第一级表和所述第二级表,执行解析后的操作命令,包括:
11、基于所述第一级表,确定所述待写入数据块对应的子空间;
12、判断所述对应的子空间是否存在已存储的数据;
13、当所述对应的子空间不存在已存储的数据时,将所述待写入数据块的数据写入所述对应的子空间的第一空间,并将所述待写入数据块的索引号顺序记录到所述对应的子空间的第一空间的第二级表中,所述待写入数据块的索引号位于所述第二级表的首位。
14、可选的,所述方法还包括:
15、当所述对应的子空间存在已存储的数据时,判断所述对应的子空间的剩余空间是否满足存储条件;
16、当所述对应的子空间的剩余空间满足存储条件时,将所述待写入数据块的数据顺序写入所述对应的子空间的第一目标空间,并将所述待写入数据块的索引号顺序记录到所述第一目标空间的第二级表中;所述第一目标空间为所述对应的子空间的第一空间和第二空间中存在已存储的数据的空间。
17、可选的,所述方法还包括:
18、当所述对应的子空间的剩余空间不满足存储条件时,将所述待写入数据块的数据写入所述对应的子空间的第二目标空间,并将所述待写入数据块的索引号顺序记录到所述第二目标空间的第二级表中;所述第二目标空间为所述对应的子空间的第一空间和第二空间中不存在已存储的数据的空间。
19、基于所述对应的子空间的第一目标空间的第二级表,执行所述第一目标空间中存储的其他数据块的搬移。
20、可选的,所述基于所述对应的子空间的第一目标空间的第二级表,执行所述第一目标空间中存储的其他数据块的搬移,包括:
21、基于所述对应的子空间的第一目标空间的第二级表,将所述第一目标空间中存储的其他数据块的最新数据,顺序搬移到所述对应的子空间的第二目标空间,并将所述其他数据块的索引号按照搬移顺序记录到所述第二目标空间的第二级表中;
22、清空所述对应的子空间的第一目标空间中存储的所有数据,并清空所述第一目标空间的第二级表。
23、可选的,所述判断所述对应的子空间的剩余空间是否满足存储条件,包括:
24、判断所述对应的子空间的剩余空间是否大于写入存储空间;所述写入存储空间是根据所述待写入数据块所占用的存储空间和所述对应的子空间的存储空间确定的;所述写入存储空间是所述对应的子空间的存储空间的一半与所述待写入数据块所占用的存储空间之和;
25、当所述对应的子空间的剩余空间大于所述写入存储空间,则所述对应的子空间的剩余空间满足存储条件;
26、当所述对应的子空间的剩余空间不大于所述写入存储空间,则所述对应的子空间的剩余空间不满足存储条件。
27、可选的,所述操作命令包括:读命令;所述解析后的读命令携带待读取数据块;
28、所述基于所述第一级表和所述第二级表,执行解析后的操作命令,包括:
29、基于所述第一级表,确定所述待读取数据块对应的子空间;
30、基于所述对应的子空间的第二级表,确定所述待读取数据块的最新数据的地址信息;
31、基于所述地址信息,读取所述待读取数据块的最新数据。
32、第二方面,本技术提供了一种flash数据管理装置,包括:
33、子空间划分模块,用于预先将flash存储空间划分为多个子空间;
34、子空间分配模块,用于为预设数据块分配对应的子空间,并为一个子空间对应的预设数据块分配索引号;
35、第一级表构建模块,用于根据所述预设数据块、所述对应的子空间以及所述预设数据块的索引号,构建第一级表,并存储所述第一级表;
36、第二级表存储模块,用于为每个子空间划分出用于存储第二级表的存储空间,所述第二级表用于顺序记录写入对应的子空间的数据块的索引号;
37、操作命令接收模块,用于接收操作命令并解析;
38、操作命令执行模块,用于基于所述第一级表和所述第二级表,执行解析后的操作命令。
39、可选的,第一级表构建模块,具体用于将第一级表存储到flash存储空间或rom存储空间中。
40、可选的,子空间包括第一空间和第二空间;第一空间的存储空间与第二空间的存储空间相同;第二级表存储模块,具体用于为每个子空间的第一空间和第二空间分别划分出用于存储第二级表的存储空间。
41、可选的,操作命令执行模块包括:写命令执行模块和读命令执行模块。
42、当操作命令为写命令时,解析后的写命令携带待写入数据块的数据。写命令执行模块,用于基于第一级表,确定待写入数据块对应的子空间;判断对应的子空间是否存在已存储的数据;当对应的子空间不存在已存储的数据时,将待写入数据块的数据写入对应的子空间的第一空间,并将待写入数据块的索引号顺序记录到对应的子空间的第一空间的第二级表中。
43、可选的,当对应的子空间存在已存储的数据时,写命令执行模块,还用于判断对应的子空间的剩余空间是否满足存储条件;
44、当对应的子空间的剩余空间满足存储条件时,将待写入数据块的数据顺序写入对应的子空间的第一目标空间,并将待写入数据块的索引号顺序记录到第一目标空间的第二级表中。
45、可选的,当对应的子空间的剩余空间不满足存储条件时,写命令执行模块,还用于将待写入数据块的数据写入对应的子空间的第二目标空间,并将待写入数据块的索引号顺序记录到第二目标空间的第二级表中;基于对应的子空间的第一目标空间的第二级表,执行第一目标空间中存储的其他数据块的搬移。
46、可选的,写命令执行模块,具体用于基于对应的子空间的第一目标空间的第二级表,将第一目标空间中存储的其他数据块的最新数据,顺序搬移到对应的子空间的第二目标空间,并将其他数据块的索引号按照搬移顺序记录到第二目标空间的第二级表中;清空对应的子空间的第一目标空间中存储的所有数据,并清空第一目标空间的第二级表。
47、可选的,写命令执行模块,写命令执行模块,具体用于判断对应的子空间的剩余空间是否大于写入存储空间;当对应的子空间的剩余空间大于写入存储空间,则对应的子空间的剩余空间满足存储条件;当对应的子空间的剩余空间不大于写入存储空间,则对应的子空间的剩余空间不满足存储条件。
48、可选的,当操作命令为读命令时,解析后的读命令携带待读取数据块。
49、读命令执行模块,用于基于第一级表,确定待读取数据块对应的子空间;基于对应的子空间的第二级表,确定待读取数据块的最新数据的地址信息;基于地址信息,读取待读取数据块的最新数据。
50、相较于现有技术,本技术具有以下有益效果:由于第二级表位于flash存储空间中,不需要占用缓存空间,相比于当前技术中,减少缓存空间的占用,为mcu保留足够的缓存空间,提升mcu的性能。进一步,构建的第一级表由于是固定的,不需要随着操作命令而进行变换,可以将第一级表存储到flash存储空间或rom存储空间中,即第一级表和第二级表都不需要占用缓存空间,为mcu保留足够的缓存空间,提升mcu的性能。