摘要:EasyFlash是一個開源的輕量級嵌入式閃存庫。
本文分享自華為雲社區《LiteOS組件嘗鮮-玩轉EasyFlash》,作者:Lionlace 。
基本介紹
EasyFlash是一個開源的輕量級嵌入式閃存庫,它資源占用低,為MCU(微控制單元)提供了方便的應用接口,使得開發者實現基於Flash存儲器的應用開發更加輕松快捷,在智能家居、可穿戴、工控、醫療、物聯網等需要斷電存儲功能的產品領域都可以廣泛應用。
該庫目前主要提供如下功能:
- Env(環境變量)快速保存產品參數;
- 支持寫平衡模式(磨損均衡)及掉電保護。
EasyFlash不僅可以存儲設置參數及運行日志,提供掉電保護功能,同時封裝了添加、刪除、修改和查詢方法,幫助開發人員更輕松地處理產品參數。Easyflash同時可將Flash變為NoSQL(非關系型數據庫)模型的小型鍵值(Key-Value)存儲數據庫。
使用說明
使能 EasyFlash Demo
以Linux系統編譯環境和Cloud_STM32F429IGTx_FIRE開發板為例,拷貝Cloud_STM32F429IGTx_FIRE開發板的默認配置文件${platform}.config到在LiteOS工程的根目錄下,並重命名為.config。
cp tools/build/config/Cloud_STM32F429IGTx_FIRE.config .config
在LiteOS工程的根目錄下執行make menuconfig命令,並勾選以下相關配置,使能。
EasyFlash Demo: Demos ---> Utility Demo ---> [*] Enable EasyFlash Demo
勾選EasyFlash Demo后,自動使能其依賴的EasyFlash組件。保存並退出menuconfig后,自動執行components/download.sh腳本。
- 從互聯網下載EasyFlash-3.3.0源代碼。
- 從gitee的LiteOS_Components組件倉庫下載對應的patch包,並把該patch打入源碼中。
關於組件下載的詳細流程請參考:https://gitee.com/LiteOS/LiteOS_Components#%E5%9C%A8%E7%BA%BF%E7%BB%84%E4%BB%B6%E4%B8%8B%E8%BD%BD%E6%B5%81%E7%A8%8B
注:下載組件時,Linux環境可以訪問互聯網,並已安裝git工具。
編譯運行 EasyFlash Demo
在LiteOS工程根目錄下執行以下命令進行編譯:
make clean ; make -j
編譯結束后,在out/Cloud_STM32F429IGTx_FIRE/lib目錄下生成libeasyflash.a和libef_demo.a,系統鏡像文件為out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.bin。
燒錄系統鏡像文件到Cloud_STM32F429IGTx_FIRE開發板,上電復位后可以看到串口輸出Demo運行結果日志如下所示。
********Hello Huawei LiteOS******** LiteOS Kernel Version : 5.1.0 build date : Nov 22 2021 17:13:30 ********************************** OsAppInit cpu 0 entering scheduler app init! Hello, welcome to liteos demo! [SFUD]Find a Winbond W25Q256JV flash chip. Size is 33554432 bytes. [SFUD]W25Q256JV flash device is initialized successfully. [Flash]EasyFlash V3.3.0 is initialized successfully. [Flash]You can get the latest version on https://github.com/armink/EasyFlash . Huawei LiteOS # Ready to write Event. Save env, "TickCount"=2007 Ready to write Event. Save env, "TickCount"=4007 Ready to write Event. Save env, "TickCount"=6007 Ready to write Event. Save env, "TickCount"=8007 Get Env, TickCount=8007 Swtmr delete. Mutex delete. Event destroy. Easyflash task delete.