LiteOS新增加flash操作工具easyflash
0前沿
嵌入式操作系统在逐渐变大使用存储后,会月到flash驱动问题,如果使用通用SPI数据的读写,会造成flash器件重复读写问题,同时也会到对每个不同flash设计驱动问题,为了减少这个问题,开源社区上就开始逐渐出现了各种通用flash驱动,以便对lash进行基本操作如初始化格式化等问题。
今天的主角是easyflash
1、easyflash简介
easyflash是armink大神在github上的开源项目,大神就不介绍了,嵌入式操作系统很多人都听说过。开源文件地址:https://github.com/armink/EasyFlash
EasyFlash是一款开源的轻量级嵌入式Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发。非常适合智能家居、可穿戴、工控、医疗、物联网等需要断电存储功能的产品,资源占用极低,支持各种 MCU 片上存储器。该库主要包括 三大实用功能 :
ENV 快速保存产品参数,支持 写平衡(磨损平衡) 及 掉电保护 功能
EasyFlash不仅能够实现对产品的 设定参数 或 运行日志 等信息的掉电保存功能,还封装了简洁的 增加、删除、修改及查询 方法, 降低了开发者对产品参数的处理难度,也保证了产品在后期升级时拥有更好的扩展性。让Flash变为NoSQL(非关系型数据库)模型的小型键值(Key-Value)存储数据库。
IAP 在线升级再也不是难事儿
该库封装了IAP(In-Application Programming)功能常用的接口,支持CRC32校验,同时支持Bootloader及Application的升级。
Log 无需文件系统,日志可直接存储在Flash上
非常适合应用在小型的不带文件系统的产品中,方便开发人员快速定位、查找系统发生崩溃或死机的原因。同时配合EasyLogger(我开源的超轻量级、高性能C日志库,它提供与EasyFlash的无缝接口)一起使用,轻松实现C日志的Flash存储功能。
2、easyflash特征
资源占用:
最低要求: ROM: 6K bytes RAM: 0.1K bytes
支持平台:
目前已移植硬件平台有 stm32f10x与 stm32f4xx 系列的片内Flash,片外的 SPI Flash(基于 SFUD),这些也是产品使用的平台。其余平台的移植难度不大,在项目的设计之初就有考虑针对所有平台的适配性问题(64位除外),所以对所有移植接口都有做预留。移植只需修改 \easyflash\port\ef_port.c 一个文件,实现里面的擦、写、读及打印功能即可。
许可:
采用 MIT 开源协议,细节请阅读项目中的 LICENSE 文件内容。
3LiteOS对easyflash的支持和demon
很可惜,现在liteos这边对easyflash版本支持在3.3.0,不是最新的v4版本,在性能上还有些差别。
启用easyflash demo 功能
依然是在执行make menuconfig
命令中配置使能;
Demos --->
Utility Demo --->
[*] Enable EasyFlash Demo
勾选EasyFlash Demo后,自动使能其依赖的EasyFlash组件。保存并退出menuconfig后,自动执行components/download.sh脚本。
LiteOS会自动从互联网下载EasyFlash-3.3.0源代码,从gitee的LiteOS_Components组件仓库下载对应的patch包,并把该patch打入源码中。
编译工程下载后就可以测试了,通过help可以查询easyflash的命令。
参考例程如下:
********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.1.0
build data : Dec 18 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 initialize success.
[Flash]EasyFlash V3.3.0 is initialize success.
[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.
- 点赞
- 收藏
- 关注作者
评论(0)