授权协议: MIT
开发语言: C/C++
操作系统: 嵌入式
收录时间: 2015-03-02
提 交 者: armink

1、介绍

EasyFlash是一款开源的轻量级面向嵌入式平台的Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发。非常适合智能家居、可穿戴、工控、医疗等需要断电存储功能的产品,资源占用极低,支持各种 MCU 片上存储器。该库目前提供 三大实用功能 :

  • Env 小型KV数据库,支持 写平衡(磨损平衡) 及掉电保护模式

让Flash变为NoSQL(非关系型数据库)模型的小型键值(Key-Value)存储数据库。在产品上,能够更加简捷的实现 设定参数 或 运行日志等信息掉电保存的功能。

  • IAP 在线升级再也不是难事儿

该库封装了IAP(In-Application Programming)功能常用的接口,支持CRC32校验,同时支持Bootloader及Application的升级。

  • Log 无需文件系统,日志可直接存储在Flash上

非常适合应用在小型的不带文件系统的产品中,方便开发人员快速定位、查找系统发生崩溃或死机的原因。同时配合EasyLogger(我开源的超轻量级、高性能C日志库,它提供与EasyFlash的无缝接口)一起使用,轻松实现C日志的Flash存储功能。

1.1、V4.0 NG 模式

自 2019 年春节后,EasyFlash 经过 4 年多的迭代,结合众多开发者的需求及建议,终于发布了 V4.0 版本,该版本中的 ENV 功能被命名为 NG (Next Generation) 模式,这是一个完全重构的新版本,具有以下新特性:

  • 更小的资源占用,内存占用 几乎为 0 ;(V4.0 以前版本会使用额外的 RAM 空间进行缓存)

  • ENV 的值类型支持 任意类型 、任意长度,相当于直接 memcpy 变量至 flash ;(V4.0 之前只支持存储字符串)

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

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

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

  • 支持大数据存储模式,长度无限制,数据可在多个 Flash 扇区上顺序存储。像脚本程序、音频等占用 Flash 超过 1 个扇区的资源也都可以存入 ENV(即将在 V4.1 支持);

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

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

1.2、资源占用

最低要求: ROM: 6K bytes     RAM: 0.1K bytes

1.3、支持平台

目前已移植硬件平台有 stm32f10x 与 stm32f4xx 系列的片内Flash,SPI Flash,这个也是笔者产品使用的平台。其余平台的移植难度不大,在项目的设计之初就有考虑针对所有平台的适配性问题(64位除外),所以对所有移植接口都有做预留。移植只需修改 \easyflash\port\ef_port.c 一个文件,实现里面的擦、写、读及打印功能即可。

欢迎大家 star and pull request(Github|OSChina) 。开源软件的成功离不开所有人的努力,也希望该项目能够帮助大家降低开发周期,让产品更早的获得成功。

2、流程

2.1、Env:环境变量(KV数据库)

下图为通过控制台(终端)来调用环境变量的常用接口,演示了以下过程,这些接口都支持被应用层直接调用。

  • 1、创建“温度”的环境变量,名为 temp,并且赋值为 123;
  • 2、保存“温度”到Flash中并重启;
  • 3、检查“温度”是否被成功保存;
  • 4、修改“温度”值为 456 并保存、重启;
  • 5、检查“温度”是否被成功修改;
  • 6、删除“温度”的环境变量。

2.2、IAP:在线升级

下图演示了通过控制台来进行IAP升级软件的过程,使用的是库中自带的IAP功能接口,演示采用的是串口+Ymodem协议的方式。你还也可以实现通过CAN、485、以太网等总线,来实现远程网络更新。

2.3、Log:日志存储

下图过程为通过控制台输出日志,并将输出的日志存储到Flash中。重启再读取上次保存的日志,最后清空Flash中的日志。

3、文档

务必保证在 阅读文档 后再移植使用。

4、支持

如果 EasyFlash 解决了你的问题,不妨请我 喝杯咖啡~

5、版权

采用 MIT 开源协议,细节请阅读项目中的 LICENSE 文件内容。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

EasyFlash 的相关博客

RT-Thread Studio移植EasyFlash和ulog_easyflash注意事项

Github官方源码及文档看这里: https://github.com/armink/EasyFlash https://github.com/armink-rtt-pkgs/ulog_easyflash 移...

如何在嵌入式产品中应用键值存储数据库

在互联网快速发展及大数据时代的到来,NoSQL数据库以其强大的可伸缩性、高效性、实时性等特点,而获得十足的发展。键值(Key...

【RT-Thread开源作品秀】供电所综合网关(1)

概述 本项目作者为姜春波,和波哥面对面请上B站回看上期访谈节目! 本篇文章将分为1、2两篇连载,第2篇将对本项目的“具体实现...

《痞子衡嵌入式半月刊》 第 7 期

痞子衡嵌入式半月刊: 第 7 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节...

开源项目|RT-Thread 软件包应用作品:小闹钟

简介 冬天的早上比较冷,早上6点半起不来,于是就想用这个做一个小闹钟,利用蜂鸣器响铃来强迫自己起床。 当然同时还有更多的...

开源项目|RT-Thread 软件包应用作品:水墨屏桌面台历

简介 平时经常会有一些事情忘记,比如今天几号,星期几,哪天有什么事情要做。有时候写在本子上,有时候记在微信里,但有时候...

RT-Thread物联网开发者沙龙(北京站)等你来撩!

在RT-Thread 3.0发布会上,睿赛德宣布了RT-Thread开发者计划之一是在不同城市举行开发者沙龙,以加强RT-Thread开发者相互间的...

开源项目|软件包应用作品:通用物联网系统平台

简介 当前国内互联网的发展迅猛,物联网云、边缘计算等技术也从概念技术逐步变为可靠的工程应用技术,加之国民对智能化生活的...

【DIY数字仪表】RT-Thread结合TouchGFX实战教程

目录 【DIY数字仪表】STM32F429移植TouchGFX到RT-Thread系统(1) 【DIY数字仪表】使用TouchGFX的MVP架构来实现GUI和硬件的双...

规模比互联网大 30 倍的物联网,如何入门?

图片来源网络 近几年来,物联网发展迅速:据中商产业研究院《2016——2021年中国物联网产业市场研究报告》显示,预计到2020年...

EasyFlash 的相关问答

2
回答

评论 (11)

加载中
我的项目情况:c8051f020(8位单片机)+m45pe16(2M BYTES flash),要存储的是9种记录(类似日志大概几十个字节),请问如果移植时log能分成几个隔离的日志区吗?请问easy flash和easy log我该用那个移植?在输出到flash的同时能输出到串口吗(调试阶段))?
2017/06/02 21:50
回复
举报
打分: 推荐
磨损均衡可以改进
2017/04/27 16:46
回复
举报
打分: 推荐
挺好,不知道能不在lpc4370+freertos中使用
2016/12/30 19:14
回复
举报
底层软件,貌似gpl不够友好,传染性太强 EasyFlash
2015/03/03 09:10
回复
举报
好东西 EasyFlash
2015/03/03 17:40
回复
举报
感觉像uboot EasyFlash
2015/03/03 23:28
回复
举报
赞的!用于在片内Flash上保存一些参数、配置,这个是绝佳 EasyFlash
2015/03/04 09:08
回复
举报
不错 #EasyFlash#
2015/11/02 21:11
回复
举报
加油,龙哥 #EasyFlash#
2015/11/02 22:19
回复
举报
掉电保护好像有点问题? #EasyFlash#
2016/01/31 15:01
回复
举报
更多评论
11 评论
187 收藏
分享
返回顶部
顶部