您的位置 首页 新能源

选用分块办理和状况转化的嵌入式NOR Flash办理

采用分块管理和状态转换的嵌入式NOR Flash管理-分块管理层程序负责资源回收算法、开机Flash 异常恢复算法的实, 同时向数据类型管理层提供各种类型数据的所在的分块地址信息。

导言

嵌入式体系中一般都需求寄存一些非易失性数据, 并且数据量的巨细和数据类型依据不同的体系需求差异很大。因而选取适宜的存储器是完结数据存储体系的第一步, 更重要的是使存储体系长时间安稳、高效的作业, 这就有必要寻求一个齐备的存储器数据办理办法[ 1] 。本文介绍了一种适用于无文件体系环境下的N OR Flash 办理办法, 选用分块办理和状况转化的办法使得Flash 的运用功率和操作可靠性得到大大进步。

2 NOR Flash 存储器及其特性

NOR Flash 和NAND Flash 是现在市场上两种首要的Flash 存储器。一般在非海量存储型的嵌入式设备中都是直接选用NOR Flash 作为程序代码和非易失性数据的存储器, 这首要是由NOR

Flash 的特色所决议的。NOR Flash 的特色如下:

1) 存储容量较小, 一般在1~ 16MByte 之间。

2) 具有和SRAM 相同的接口, 随机读取速度快, 能够做到芯片内履行( XIP) [ 2] 。

3) 存储单元只能由1 写成0, 因而进行写操作前有必要先进行擦除操作, 使对应的单元变成1。

4) 器材有必定的运用寿命, 一般为10~ 100 万次。跟着运用次数的添加, 或许有的单元会失效。可是NOR Flash 出厂时器材的每个单元都有用。NOR Flash 的很多特性使得它成为嵌入式体系规划中首选的存储器器材。因为NOR Flash 的擦除操作都是以块为单位的, 并且不同品种的NOR Flash 器材所支撑的擦除单位或许不相同, 可是每种NOR Flash 器材都支撑64KB 为单位的擦除[ 3~ 4] , 因而后边介绍的分块办理办法将以64KB为块根本单位, 然后处理分块办理办法在不同品种NOR Flash 器材上完成时所呈现的数据备份问题。

3 NOR Flash 分块办理办法

为了均衡每个Flash 分块的运用次数, 进步整个存储器材的运用寿命, 对Flash 选用分块办理的办法[ 5] 。以64KB 为单位, 将体系分配用作非易失性数据区域进行分块操作, 其间每个分块又分红16 字节的头部信息与数据区域。分块示意图如图1 所示。

选用分块办理和状况转化的嵌入式NOR Flash办理

图1 分块示意图

正是运用分块的头部信息, 进行擦除次数均衡与分块状况的切换。关于头部几个首要字段的界说如下:

1) Block_Flag ( 8bit) : 用于标志分块的状况, 总共有BF _NOT _ INIT ( 0xFF) 、BF _FREE (0xFE)、BF_COPYING_ DATA ( 0xFC )、BF _ COPY _ FINISHED(0xF8) 、BF_INUSE( 0xF0) 、BF_SRC_DATA ( 0xE0) 、BF_ERASING( 0xC0)、BF_INVALID(0x00) 8 种状况。

2) Blo ck _ Data _ T ype ( 8bit ) 和Blo ck _ Data _Ty pe_Ext ( 8bit ) : 别离表明该分块存储的数据类型和子类型, 这两个字段都由应用程序所存储的数据类型决议。例如学生信息的存储, 或许的一种存储办法是一个分块存储学生的学号信息, 而其它几个分块存储学生的详细信息, 这时它们的数据类型相同, 可是子类型却不相同。

3) Block_Erase_Counter( 32bit ) : 该字段用来动态记载每个分块的擦除次数, 然后便利应用程序对Flash 分块的运用次数进行均衡。

4) Next_Off set ( 16bit ) : 该字段为将来扩展之用, 用来将64K 的分块空间进一步细化, 使得将来1 个64K 空间内能够存储不同类型的数据。

4 NOR Flash 分块状况切换与运用均衡

在Flash 的运用过程中, 必定存在着屡次的数据更新, 当时嵌入式体系中数据更新的一般做法是先将新数据写入Flash, 然后将旧的数据置为无效状况[ 6] 。假如每次数据更新都马大将原先数据擦除,

则将形成Flash 的擦除次数急剧添加。跟着数据更新次数的增多, 也就导致Flash 存储体系中的可用资源不断削减, 因而在某个时间就有必要对体系中的废物资源进行收回。经过奇妙设置Flash 分块的状况,并在资源收回过程中对源、方针两个分块进行恰当的状况切换, 能够保证在资源收回过程中不会因掉电原因而发生数据的丢掉。令收回源分块为A, 新方针分块为B, 资源收回流程如图2 所示。

选用分块办理和状况转化的嵌入式NOR Flash办理

图2 资源收回流程图

关于每次体系上电后, 应用程序将读取每个Flash 数据分块的头部信息, 在内存中树立相应的分块信息表, 一起依据头部信息和闲暇地址搜索算法去初始化每种数据类型的开始地址与闲暇区域首地址, 一起有必要对反常状况进行检测康复。其间对每个分块的初始化首要是依据分块头部的状况信息进行判别, 检测是否之前有掉电过, 然后做出相应处理, 首要有以下几种或许:

1) 状况为BF _NOT _INIT, 则将其初始化为BF_FREE 状况。

2) 状况为BF_FREE 或BF_INUSE, 则在内存中树立分块信息, 无需其它操作。

3) 状况为BF _ COPYIN G _ DAT A 或BF _ERASING, 则将其擦除后置为BF_FREE 状况。

4) 分块A 状况为BF_SRC_DATA, 假如有另一个分块B 为BF_COPY _FINISHED, 则依据流程图持续完结资源收回操作。假如有另一个分块B 为BF_COPYING_DAT A, 则擦除B 后置为BF_FREE 状况, 然后对A 从头进行资源收回操作。

5) 状况为BF_INVA LID, 则该块为坏块, 不在内存中树立分块信息。

为了均衡每一个分块的运用次数, 延伸整块Flash 的运用寿命, 在每次进行分块擦除之后, 有必要先将之前记载下来的Block_Erase_Counter 加1, 然后组成新的头部信息从头写回分块头部, 然后到达动态记载每个分块擦除次数的功用。在进行闲暇分块请求的时分, 有必要遍历一切状况为BF_FREE 分块, 选取Block_Erase_Counter 数值最小的作为新分块分配, 然后使得每个分块的运用次数趋于共同。

5 分块办理在嵌入式软件体系中的完成

在嵌入式软件的规划中, 杰出的软件架构规划能够使得软件具有更好的可靠性及可扩展性。现在分层架构是嵌入式软件体系规划中最为盛行的一种[ 7] 。因而在软件完成过程中, 选用了分层的软件架构将分块办理软件分为Flash 驱动层、No rFlash 分块办理层和数据类型办理层三层。

详细的软硬件分层示意图如图3 所示。

选用分块办理和状况转化的嵌入式NOR Flash办理

图3 存储模块软件构架

软件最底层为Flash 驱动层, 考虑到NOR Flash存储器的多样性, 并且各种器材的底层驱动或许不同, 因而Flash 驱动层的树立能够向分块办理层屏蔽详细的硬件信息。一般驱动层的完成首要选用函数指针的办法进行[ 8] , 初始化时经过读取不同Flash 的ID 别离对read、write 和erase 等根本操作函数指针进行赋值, 尔后上层软件在对Flash 进行实际操作时则经过函数指针进行, 并不清楚详细的Flash 信息。在嵌入式体系中, 非易失性数据的品种有多种多样, 因而分块办理层自身并不触及详细类型数据的存储办法, 仅仅预留几个字段用于记载数据类型等信息[ 9] 。这些字段用于数据类型办理程序初始化时运用。数据类型办理层的首要功用是办理NOR Flash存储器中不同类型的数据, 向应用程序供给根据数据类型的各种操作, 屏蔽掉详细的分块办理信息。

分块办理层程序担任资源收回算法、开机Flash 反常康复算法的实, 一起向数据类型办理层供给各品种型数据的地点的分块地址信息。经过这种构架使得每一层的完成都易于选用面向目标的思维完成, 其间从底层至上层的目标别离为Flash、分块、数据类型。

6 结语

经过选用分块办理与状况转化的办法, Flash的存储功能有了较大的改进, 并且数据的可靠性也有很大进步, 特别适用于无文件体系嵌入式设备中的数据存储。一起经过合理的软件构架使得各个分层都易于选用面向目标的思维完成, 这样有利于软件的扩展与移植。现在这种办法已经在数字电视机顶盒中选用, 完成作用甚好, 并且为上层软件的规划带来很大便利。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/87175.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部