介紹
EasyFlash 是一款開源的輕量級嵌入式Flash存儲器庫,方便實現基於Flash存儲器的常見套用開發。適合智慧型家居、可穿戴、工控、醫療等需要斷電存儲功能的產品,資源占用低,支持各種 MCU 片上存儲器。
該庫目前提供三大實用功能:
•Env:小型KV資料庫,支持寫平衡(磨損平衡)及掉電保護模式
EasyFlash不僅能夠實現對產品的設定參數或運行日誌等信息的掉電保存功能,還封裝了簡潔的增加、刪除、修改及查詢方法, 降低了開發者對產品參數的處理難度,也保證了產品在後期升級時擁有更好的擴展性。讓Flash變為NoSQL(非關係型資料庫)模型的小型鍵值(Key-Value)存儲資料庫。
•IAP:線上升級再也不是難事兒
該庫封裝了IAP(In-Application Programming)功能常用的接口,支持CRC32校驗,同時支持Bootloader及Application的升級。
•Log:無需檔案系統,日誌可直接存儲在Flash上
非常適合套用在小型的不帶檔案系統的產品中,方便開發人員快速定位、查找系統發生崩潰或當機的原因。同時配合EasyLogger(我開源的超輕量級、高性能C日誌庫,它提供與EasyFlash的無縫接口)一起使用,輕鬆實現C日誌的Flash存儲功能。
V4.0 NG 模式
EasyFlash 經過 4 年多的疊代,發布了完全重構的 V4.0 版本,該版本中的 ENV 功能被命名為NG(Next Generation) 模式,具有以下新特性 :
•更小的資源占用,0 記憶體占用;
•ENV 的值類型支持任意類型、任意長度;
•ENV 操作效率比以前的模式高,充分利用剩餘空閒區域;
•原生支持磨損平衡、掉電保護功能 ;
•ENV 支持增量升級,固件升級後 ENV 也支持升級;
•支持大數據存儲模式,長度無限制。占用 Flash 超過 1 個扇區的資源可以直接存入 ENV(即將在 V4.1 支持);
•支持數據加密,提升存儲的安全性,物聯網時代的必備功能(即將在 V4.2 支持);
•支持數據壓縮,減低 Flash 占用(即將在 V4.3 支持);
V4.0 設計及內部原理,V4.0 遷移指南等更多內容請繼續閱讀下面的文檔章節
資源占用
最低要求: ROM: 6K bytes RAM: 0.1K bytes
支持平台
目前已移植硬體平台有stm32f10x與stm32f4xx系列的片內Flash,SPI Flash,這些也是筆者產品使用的平台。其餘平台的移植難度不大,在項目的設計之初就有考慮針對所有平台的適配性問題(64位除外),所以對所有移植接口都有做預留。移植只需修改\easyflash\port\ef_port.c一個檔案,實現裡面的擦、寫、讀及列印功能即可。
文檔
•API 文檔:\docs\zh\api.md
•移植文檔:\docs\zh\port.md
•V4.0 遷移指南:\docs\zh\v4_migrate.md
•V4.0 ENV 功能設計與實現:\docs\zh\design.md
許可
採用 MIT 開源協定,細節請閱讀項目中的 LICENSE 檔案內容。
版本更新
V1.04.20:新增支持裸機及STM32F4平台
V1.06.10:新增日誌保存功能
V1.07.10:新增掉電保護功能
V2.02.11:新增類型轉換外掛程式
V3.0.0 :新增增量升級功能