LiteOS新增加flash操作工具easyflash

举报
o0龙龙0o 发表于 2021/12/18 13:28:09 2021/12/18
【摘要】 嵌入式操作系统在逐渐变大使用存储后,会月到flash驱动问题,如果使用通用SPI数据的读写,会造成flash器件重复读写问题,同时也会到对每个不同flash设计驱动问题,为了减少这个问题,开源社区上就开始逐渐出现了各种通用flash驱动,以便对lash进行基本操作如初始化格式化等问题。

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.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。