本公开涉及存储,更具体地,涉及一种数据记录方法、微控制单元、数据记录装置和车辆。
背景技术:
1、在汽车行业中,通常需要将例如故障信息、匹配信息等信息数据记录在车辆的电子控制器单元(ecu)中,而且即使发生断电,这些信息数据也不应丢失。在一般情况下,可以采用电可擦可编程只读存储器(eeprom)、数据闪存(data flash)或高度可配置随机存取存储器(flex ram)来存储信息数据。然而,相比data flash而言,eeprom和flex ram的写入速度慢(例如,写入1个字节需要1ms左右的时间)、存储空间小且成本高。另外,data flash虽然具有较高的写入速度(例如,写入8个字节仅需要200μs左右的时间甚至更快),但是在同一个地址写入不同的信息数据需要先擦除才能再写入,这将导致擦除次数的大幅升高。因此,存在对数据记录方式进行改进的需求。
技术实现思路
1、本公开的目的之一在于提出一种数据记录方法、微控制单元、数据记录装置和车辆。
2、根据本公开的第一方面,提供了一种数据记录方法,包括:
3、获取来自随机存取存储器ram镜像的写入请求;
4、确定数据闪存中的与所述ram镜像相应的数据段所包含的至少两个扇区中的、作为当前的有效扇区的第一扇区,其中,数据闪存被配置为包含一个或多个数据段;
5、判断所述第一扇区的剩余空间是否足够用于写入由所述写入请求指示的待记录数据;
6、若是,将所述待记录数据写入所述第一扇区中;
7、若否,将当前的有效扇区变更为所述至少两个扇区中的不同于所述第一扇区的第二扇区,以将所述待记录数据写入所述第二扇区中。
8、在一些实施例中,所述数据记录方法还包括:
9、在所述至少两个扇区中的每个扇区的扇区状态标识都指示扇区非活动的情况下,擦除每个扇区;
10、根据只读存储器rom镜像中的数据块产生所述ram镜像中的相应的数据块;
11、将所述ram镜像中的相应的数据块复制到所述至少两个扇区中的任一扇区中;以及
12、将复制有所述ram镜像中的相应的数据块的扇区的扇区状态标识更改为指示扇区活动。
13、在一些实施例中,根据只读存储器rom镜像中的数据块产生所述ram镜像中的相应的数据块包括:
14、将所述rom镜像中的数据块复制到所述ram镜像中;
15、根据所述rom镜像中的数据块计算校验值,并将所述校验值作为所述ram镜像中的相应的数据块中的校验区段的值。
16、在一些实施例中,所述数据记录方法还包括:
17、在数据闪存处于非首次上电状态、且与ram镜像中的各个数据块相应的改变标识都处于未初始化状态的情况下,确定数据闪存中的与所述ram镜像相应的数据段所包含的至少两个扇区中的、作为当前的有效扇区的第一扇区;
18、将在所述第一扇区中从后往前读取到的所有有效的数据块复制到所述ram镜像中,并将与各个有效的数据块相应的改变标识更改为已初始化状态;以及
19、在所述ram镜像中存在改变标识处于未初始化状态的数据块的情况下,根据只读存储器rom镜像中的相应的数据块变更所述ram镜像中的所述数据块,并将与变更后的数据块相应的改变标识更改为已初始化状态。
20、在一些实施例中,获取来自随机存取存储器ram镜像的写入请求包括:
21、按照预设时间且数据闪存不在擦除状态的情况下,读取与所述ram镜像中的各个数据块相应的改变标识;
22、在改变标识指示相应的数据块存在改变的情况下,产生指示将作为所述待记录数据的所述相应的数据块写入到数据闪存中的写入请求。
23、在一些实施例中,确定数据闪存中的与所述ram镜像相应的数据段所包含的至少两个扇区中的、作为当前的有效扇区的第一扇区包括:
24、读取所述至少两个扇区中的各个扇区的扇区状态标识;
25、在仅有一个扇区状态标识指示扇区活动的情况下,将相应的扇区确定为所述第一扇区;
26、在多于一个扇区状态标识指示扇区活动的情况下,读取相应的多个扇区的数据状态标识;
27、在存在数据状态标识指示数据无效的情况下,将不同于与数据状态标识相应的扇区的另外的扇区确定为所述第一扇区;
28、在不存在数据状态标识指示数据无效的情况下,比较相应的多个扇区的剩余空间;以及
29、将具有最大的剩余空间的扇区确定为所述第一扇区。
30、在一些实施例中,将所述待记录数据写入所述第一扇区中包括:
31、将作为所述待记录数据的一个或多个数据块从所述ram镜像复制到所述第一扇区的剩余空间中。
32、在一些实施例中,将当前的有效扇区变更为所述至少两个扇区中的不同于所述第一扇区的第二扇区,以将所述待记录数据写入所述第二扇区中包括:
33、擦除所述第二扇区;
34、将所述ram镜像中的有效数据块写入所述第二扇区中;
35、将所述第二扇区的扇区状态标识更改为指示扇区活动,并将所述第一扇区的数据状态标识更改为指示数据无效。
36、在一些实施例中,每个扇区包括扇区头部区域和扇区主体区域,其中,所述扇区头部区域被配置为存储扇区状态标识和数据状态标识,所述扇区状态标识被配置为指示扇区活动或扇区非活动,所述数据状态标识被配置为指示扇区中的数据有效或数据无效,所述扇区主体区域被配置为存储一个或多个数据块。
37、在一些实施例中,每个数据块占据相同大小的存储空间。
38、在一些实施例中,每个数据块包括校验区段、数据区段和标识区段,其中,校验区段是根据数据区段和标识区段计算得出的,数据区段被配置为指示所记录的数据,标识区段被配置为指示所记录的数据的标识。
39、根据本公开的第二方面,提供了一种微控制单元,所述微控制单元包括:
40、数据闪存;
41、随机存取存储器ram;
42、只读存储器rom;以及
43、处理模块,所述处理模块被配置为执行如上所述的数据记录方法的操作。
44、根据本公开的第三方面,提供了一种数据记录装置,所述数据记录装置包括:
45、如上所述的微控制单元;以及
46、掉电保护电路,所述掉电保护电路电连接至所述微控制单元,且所述掉电保护电路被配置为在监测到所述微控制单元的供电电压丢失的情况下,使数据不被写入到数据闪存中。
47、在一些实施例中,所述掉电保护电路包括:
48、低压差线性稳压器,所述低压差线性稳压器的输出端电连接至所述微控制单元的第一端;
49、电容器,所述电容器的第一端电连接至所述低压差线性稳压器的输入端,且所述电容器的第二端接地;
50、二极管,所述二极管的阴极电连接至所述低压差线性稳压器的输入端,且所述二极管的阳极电连接至供电端;
51、开关电路;以及
52、分压电路,所述开关电路电连接在所述供电端和所述分压电路之间,所述分压电路电连接在所述开关电路和所述微控制单元之间,且所述微控制单元被配置为监测来自所述分压电路的电压,以确定是否发生掉电。
53、根据本公开的第四方面,提供了一种车辆,所述车辆包括如上所述的微控制单元,或包括如上所述的数据记录装置。
54、根据本公开的第五方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现如上所述的数据记录方法的操作。
55、通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其他特征及其优点将会变得更为清楚。