yaffs文件系统-内存挂载分区优化处理方案:针对于小内存

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

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个大小一致的小数据分区,当其中的小数据分区存储满时进行数据分区切换,这样的策略可以保证文件系统对内存的依赖降低。

  1. MTD分区建立,修改nandflash参数
  2. 初始化分区信息,块区信息分配记录
  3. 离线切换分区存储数据
    断网:检查当前分区是否存满或者内存使用超限
    切换到下一个可用的分区
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值