MCU平台下一种简单的文件系统设计构想

本文介绍MCU平台下一种简单的文件系统设计构想。

在使用MCU的项目中,经常会涉及到一些数据的存储,受限于硬件,又不太可能直接上文件系统(如FAT文件系统),直接指定存储地址,数据长度对数据进行读写,不同类型的数据比较多时,又会显得凌乱,本文参考FAT及其他文件系统,设计一个简单的文件系统,方便在数据量不大的存储器上使用。

1.基本思想

在存储器(EEPROM,Flash)分配一定的存储空间给文件描述区,用于指示文件类型长度,存储位置,长度等信息。而数据区存放文件描述区所描述的数据。

1)将文件描述和实际文件数据分离,如下图所示。

2)在文件描述区中有多个文件描述项,分别对不同的类型的数据作描述,包括其文件ID,存储地址,长度等,从该区域可以索引到实际数据存储区域,如下图所示。

2.各区域主要内容

1)文件描述区

文件描述区中最重要的是一个查找表(LUT),查找表内容如下图。

2)数据区

数据区中主要是用户数据及校验码(用于校验数据是否有错误),数据区的内容如下图。

3.数据结构

主要的数据结构定义如下,逻辑实现比较简单,就不写了。

cpp 复制代码
typedef enum _DATA_ID
{
	DATA_ID_0 = 0,
	DATA_ID_1 = 1,
	DATA_ID_2 = 2,
	DATA_ID_3 = 3,
	DATA_ID_NUM = 4
}DATA_ID;

typedef struct _LUT_ITEM
{
	DATA_ID DataId;
	uint32_t Address;
	uint32_t nLength;
}LUT_ITEM;

typedef struct _SIMPLE_FILE_SYSTEM
{
    uint16_t MagicNumber;
	uint16_t DataItemNum;
	LUT_ITEM LutTbl[DATA_ID_NUM];
}SIMPLE_FILE_SYSTEM;

SIMPLE_FILE_SYSTEM SimpleFileSystem = 
{
    0x5a5a;
	DATA_ID_NUM,
	{
		{DATA_ID_0, 0x0004, 16},
		{DATA_ID_1, 0x0014, 16},
		{DATA_ID_2, 0x0024, 16},
		{DATA_ID_3, 0x0034, 16}
	}
};

总结,本文介绍了MCU平台下一种简单的文件系统设计构想。

相关推荐
极客 - L U7 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
橘色的喵13 小时前
嵌入式Linux编程,如何把硬件中断交给用户态--UIO 的机制
linux·mcu·isr·中断·uio
笨笨饿2 天前
#143_屏幕画撕裂的问题及解决方法
linux·stm32·单片机·嵌入式硬件·mcu·lvgl·嵌入式实时数据库
李永奉2 天前
杰理可视化SDK开发-音频录制功能使用教程
笔记·单片机·嵌入式硬件·mcu·物联网·音视频
艾络迅Acceleronix2 天前
气象监测:STM32+EG800Z AT + 艾络迅平台实战|气压/光照/雨量采集全流程
stm32·单片机·嵌入式硬件·mcu·物联网·1024程序员节
李永奉2 天前
杰理可视化SDK开发-【BUG】AC7006F8芯片开启一拖二和双麦DNS通话算法后,大概率通话时蓝牙自动断连,RAM空间爆了问题处理
单片机·嵌入式硬件·mcu·物联网·电脑·bug
笨笨饿3 天前
# 59_CSDN博客自动写流程文章
linux·jvm·stm32·单片机·嵌入式硬件·mcu·51单片机
硅基手札4 天前
操作系统设计思想系列 05 · RTOS 核心矛盾 — 资源受限 × 时间确定性的设计决策树
linux·mcu·架构·操作系统·嵌入式开发·rtos·设计思想
李永奉5 天前
杰理可视化SDK开发-【BUG】AC7006F8芯片开启一拖二和双麦通话语音算法后,设置触摸音在唤醒语音助手和通话时触摸音没作用问题
单片机·嵌入式硬件·mcu·物联网·电脑·bug
硅基手札5 天前
SPI技术系列 12 · SPI 设备驱动实战
linux·驱动开发·单片机·嵌入式硬件·mcu·性能优化·系统架构