|
发表于 2019-1-19 09:45:02
|
显示全部楼层
本帖最后由 kebaojun305 于 2019-1-19 09:48 编辑
https://github.com/nickfox-taterli/nor_flash_wl 这里有个 磨损均衡得中间层。
好用的NOR Flash磨损平衡算法
因为SPI Flash也是有寿命的,所以要磨损平衡.一般Flash自己擦改写,总在一个位置嘛,容易死,不总在又不知道怎么写算法,我现在写了一个简单的算法,有个算法例子和核心文件.本系统只需60Byte+Buffer Size的RAM,另外3级优化下只需要1KB的Flash,NOR的冗余和数据占用根据Flash不同会有所改变.
需要移植以下内容.
SPI Flash的写(Multi-Byte),读(Multi-Byte),擦(SubSector).
Malloc的实现,我用FreeRTOS了.
CRC的实现,一般单片机有硬件支持.
使用磨损平衡中间层的好处是什么?
基于SPIFFS能实现磨损平衡,但是不支持Windows/Linux/Mac操作系统读写.也就是仅能MCU自己处理.
一般系统中基于FATFS不能实现磨损平衡,如果添加这个磨损平衡中间层,就能实现了.
SPI FLASH典型100K寿命,但是EEPROM典型1KK寿命,使用磨损平衡后,如果储存的数据只有1MByte,那么16Mbyte的SPI FLASH也能达到1KK寿命以上.而1MByte的EEPROM远比16MByte的SPI Flash贵.
SPI FLASH + 磨损平衡读写速度优于EEPROM. |
|