用于将数据存储在非易失性存储器中的设备的制作方法

文档序号:26794524发布日期:2021-09-29 00:34阅读:167来源:国知局
用于将数据存储在非易失性存储器中的设备的制作方法

1.本发明涉及用于将数据存储在非易失性存储器中的设备和对应的方法。


背景技术:

2.在信息技术中,非易失性存储器是指其信息被永久保留的数据存储器,即,即使当包括存储器的装置不在操作中或者存储器不再被供电时也保留信息。与易失性存储器(例如,主存储器或cpu的寄存器)相比,非易失性存储器用于存储配置数据、用户简档、密码、证书或其他数据,这些数据在操作期间可以改变并且在断电之后被保留以在重启之后再次使用。
3.为了灵活和便利地访问非易失性存储器中的数据,可以以限定的方式组织非易失性存储器中的数据。最常见的组织结构是文件系统,在该文件系统中存储器的一个区域包含实际的有效载荷数据,并且另一个区域包含对有效载荷数据的分区进行编目的结构的描述。文件系统或其他复杂存储结构具有以下优点:可以以结构化的方式存储大量数据并且可以更容易地处理大量数据。例如,文件系统允许随机访问数据以及复杂管理结构,例如其中数据可以被组织的目录树。
4.然而,随着存储器的组织结构的复杂性增加,访问存储器所需的工作量也增加。此外,组织结构自身需要对于用户数据不再可用的存储空间。
5.然而,经由文件系统或其他复杂存储结构的灵活和便利的访问不是每个应用的优先考虑的事(priority)。对于诸如执行专门任务的嵌入式系统的较小系统,其他性质是重要的。例如,在非易失性存储器上记录日志和诊断数据的装置的情况下,重要的是,数据可以安全地、一致地且可追溯地存储在非易失性存储器中并且这也可以在不稳定的情况下(事务安全性)得到保证。也就是说,电力故障的事件中的数据丢失应当尽可能地少,并且不应当影响写入数据的整体一致性。同时,为此所需要的附加工作量必须不能太高,以使得即使对于具有低计算能力和内存的装置也是可行的。


技术实现要素:

6.在该背景下,本发明的目的是提供用于将数据存储在非易失性存储器中的设备和对应的方法,其即使在具有低计算能力和低内存的系统中也可以被容易地实现,同时能够确保高事务安全性和固有一致性。特别地,目的是即使在没有特定预防措施的电力故障的事件中也确保事务安全性和固有一致性。
7.根据本公开内容的一个方面,提供了一种用于将数据存储在非易失性存储器中的设备,该设备包括:数据处理单元,其被配置成获取数据块,以终止元素来终止数据块中的每个数据块并且将终止的数据块组装成串行数据流;以及存储器单元,其被配置成将串行数据流顺序地写入到非易失性存储器中,其中,终止元素能够在第一代码字与至少一个第二代码字之间变化,并且数据处理单元被配置成:当非易失性存储器已经被存储器单元完全写入时,在使用第一代码字作为终止元素与使用第二代码字作为终止元素之间进行切
换。
8.根据本公开内容的另一方面,提供了一种用于将数据存储在非易失性存储器中的方法,该方法包括以下步骤:
9.‑
获取数据块;
10.‑
以终止元素来终止数据块中的每个数据块;
11.‑
将终止的数据块组装成串行数据流;
12.‑
将串行数据流写入非易失性存储器;
13.其中,终止元素能够在第一代码字与第二代码字之间变化,并且当非易失性存储器已被完全写入时,在终止数据块时,交替使用第一代码字和第二代码字作为终止元素。
14.根据本公开内容的另一方面,通过用于从非易失性存储器读取数据的方法来解决问题,该方法包括以下步骤:
15.‑
从非易失性存储器读取第一顺序数据流;
16.‑
对限定第一顺序数据流中的转变的第一代码字和第二代码字进行检测;
17.‑
基于所检测到的转变来设置初始开始位置;
18.‑
在初始开始位置处开始读取第二顺序数据流;
19.‑
基于第一代码字或第二代码字来将第二顺序数据流拆分成数据块;
20.‑
检测第二顺序数据流中的第一代码字与第二代码字之间的改变。
21.因此,本发明的构思是为该目的而在不使用数据存储器的显式组织结构的情况下顺序地写入非易失性存储器。确切地说,构思是在串行数据流上施加隐式组织结构,其基于队列/fifo的抽象数据类型。
22.存储器单元顺序地写入非易失性存储器。这具有所有存储器单元被均等地写入的优点。以这种方式,最大写入周期可以用于具有有限使用寿命的非易失性存储器,例如闪速存储器。在不必依赖于诸如损耗均衡的方法的情况下,可以最佳地写入存储器。
23.串行数据流也可以容易地用于串行协议(例如,rs232、以太网等)中,而不需要附加的计算工作量来进行转换和串行化。因此,该设备适合于具有有限资源并且没有用于实现通信协议的附加单元的嵌入式系统。
24.数据处理单元利用最少的附加工作量将隐式组织结构印在串行数据流上。根据应用,每个数据块的一个或两个附加字节足以实现隐式组织结构。与显式组织结构的省略一起,几乎最佳地利用了存储器。
25.此外,隐式组织结构具有固有一致性的优点,即,如果个别存储器单元有缺陷,则该结构本质上很鲁棒并且整体上保持功能。此外,顺序写入与简单的隐式组织结构的组合减少了每个写入操作(事务)的所需的程序步骤。因此,可以确保高水平的事务安全性,这减少了非预期电力故障的事件中的数据丢失。因此,设备高度适于存储安全相关的日志或诊断数据,该安全相关的日志或诊断数据的记录在不稳定状态的情况下特别重要,例如,以实现可控且无缝的审计跟踪。
26.因此,完全解决了前述目的。
27.在另外的改进中,存储器单元可以被配置成顺序地寻址非易失性存储器,以按顺序的方式对该非易失性存储器完全地进行写入。存储器单元可以在没有显式组织结构的情况下写入非易失性存储器。
28.借助于迭代寻址,存储器单元可以容易且高效地访问存储器并且实现顺序写入。因此,该改进有助于进一步减少在非易失性存储器上进行存储所需的附加工作量。
29.在另外的改进中,存储器单元可以被配置成顺序地读取非易失性存储器,识别终止元素的变化以确定初始开始位置并且在初始开始位置处开始顺序地写入串行数据流。
30.根据该改进,存储器单元可以例如在重启之后首先确定初始开始位置。由于隐式组织结构,为此仅需要单个顺序搜索运行。初始开始位置是最后写入元素的终止元素之后的位置。可以通过从第一代码字至第二代码字的转变从顺序读取的数据中识别所写入的最后元素,或者通过从第二代码字至第一代码字的转变从顺序读取的数据中识别所写入的最后元素。因此,可以快速且高效地确定初始开始位置。因此,在嵌入式系统的情况下经常需要的重新启动可以在基本上没有数据丢失的情况下快速且高效地执行。
31.在另外的改进中,存储器单元可以被配置成将当前写入位置存储在易失性存储器中。
32.通过存储当前写入位置,存储器单元可以在写入暂停之后将新数据写入到存储器而无需预先搜索写入位置。当前写入位置与最后写入元素的终止元素之后的位置对应。由此,由于可以立即开始对存储器的物理写入,因此可以特别高效地并且仅利用几个操作来执行写入操作(事务)。
33.在另外的实施方式中,存储器单元可以被配置成将当前写入位置存储在易失性存储器中,并且只有当从易失性存储器能够得到当前写入位置的值时,才在当前写入位置处写入串行数据流。
34.根据该实施方式,仅当可以从易失性存储器获得当前位置的值时,存储器单元才在当前写入位置处继续写入操作。如果没有存储值,则存储器单元可以通过搜索根据已经存储的数据来确定初始写入位置,并且在通过搜索确定的位置处继续写入处理。因此,在易失性存储器中存储当前位置使得能够在操作期间进行对存储器的连续写入,并且只有当易失性存储器例如由于重启而被重置时才强制搜索运行。因此,这种改进有助于以安全的方式提高效率。
35.在另外的改进中,数据处理单元可以被配置成掩蔽数据块中的与第一代码字或至少第二代码字对应的字符。
36.根据该改进,可以确保的是,数据中不存在与终止元素对应并因此会造成隐式组织结构的不一致的字符。由此,可以独立于终止元素的选择来存储数据,或者可以独立于要存储的数据来选择终止元素。
37.在另外的改进中,数据处理单元可以被配置成为数据块中的每个数据块生成校验和并且将该校验和附加到相应的数据块。
38.因此,根据该改进,为每个数据块提供校验和。因此,可以在不改变隐式组织结构的情况下容易地保护数据免受篡改。由此,可以提高数据的可靠性。因此,该改进具体地使得该设备能够用作日志和诊断存储器,这确保了探测器审计跟踪。
39.在另外的改进中,数据处理单元可以被配置成对数据块中的每个数据块进行加密。
40.根据该改进,即使缺乏显式组织结构,也可以确保数据免受操纵和未经授权的访问。因此,该改进进一步使得设备能够用作日志和诊断存储器。
41.在另外的改进中,数据块可以具有可变长度。
42.隐式组织结构允许在没有另外的修改的情况下存储可变长度数据。由此,可以最佳地利用可用存储器。
43.不言而喻,在不偏离本发明的范围的情况下,以上提及的特征和下面要说明的特征不仅可以以每种情况下指示的组合使用,而且可以以其他组合或单独使用。
附图说明
44.在附图中示出了本发明的实施方式,并且将在下面的描述中更详细地说明本发明的实施方式。
45.图1是用于将数据存储在非易失性存储器中的设备的实施方式的示意图。
46.图2是对非易失性存储器的写入操作的示意图。
47.图3是根据优选实施方式的串行数据流的示意图。
48.图4是用于将数据存储在非易失性存储器中的方法的实施方式的示意性表示。
具体实施方式
49.图1示出了用于将数据存储在非易失性存储器中的设备的实施方式。该设备在此处整体上由附图标记10来表示。
50.设备可以是嵌入式系统,即,集成(嵌入)在技术背景中的数据处理装置。嵌入式系统可以执行监测、控制或调节功能,并且提供必要的数据处理。例如,设备可以是执行安全功能或参与安全功能的执行的安全相关装置。
51.设备包括数据处理单元12和存储器单元14。单元应当被理解为逻辑单元并且可以被组合成单个计算单元。计算单元可以是诸如微控制器的中央处理单元,其可以具有除了处理器之外的另外的外围功能。
52.数据处理单元12可以经由第一接口16从数据获取装置18接收并且处理数据块20。继续关于安全相关装置的示例,数据获取装置18可以是诊断单元,其获取日志和诊断数据并且将日志和诊断数据作为消息以数据块20的形式发送至数据处理单元12。消息可以包括文本、测量值或其他参数。数据块20在长度上可以是可变的。
53.数据处理单元12获取各个数据块20,并且将终止元素22附加至每个数据块。终止元素22可以是限定的符号序列,例如单个字节或限定的字节序列。在将数据块20终止之后,数据处理单元12将终止的数据块组装成串行数据流24。因此,串行数据流是数据块的序列,每个数据块由终止元素22分开。
54.数据块可以由数据处理单元修改成使数据块20没有与终止元素22对应的字符。
55.存储器单元14经由第二接口26连接至非易失性存储器28。存储器单元14顺序地写入非易失性存储器,以将串行数据流24存储在非易失性存储器28中。存储器单元14不使用或不依赖于非易失性存储器的显式组织结构,例如文件系统。确切地说,存储器单元14可以直接向非易失性存储器28的可单独寻址的存储器位置进行写入。因此,存储器单元14将非易失性存储器视为raw装置,即,视为允许以字符级直接访问其内容并且不经由文件系统提取所存储的数据的面向字符的装置。因此,该过程不同于用于备份专有数据的称为raw模式的方法,在该方法中,将专有内容作为原始数据存储在文件系统的文件中。
56.然而,原则上也可以想到使用文件系统。有利地,因此该方法可以一律地应用于非易失性存储器的各种实施方式。
57.存储器单元14继续利用串行数据流24对非易失性存储器28进行写入,直到存储器不再具有任何空闲存储器区域,即存储器已被完全写入。一旦到达该点,数据处理单元12改变终止元素22,并且此后生成以不同符号序列作为终止元素22的串行数据流24。因此,数据处理单元12可以在作为终止元素22的第一代码字与至少一个第二代码字之间进行切换,其中每当存储器已被完全写入时就发生切换。
58.在改变终止元素22之后,存储器单元14开始从开头将串行数据流顺序地写入非易失性存储器28。因此,存储器单元14重写先前存储在非易失性存储器28中的数据。当重写时,存储器单元14可以从首先写入的数据开始。因此,存储器单元14像使用环形缓冲器那样使用非易失性存储器28。
59.通过创建串行数据流并且以先前描述的方式顺序地写入,将组织结构施加在非易失性存储器上,该组织结构可以确保以下特性:
60.‑
对所有存储器单元的均匀写入;
61.‑
数据结构的固有一致性;
62.‑
即使在没有特定预防措施的电力故障的情况下的高事务安全性;
63.‑
没有写入数据的数据丢失;
64.‑
由于对于数据的组织仅需较小的附加工作量而引起的对存储的最佳利用;
65.‑
串行数据流在诸如rs 232或以太网的串行通信协议中的可重用性。
66.下面参照图2更详细地描述存储器处理和隐式组织结构。
67.图2示出了非易失性存储器的示意图中的写入操作。
68.图2中的顶部图示(a)示出了处于未写入状态的非易失性存储器28。此处,非易失性存储器28例如由二十九个存储器单元指示。在该示例中,单个存储器单元30可以存储单个字节。因此,在该示例中,非易失性存储器28具有包括二十九个字节的存储器区域32。应当理解的是,该示例仅用于说明的目的。事实上,非易失性存储器可以比此处所示的大得多。此外,还可以想到仅使用全部物理存储器的一部分。因此对多个列表的分割或存储(在一个物理存储器中)是可能的。
69.存储器区域32具有指示存储器区域32的第一存储器单元的开始位置34和指示存储器区域32的最后存储器单元的结束位置36。存储器区域32可以包括由非易失性存储器28提供的存储器的全部。非易失性存储器28还可以是未格式化的,并且因此可以不具有显式组织结构,其中某些存储器单元被保留用于存储器的组织,例如用于结构或分配表的描述。
70.图示(b)示出了在存储器单元14已将串行数据流24的第一段24a顺序地写入到非易失性存储器28中之后的非易失性存储器28。最初,存储器单元14在代码字38之后开始在开始位置34处写入。各个数据块在串行数据流24中以第一代码字38来终止。存储器单元14还可以在内部存储器中存储当前写入位置40。当前写入位置40可以例如指向尚未被写入的下一个存储器单元。不言而喻,也可以以其他方式存储当前写入位置。
71.在图示(c)中,存储器单元14已将串行数据流24的另一段24b写入到非易失性存储器28中。此时,存储器单元14已到达非易失性存储器28的结束位置36。
72.一旦存储器单元14到达结束位置36,即已经对存储器区域32从开头写入至结尾,
存储器单元14就从开头开始对存储器区域32进行写入。换言之,存储器单元14将串行数据流的下一个值写入至存储器区域32的开始位置34并且重写首先添加的值。同时,终止元素22改变并且数据块此后以第二代码字42终止。
73.图示(d)示出了已将串行数据流24的另一段24c写入到存储器中之后的非易失性存储器28。终止元素22的变化根据第二代码字42的使用是明显的。为了说明重写,此处已用垂直线标记用户数据。然而,用户数据以与之前的已由空框指示的用户数据相同的方式被编码。仅终止元素22被改变并且现在是第二代码字42。
74.两个代码字38与42之间的区域无效。
75.图示(e)示出了将另一段24d写入非易失性存储器28。存储器单元14顺序地重写存储器。在这样做时,代码块以第二代码字42作为终止元素22而被终止。
76.图示(f)示出了串行数据流24的写入再次到达存储器区域32的结束位置36的非易失性存储器28的状态。当到达结束位置时,终止元素22再次改变并且现在再次是第一代码字38。如果串行数据流24的段24e的数据块以第二代码字42终止直到到达结束位置36,则现在它们以第一代码字38终止。同时,当到达结束位置36时,存储器单元14再次从开始位置34开始重写存储器区域32。
77.连续地重复图示(b)至图示(f)中所示的处理,并且像环形缓冲器那样以循环方式对存储器区域32进行写入。终止元素在每次轮转时被更换。
78.因此,在第一次循环之后,存储器区域32被划分为第一区域44和第二区域46。在第一区域44中,数据块以第一代码字38终止,并且在第二区域46中,数据块以第二代码字42终止。区域44、46之间的转变48由终止元素22的改变来指示。例如,在图示(d)和图示(e)中,当从开始位置34看存储器区域32时,在从第二代码字42到第一代码字38的变化时发生转变48。在图示(f)中,当从开始位置34看存储器区域32时,改变发生在从第一代码字38到第二代码字42的转变48处。
79.转变48的开头是队列的头部,转变48的结束是队列的尾部。
80.转变48可以用于确定初始写入位置。例如,存储器单元14可以被配置成在重启之后首先确定初始写入位置,以在初始写入位置处继续写入操作。如果先前已经将数据写入存储器28,则可以在转变48处而不是在开始位置34处开始写入操作。因此,可以维持先前写入的数据的一致性,并且写入的数据可以在系统重启之后完全且一致地可用。
81.存储器单元14可以顺序地读出存储器区域32以进行搜索,并且识别转变48。随后,存储器单元14可以在转变48的位置处继续写入操作,更具体地,在转变48的区域中的第一终止元素之后,通过例如存储器单元14在找到初始开始位置之后将初始开始位置存储为当前写入位置。
82.搜索不限于系统重启之后的时间,也可以在另一时间处执行。例如,如果存储在存储器单元14中的当前写入位置变得无效,则可以启动搜索。在这造成不一致的存储器图像之前,可以用新的搜索来维持完整性。
83.图3示出了根据优选实施方式的串行数据流24的示意图。
84.串行数据流24包括存储在相继的存储器单元30中的多个连续数据元素50。用户数据被分组成数据块20,该数据块20通过终止元素22彼此分开。此处,终止元素22每个都是具有一个字节长度的代码字。例如,第一代码字38是“0x00”并且第二代码字42是“0x80”。应当
理解的是,在其他实施方式中,代码字不限于单个字节,而是可以包括多个字符。
85.在此处所示的实施方式中,用户数据得到附加地保护。每个数据块由循环冗余校验位(crc)来扩展,以保护相应数据块的数据免受损坏或传输误差。循环冗余校验可以用于进一步提高施加在串行数据流上的隐式组织结构的固有一致性。冗余校验位也不限于单个字节。
86.此外,用户数据也可以在数据块20内被加密。这在图3中由数据字段的灰色背景指示。除了操纵保护之外,还可以以这种方式防止对用户数据的未经授权的访问。
87.crc和加密可以用于以简单的方式来增强隐式组织结构。由此,即使利用简单的组织结构也可以确保高水平的数据完整性。
88.附图标记48指示图3中的转变。转变48标记所使用的终止元素22发生改变的区域。因为存储器区域像环形缓冲器那样被圆周地写入,因此发生转变48。换言之,当可用存储器区域已被完全写入时,将在存储区域的开头处重新开始并且重写先前的数据。对环形缓冲器的顺序写入意味着首先重写最旧的数据。这对于按时间顺序存储日志和诊断数据是有利的。以这种方式,可以最佳地利用存储器区域以最大程度地存储最新的消息。
89.此外,通过均匀地对存储器进行写入,可以实现存储器的最佳使用寿命。组织结构驻留在数据流中。顺序地读取和写入致使存储器被均匀地访问。
90.根据所提出的隐式组织结构,几乎所有可用存储器都可以用于用户数据。仅终止元素和crc校验位(如果适用)需要附加的存储器空间。然而,这可能限于每个数据块一个或两个字节。
91.除了转变48中的两个终止元素之间的区域52(此处由交叉影线数据块指示)之外,整个存储器区域由有效用户数据占用,该有效用户数据可以通过在终止元素22处顺序读取和分割而再次被分解成原始数据块,例如分解成单独的诊断消息。因此,隐式组织结构特别适合于存储在时间上彼此衔接的消息,但是不限于这样的数据。
92.除了最佳地利用非易失性存储器28的存储器区域之外,存储串行数据流还具有以下优点:可以在串行数据传输中直接使用数据流。对于借助于串行协议的传输,顺序地并且不改变地从存储器中读出数据流是足够的。因此,不必为了传输而分别编译串行数据流。因此可以降低对所使用的计算单元的计算能力或缓冲存储器的要求。
93.图4以示意图概括了根据本公开内容的实施方式的用于将数据存储在非易失性存储器中的方法的方法步骤。该方法在其整体上由附图标记100表示。
94.在步骤s101中,数据处理单元获取各个数据块20。数据块20可以是例如来自诊断装置的可变长度的诊断消息。可以将数据块20发送至数据处理单元,或者通过从共享存储器进行读取来主动获取数据块20。
95.在步骤s102中,由数据处理单元为所获取的数据块中的每个数据块提供终止元素。就此而言,数据处理单元可以在第一终止元素与至少一个第二终止元素之间进行选择,以允许在随后的数据排序中的隐式组织。可选地,数据处理单元可以在该步骤期间处理数据,例如,通过掩蔽该数据中的用于终止元素的字符来处理该数据。此外,可以想到,此时为数据提供校验和或对数据进行加密。
96.然后,在步骤s103中,数据处理单元通过将终止的数据块一起排队而将块组装成串行数据流。在优选实施方式中,数据处理单元可以根据数据处理单元对数据块的接收来
在时间上组装数据块。然而,还可以想到,数据处理单元12首先对数据块进行分类和优先级排序,然后将它们进行组装以形成串行数据流。
97.在步骤s104中,将串行数据流写入非易失性存储器,即将数据物理地存储在非易失性存储器中。对存储器的写入是顺序地完成的。例如,可以将串行数据流逐字节地传输到非易失性存储器中或按限定的大小的块进行传输。可以通过简单的迭代器完成对存储器的寻址,使得仅需要增加指向当前写入位置的指针即可。这可以在没有操作系统的帮助下完成,并且还可以在具有有限资源的微控制器上实现。
98.步骤104中的写入与向环形缓冲器中的写入对应。当存储器已经被完全写入时,从存储器的开头继续写入操作。此外,当到达存储器的结束时,改变终止元素。换言之,在每个循环之后,将数据块分开的终止元素改变。以这种方式,实现了上述隐式组织结构。
99.应当理解的是,方法不限于本文中所示的步骤,而是可以包括附加的步骤或中间步骤。该方法可以通过先前描述的设备来实现。替选地,该方法可以被实现为使得计算机或其他计算装置(asic、fpga等)能够执行该方法的计算机程序。
100.除了用于存储数据的方法之外,存储设备还可以实现用于读取数据的对应方法。该过程也可以由另一装置(例如,市场上可购得的pc)实现。
101.将读取过程划分成两个阶段。首先,确定初始读取位置,并且然后从初始读取位置开始顺序地读取存储器。第一阶段与用于找到初始写入位置的过程对应。此处,顺序地读取存储器,并且在顺序读取的数据中识别从一个代码字到另一个代码字的转变。转变的结束标记从其开始顺序读出的初始读取位置。可以使用终止元素将从读取位置顺序读取的数据分解成单独的数据块,然后可以以本身已知的方式对单独的数据块进行处理。
102.读取过程可以包括以下步骤:
103.‑
从非易失性存储器读取第一顺序数据流;
104.‑
对限定第一顺序数据流中的转变的第一代码字和第二代码字进行检测;
105.‑
基于所检测到的转变来设置初始开始位置;
106.‑
在初始开始位置处开始读取第二顺序数据流;
107.‑
基于第一代码字或第二代码字将第二顺序数据流拆分成数据块;
108.‑
检测第二顺序数据流中的第一代码字与第二代码字之间的改变。
109.以滚动方式执行第二顺序数据流的读出,即,当到达非易失性存储器的结束时,在非易失性存储器的开头继续读取操作。
110.要理解的是,说明书应当被理解为仅是示例,并且本文中公开的特征不限制本公开内容的范围。确切地说,由所附权利要求来确定本发明的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1