嵌入式Flash存储器库 EasyFlash

MIT
C/C++
嵌入式
2015-03-02
armink

1、介绍

EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大实用功能 :

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

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

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

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

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

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

1.1、资源占用

最低要求: ROM: 6K bytes     RAM: 0.5K bytes + (Env大小)

Demo平台:STM32F103RET6 + RT-Thread 1.2.2 + Env(2K bytes)
实际占用: ROM: 6K bytes     RAM: 2.6K bytes

1.2、支持平台

目前已移植硬件平台有 stm32f10x 与 stm32f4xx 系列的片内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、文档

具体内容参考\docs\下的文件。务必保证在阅读文档后再移植使用。

4、版权

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

的码云指数为
超过 的项目
加载中

评论(11)

irys
irys
我的项目情况:c8051f020(8位单片机)+m45pe16(2M BYTES flash),要存储的是9种记录(类似日志大概几十个字节),请问如果移植时log能分成几个隔离的日志区吗?请问easy flash和easy log我该用那个移植?在输出到flash的同时能输出到串口吗(调试阶段))?
二月生的
磨损均衡可以改进
McQueen白板
McQueen白板
挺好,不知道能不在lpc4370+freertos中使用
f
fly8388
掉电保护好像有点问题 #EasyFlash#
f
fly8388
掉电保护好像有点问题? #EasyFlash#
清风_
清风_
加油,龙哥 #EasyFlash#
高波2
高波2
不错 #EasyFlash#
午夜熊
午夜熊
赞的!用于在片内Flash上保存一些参数、配置,这个是绝佳 EasyFlash
JenkinZhou
JenkinZhou
感觉像uboot EasyFlash
久永
久永
好东西 EasyFlash

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

EasyFlash 是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大...

2016/02/24 09:16

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

EasyFlash 是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大...

2015/07/13 09:24

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

EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大...

2015/06/15 07:57

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

EasyFlash EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前...

2015/04/22 13:53

没有更多内容

加载失败,请刷新页面

没有更多内容

2
回答
IAP程序在哪里运行

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

2016/06/08 16:20

没有更多内容

加载失败,请刷新页面

没有更多内容

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

在互联网快速发展及大数据时代的到来,NoSQL数据库以其强大的可伸缩性、高效性、实时性等特点,而获得十足的发展。键值(Key-Value)存储数据库就是NoSQL的一种。与此同时又有越来越多的厂家...

2015/07/02 10:07
235
0
OSChina 技术周刊第二十四期 —— C# 6.0 的新特性

每周技术抢先看,总有你想要的! 移动开发 【博客】Swift社交应用文本输入优化汇总 服务端开发/管理 【翻译】HTTP/1 的最佳实践并不适合 HTTP/2 【翻译】使用 AppDomain 存储实现大数据集合 ...

2015/03/09 00:24
96
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部