码云最有价值开源项目:EasyFlash

Posted 最后一个bug

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了码云最有价值开源项目:EasyFlash相关的知识,希望对你有一定的参考价值。

更多精彩,请点击上方蓝字关注我吧!

我负责编辑转发分享给大家码云最有价值开源项目:EasyFlash,以下的“我皆指作者。

EasyFlash 想必大家都不陌生了,这是我开源的第二个嵌入式软件,它的出现为嵌入式产品提供了简洁、易用、高可靠的参数存储方案。但我一直认为它不够完美,所以完全重写了全新 V4.0 版本。


EasyFlash


▲▲▲

为什么要开发 V4.0

先来跟大家一起回顾下 V4.0 开发的初衷。

从 2015 年 1 月在本坛发布的 第一个 EasyFlash 版本 ,EasyFlash 也已经伴随了大家 4 年多的时光。在这 4 年多的时间里,有很多其他行业的嵌入式开发者与我取得联系,得知他们已经将  EasyFlash  应用于自己的产品上,我心里也倍感欣慰,可见 EasyFlash 的成熟性已经得到了很多行业的认可。大家普遍的感觉是 EasyFlash 功能简洁,可以很容易的应用于产品上。但随着技术的演进,大家对于 KV 需求的多样化,对于 MCU 资源(主要是 RAM)、Flash 存储资源、Flash 寿命等性能指标要求越来越高,旧版本的 EasyFlash 在这些方面还是有提升的空间。比如:

  1. 每个存储在 Flash 上的 ENV 都会在 RAM 中缓存一份,这样做虽然能够简化实现,但确实会占用很多 RAM 资源;

  2. ENV 的值类型只支持字符串,如果想要保存其他类型的值(比如:数组、结构体)就比较麻烦了,虽然我后来为此又专门开发了 struct2json 开源软件,但还是不够便捷;

  3. 每次保存 ENV 都需要重新擦写整个 Flash 扇区,那么位于扇区尾部未使用的区域始终无法得到利用,降低了 Flash 的使用效率,也就降低了 Flash 的使用寿命。

从 2017 年初开始,我便开始准备 EasyFlash 的性能优化工作,结合大家的需求,不断的整理、迭代设计文档,也与一些社区爱好者做过非常深入的交流。最终确定下来,如果单纯的在原有基础上进行完善,那么会有太多的功能实现受到限制,所以干脆重新开发全新一代 ENV 功能组件,这个版本被命名为 NG(Next Generation) 版本。

NG 版本差不多在 2017 年底就已经设计完毕,但一直没时间去开发。最近在亲人的支持下,终于利用 2019 年春节的假期,在岳父母家完成了 V4.0 NG 版本的开发(在此感谢岳父母、爱人的支持)。

V4.0 的新特色有哪些

1. 更小的资源占用,内存占用 几乎为 0 ;

2. ENV 的值类型支持 任意类型 、任意长度,相当于直接 memcpy 变量至 flash ;

3. ENV 操作效率比以前的模式高,充分利用剩余空闲区域,擦除次数及操作时间显著降低;

4. 原生支持 磨损平衡、掉电保护功能 (V4.0 之前需要占用额外的 Flash 扇区);

5. ENV 支持 增量升级 ,固件升级后 ENV 也支持升级;

6. 支持大数据存储模式,长度无限制,数据可在多个 Flash 扇区上顺序存储;

7像脚本程序、音频等占用 Flash 超过 1 个扇区的资源也都可以存入 ENV(即将在 V4.1 支持);

8. 支持 数据加密 ,提升存储的安全性,物联网时代的必备功能(即将在 V4.2 支持);

9. 支持 数据压缩 ,减低 Flash 占用(即将在 V4.3 支持);

V4.0 的开发与测试并行进行

虽然这次发布的版本为 beta 版本,但也已经在多个平台上做过验证,STM32F1/F2/F4 片上 Flash 还有片外的 Nor Flash ,由于时间紧迫,功能的开发的过程基本都是与功能测试同步进行,还好前期的设计工作基本到位,功能开发工作进行的基本顺利。

测试时间花费最多的工作是在随机掉电测试环节,这个测试关乎着 EasyFlash 的可靠性及容错性能,可靠性是我非常关心的一点,毕竟 ENV 功能被大家常用于产品参数的存储,出现参数丢失一定会严重影响产品功能及用户体验。最终 EasyFlash 通过了上万次的随机掉电测试,可靠性基本满意。不仅仅有代码,文档也已经同步更新,甚至还有设计文档,在完成测试的工作后,这两天我把文档进行了同步更新。

与以前不同的是,这次我还发布了 V4.0 设计文档(PS:设计文档整理还是高铁上完成的),也想让大家对 EasyFlash 的内部工作原理有了更加深刻理解,后面才能把它用的更加精通。

目前 EasyFlash 已经在 RT-Thread 的在线软件包中,但还是 V3.X 版本,近期很快也将升级至 V4.0 ,方便更多使用 RT-Thread 的开发者开箱即用。

奖牌

最后,贴一张 开源中国 OSChina 颁发给 EasyFlash 的“码云最有价值开源项目”奖牌。EasyFlash 能有幸成为 GVP 项目,这离不开所有参与贡献的开发者的支持,也包括我的家人。未来也希望能够有更多爱好者加入进来,共同完善 EasyFlash ,让 EasyFlash 走的更远。


GitHub:https://github.com/armink/EasyFlash

也可通过网盘下载源码:

https://pan.baidu.com/s/1sqAss383OTrQr7eSboTiPA 

提取码:6x07


如果喜欢 EasyFlash ,记得分享给朋友哦~~

码云最有价值开源项目:EasyFlash
码云最有价值开源项目:EasyFlash
码云最有价值开源项目:EasyFlash

MBD与嵌入式开发York.Yu


码云最有价值开源项目:EasyFlash






结束语

码云最有价值开源项目:EasyFlash

推荐好文  点击蓝色字体即可跳转

以上是关于码云最有价值开源项目:EasyFlash的主要内容,如果未能解决你的问题,请参考以下文章

华为方舟编译器获国内“最有价值开源项目”

牛逼,被 Gitee 评为最有价值的开源项目!

牛逼,被 Gitee 评为最有价值的开源项目!

“最有价值开源项目”称号加身,方舟编译器亮相开源年度盛典

PHPRAP v1.0.8 版本发布,安装时数据库不存在自动创建

盘点重量级的国产开源项目,你用过哪款?