EasyFlash 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
EasyFlash 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
EasyFlash 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
EasyFlash 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
EasyFlash 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

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 指数为
超过 的项目

评论 (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
回复
举报
更多评论
发表了资讯
2019/08/12 21:31

EasyFlash 4.0 正式版发布,轻量级物联网设备信息存储方案

EasyFlash 是一款轻量级面向嵌入式平台的Flash存储器库,方便开发者更加轻松的实现基于Flash存储器的常见应用开发。非常适合智能家居、可穿戴、工控、医疗等需要断电存储功能的产品,资源占用极低,支持各种 MCU 片上存储器。该库目前提供 三大实用功能 : Env 小型KV数据库,支持 写平衡(磨损平衡) 及掉电保护模式 让Flash变为NoSQL(非关系型数据库)模型的小型键值(Key-Value)存储数据库。在产品上,能够更加简捷的实现 ...

1
22
发表了资讯
2016/02/24 00:00

EasyFlash V2.02.22 发布,新增类型转换插件

EasyFlash 是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大实用功能 : Env 快速保存产品参数,支持 写平衡(磨损平衡) 及 掉电保护 模式 EasyFlash不仅能够实现对产品的 设定参数 或 运行日志 等信息的掉电保存功能,还封装了简洁的增加、删除、修改及查询方法, 降低了开发者对产品参数的处理...

0
13
发表了资讯
2015/07/13 00:00

EasyFlash V1.07.10 发布,新增掉电保护功能

EasyFlash 是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大实用功能 : Env 小型KV数据库,支持 写平衡(磨损平衡) 及 掉电保护 模式 让Flash变为NoSQL(非关系型数据库)模型的小型键值(Key-Value)存储数据库。在产品上,能够更加简捷的实现 设定参数 或 运行日志 等信息掉电保存功能。 IAP ...

13
24
发表了资讯
2015/06/15 00:00

EasyFlash V1.06.10 发布,可以直接保存日志了

EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大实用功能 : Env 让变量轻松实现掉电保存,支持 写平衡 模式,无需担心变量长度、磨损平衡等问题 使用 键值对(key-value) 方式将变量存储到Flash中。在产品上,能够更加简捷的实现 设定参数 或 运行日志等信息掉电保存的功能。 IAP 在线升...

3
15
发表了资讯
2015/04/22 00:00

EasyFlash V1.04.20 发布,新增支持裸机及STM32F4平台

EasyFlash EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 两大实用功能 : Env 让变量轻松实现掉电保存,支持“写平衡”模式,无需担心变量长度、磨损平衡等问题 使用 键值对(key-value) 方式将变量存储到Flash中。在产品上,能够更加简捷的实现 设定参数 或 运行日志 等信息掉电保存的功能...

7
18
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2020/08/17 17:23

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

Github官方源码及文档看这里: https://github.com/armink/EasyFlash https://github.com/armink-rtt-pkgs/ulog_easyflash 移植过程参考官方文档即可,这里简单说一下我自己在移植过程中踩过的坑以及一些注意事项: 尽量在RT-Thread里面使用一种日志,ulog和easylogger尽可能选择其中一个即可,否则会造成一些不必要的麻烦。我原先在开启ulog的基础上配置easylogger的时候,INFO初始化时遇到了问题,后来发现ulog的配置和EasyL...

0
0
发表于硬件 & IoT专区
2015/07/02 10:07

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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:armink.ztl@gmail.com】 ##1、背景 随着互联网快速发展及大数据时代的到来,NoSQL数据库以其强大的可伸缩性、高效性、实时性等特点,而获得十足的发展。键值(Key-Value)存储数据库就是NoSQL的一种,大名鼎鼎的Redis就是一款用C开发的开源键值对存储数据库。 与此同时又有越来越多的厂家加入了IoT产品、可穿戴设备、智能家居的嵌入式产品开发行列中来,数据的持久化...

0
2
发表于硬件 & IoT专区
2020/08/20 19:32

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

概述 本项目作者为姜春波,和波哥面对面请上B站回看上期访谈节目! 本篇文章将分为1、2两篇连载,第2篇将对本项目的“具体实现”方法展开描述! 背景:现有及新建五星供电所安装了很多智能设备,例如光伏储能,中央空调,智能照明,智能窗帘,楼宇种植,门禁系统等等。各个分系统接口不一,并且没有一个统一的接口或平台,该项目主要解决这个问题,并且有一些特殊需求,如载波通讯,及缺相漏电监测等等。 查看视频演示请长按扫描...

0
0
发表了博客
2020/05/06 16:09

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

痞子衡嵌入式半月刊: 第 7 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《痞子衡嵌入式半月刊: 第 6 期》 唠两句 今天是立夏,夏季的第一个节气。立夏表示告别春天,夏天要开始了。今天也是五一小长假最后一天,不知道你的假期...

0
0
发表了博客
2020/10/22 14:08

轻量级嵌入式数据库FlashDB的介绍与使用

一、FlashDB的介绍 FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 FlashDB 提供两种数据库模式: 键值数据库 和 时序数据库。 二、移植 定义 flash 设备 在定义 Flash 设备表前,需要先定义 Flash 设备。可以是片内 flash, 也可以是片外基于...

0
0
发表于硬件 & IoT专区
2020/02/12 18:42

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

简介 冬天的早上比较冷,早上6点半起不来,于是就想用这个做一个小闹钟,利用蜂鸣器响铃来强迫自己起床。 当然同时还有更多的功能,比如温湿度检测,消息推送,闹钟响铃后打开LED灯。 功能描述 作品功能列表: -LCD显示温湿度 aht10采集的温湿度,ap3216c采集的光照强度和距离传感器的AD值; -NTP同步时间 板子联网后,使用netutils的NTP功能,同步时间,显示当前日期和时间到LCD上; -开发板接收红外遥控LED 开发板接收到红外遥...

0
0
发表于硬件 & IoT专区
2020/01/13 18:43

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

简介 平时经常会有一些事情忘记,比如今天几号,星期几,哪天有什么事情要做。有时候写在本子上,有时候记在微信里,但有时候连记在哪里都忘记了…… 为了应对这个情况,我制作了一款带有备忘录的台历放在工作台上,提醒自己需要做的事情。 功能描述 作品功能列表:显示阳历日期、显示阴历日期、显示周几、显示纪念日、显示当日备忘事项、显示每日精选句子、点击触摸按键可以选择日期、标记待做事项状态、可通过MQTT将备忘事项传...

0
0
发表于硬件 & IoT专区
2020/01/06 11:03

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

在RT-Thread 3.0发布会上,睿赛德宣布了RT-Thread开发者计划之一是在不同城市举行开发者沙龙,以加强RT-Thread开发者相互间的沟通,同时倾听开发者的需求,同时分享RT-Thread的最新动向、社区进展等。 我们将于10月21日下午14:00——16:30在北京举行RT-Thread开发者沙龙,期待您的参与。 时间:10月21日 14:00——16:30 地点:北京市海淀苏州街29号院南1号楼创新社(紧邻八一中学,地铁10号苏州街A口出) 交通:地铁十号线苏州街...

0
0
发表于硬件 & IoT专区
2020/02/18 18:28

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

简介 当前国内互联网的发展迅猛,物联网云、边缘计算等技术也从概念技术逐步变为可靠的工程应用技术,加之国民对智能化生活的强烈需求,市场上涌现出许多的物联网设备需求,如智能售货柜、智能洗车机、智能储物箱等等。然而这些物联网设备与具体应用有关,不同的个体应用案例,对物联网设备的功能要求差异也较大。同时为了满足市场的商机,要求物联网设备能够快速开发出来,并且稳定可靠。因此为了避免重复开发打造一款通用的物...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/06/08 16:20

IAP程序在哪里运行

@armink 你好,想跟你请教个问题: 在IAP升级时,运行在哪里?RAM中?文档不是太清楚,DEMO也很简单,最好能讲下IAP升级的原理。 辛苦,谢谢!

6
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
11 评论
196 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部