Flash损耗均衡的嵌入式文件系统设计
上述文件系统底层驱动函数中,净簇的申请函数(unsigned long app_clus(void))直接影响到对存储器存储区域的使用分配。该函数的流程体现了对存储器存储区域的使用次数的平均分配。
函数功能描述:申请一个净簇。
入口参数:无。
出口参数:0x100000,申请到净簇的页地址;NO_CLEAN_SECTOR,没有干净的存储空间。
该函数的流程如图4所示,程序从存储区的第一页开始到最后一页申请一个净簇,若成功,返回簇地址;若失败,则进行脏簇的清理,然后从清理过的存储区中再申请一个净簇,成功则返回簇地址,失败则进行错误处理,程序结束。本文引用地址:https://www.eepw.com.cn/article/150567.htm
3.3 Flash设备驱动
对文件系统的操作归根结底是对存储器的读写操作。文件操作时设备驱动程序为文件系统提供对存储器的控制,一般包括读、写和复位操作。本文基于Flash芯片AT45DB081存储器,为文件系统提供表3所列的驱动函数。
完成以上的软硬件设计,基于PC机编写一个客户端测试软件,通过自定的协议对文件进行操作,下载一个文件到文件系统,之后读取比较,从而验证文件系统的正确性。
结语
本文的方案主要针对存储器的耗损均衡控制进行了重点设计,延长了Flash存储器的使用寿命。对于文件的校错、纠错等其他功能并未详细设计,采用单级目录,不支持多级目录。整个方案已在由单片机ATmega128及Flash AT45DB081组成的系统上具体实现及验证,取得很好的效果。本文件系统在基于Flash存储器的日志型数据采集记录应用中具有较高的应用价值。
评论