yaffs文件系统
Yaffs是专门针对NAND闪存特性设计的文件系统。其久经考验的主要功能是:
- 快速-通常比替代品快得多易于移植(当前已移植到GNU / Linux,WinCE,eCOS,pSOS,VxWorks和各种裸机系统)
- 日志结构化,可提供损耗平衡并使其非常坚固
- 支持多种闪存几何结构,包括2K字节和512字节页面NAND闪存芯片 支持MLC和SLC闪存
- 快速安装-几乎立即启动
- 通常使用比同类文件系统更少的RAM
- 适用于大多数情况的灵活许可
开发遇到的问题
由于Yaffs是日志结构的,因此需要RAM来建立运行时数据结构,以获得可接受的性能。根据经验,每块 NAND闪存的预算约为2个字节,其中一块通常为NAND的一页。对于具有512字节页的NAND,每1Mb的NAND预算大约4kbyte的RAM。对于2kb的页面设备,每1Mb的NAND预算约为1kb。
实际产品开发使用的是STM32L4R5ZIT6这款芯片640 KB的SRAM,搭配一个512M的NandFlash,实际使用过程中出现内存消耗严重,对文件系统分配320KB的空间进行存储数据使用,应用程序使用剩下的,这样的分配导致内存使用过快,但是其flash数据并没有存满。
解决方案
对yaffs文件系统挂载进行分区处理,即分割文件系统挂载,这样可以确保系统内存合理使用。
512M的Flash空间分成3个区域,主分区、采集分区和数据分区,其中数据分区进行细分,分成5个大小一致的小数据分区,当其中的小数据分区存储满时进行数据分区切换,这样的策略可以保证文件系统对内存的依赖降低。
- MTD分区建立,修改nandflash参数
- 初始化分区信息,块区信息分配记录
- 离线切换分区存储数据
断网:检查当前分区是否存满或者内存使用超限
切换到下一个可用的分区

本文探讨了在STM32L4R5ZIT6芯片上使用Yaffs文件系统的内存管理问题,针对512M NAND Flash内存消耗不合理的情况,提出了一种通过分区管理和动态切换策略优化内存使用的解决方案。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



