嵌入式系统Flash存储管理策略研究
5 分块管理在嵌入式软件系统中的实现
在嵌入式软件的设计中, 良好的软件架构设计可以使得软件具有更好的可靠性及可扩展性。目前分层架构是嵌入式软件系统设计中最为流行的一种[ 7] 。因此在软件实现过程中, 采用了分层的软件架构将分块管理软件分为Flash 驱动层、No rFlash 分块管理层和数据类型管理层三层。具体的软硬件分层示意图如图3 所示。
图3 存储模块软件构架
软件最底层为Flash 驱动层, 考虑到NOR Flash存储器的多样性, 并且各种器件的底层驱动可能不同, 因此Flash 驱动层的建立可以向分块管理层屏蔽具体的硬件信息。一般驱动层的实现主要采用函数指针的方法进行[ 8] , 初始化时通过读取不同Flash 的ID 分别对read、write 和erase 等基本操作函数指针进行赋值, 此后上层软件在对Flash 进行实际操作时则通过函数指针进行, 并不清楚具体的Flash 信息。在嵌入式系统中, 非易失性数据的种类有多种多样, 因此分块管理层本身并不涉及具体类型数据的存储方法, 只是预留几个字段用于记录数据类型等信息[ 9] 。这些字段用于数据类型管理程序初始化时使用。数据类型管理层的主要功能是管理NOR Flash存储器中不同类型的数据, 向应用程序提供基于数据类型的各种操作, 屏蔽掉具体的分块管理信息。分块管理层程序负责资源回收算法、开机Flash 异常恢复算法的实现, 同时向数据类型管理层提供各种类型数据的所在的分块地址信息。通过这种构架使得每一层的实现都易于采用面向对象的思想实现, 其中从底层至上层的对象分别Flash、分块、数据类型。
6 结语
通过采用分块管理与状态转换的方法, Flash的存储性能有了较大的改善, 而且数据的可靠性也有很大提高, 特别适用于无文件系统嵌入式设备中的数据存储。同时通过合理的软件构架使得各个分层都易于采用面向对象的思想实现, 这样有利于软件的扩展与移植。目前这种方法已经在数字电视机顶盒中采用, 实现效果甚好, 并且为上层软件的设计带来很大方便。
- VxWorks中怎么从Flash BOOT(11-15)
- DSP和Flash接口技术的实现(08-15)
- 基于JTAG的DSP外部FLASH在线编程与引导技术(01-22)
- TMS320F2812片内Flash在线烧写技术研究(01-23)
- 基于VxWorks的文件系统的研究与实现(09-18)
- TMS320C6713B DSP的外部FLASH引导(03-02)