SoC嵌入式软件架构设计之七:嵌入式文件系统设计

简介:

    嵌入式的系统区(system disk,SD)包含操作系统、驱动、中间件、应用和字库、UI资源等文件,本文讲述SD区的文件系统设计。文件系统最基本的目标是为了实现单个文件的定位和读写。由于一般代码都是不可自改动的。即量产之后不会有写操作。嵌入式系统的SD文件系统就是为了可以简单、高效地定位某个文件和读取文件里的数据。设计原则和要点有下面几方面:

       1. 逻辑连续存储单个文件,以扇区对齐。

        SD区的单个代码和资源文件一般都不大。所以不必要像fat32文件系统那样用fat表把文件簇串起来。直接逻辑连续地存储起来就可以,这样定位也会更加简单高速,当然文件应该以扇区来对齐。方便读取,文件偏移信息也能用扇区数来记录。  


       2. SD头

       这是对整个SD区属性的描写叙述,包含校验码、版本、日期、OEM厂商等等。有时为了保证知识产权,还会加上一些防止拷贝的加密ID信息。


       3. DIR节

        DIR节就是文件夹信息,即每一个文件在SD区中的定位信息。是SD文件系统最重要的数据结构。文件的定位就是依赖于文件夹信息进行。打包工具会按一定的顺序将各个文件打包。并相应按顺序产生每一个文件相应的文件夹信息。每一个文件的文件夹数据结构例如以下:

        1)文件名称,通常是8+3格式

        2)文件属性。区分系统文件和应用文件、隐藏文件等

        3)文件在SD区中的偏移量,以扇区为单位

        4)文件大小,字节为单位

        5)校验码


        4. 文件数据

        DIR节之后就是一个个真实的代码和资源和配置等文件。


        5. fopen

        打开文件即依据文件名称在DIR节中匹配,匹配成功就可以获得文件在SD中的偏移量,将这偏移量右移9位(即512字节。一个扇区)即是文件的位置。fopen返回的是一个句柄,该句柄相应一个数据结构,结构一般包含:文件的起始位置、长度、当前读指针位置等。

记录起始位置和长度是为了防止越界读取。


        6. fread

        依据句柄的当前读指针进行读取。读后要改动当前读指针。


        7. fseek

        依据模式来直接改动读指针。

         

        须要清除的是:SD区是一个逻辑区,其仅仅是固件的一部分。一个固件会包含引导区、SD区、VM区、特定功能区(如VM)。之后才是数据区。这个数据区就会部署fat32或者exfat等标准文件系统。

下一节再继续解说固件分布设计。






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5392048.html,如需转载请自行联系原作者  

相关文章
|
7月前
|
调度
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(二)
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构
175 0
|
7月前
|
存储
嵌入式微处理器的系统架构中指令系统
嵌入式微处理器的系统架构中指令系统
76 0
|
7月前
|
架构师 测试技术 Linux
嵌入式软件架构中抽象层设计方法
嵌入式软件架构中抽象层设计方法
244 0
|
7月前
|
中间件 编译器 调度
嵌入式软件架构基础设施设计方法
嵌入式软件架构基础设施设计方法
178 0
|
4月前
|
存储 缓存 Cloud Native
阿里云EMR数据湖文件系统问题之JindoFS架构升级后的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS架构升级后的问题如何解决
|
5月前
|
安全 API 调度
「架构」嵌入式鸿蒙架构
**鸿蒙嵌入式架构概览** HarmonyOS,华为的分布式操作系统,应用于嵌入式设备,以微内核、跨平台能力和组件化设计著称。核心功能包括设备统一管理、分布式软总线及安全机制。特点:低时延、高安全性、易开发。优点在于灵活性、扩展性和性能,但需构建生态、增加开发者资源和争取市场认可。采用模块化设计,支持多语言开发,利用分布式通信协议和硬件抽象层,通过Huawei AppGallery推动应用生态。
227 0
|
7月前
|
物联网 编译器 测试技术
【嵌入式 交叉编译器】如何在 ARM 架构下选择和使用高版本交叉编译器
【嵌入式 交叉编译器】如何在 ARM 架构下选择和使用高版本交叉编译器
1037 7
|
7月前
|
存储 传感器 缓存
轻量级的嵌入式模块化软件架构
轻量级的嵌入式模块化软件架构
143 1
|
7月前
|
存储 机器学习/深度学习 人工智能
嵌入式中一文搞懂ARM处理器架构
嵌入式中一文搞懂ARM处理器架构
320 1
|
7月前
|
程序员 Linux
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(三)
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构
144 0

热门文章

最新文章