打印
[应用相关]

【分享】开源的嵌入式Flash闪存库,支持IAP与ENV功能

[复制链接]
1497|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
armink|  楼主 | 2015-4-24 22:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 armink 于 2015-4-24 22:19 编辑

1、介绍

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

  • Env 让变量轻松实现掉电保存,支持 写平衡 模式,无需担心变量长度、磨损平衡等问题
    使用 键值对(key-value) 方式将变量存储到Flash中。在产品上,能够更加简捷的实现 设定参数运行日志 等信息掉电保存的功能。
  • IAP 在线升级再也不是难事儿
    该库封装了IAP(In-Application Programming)功能常用的接口,支持CRC32校验,同时支持Bootloader及Application的升级。


1.1、文件结构
源文件
描述
\flash\src\flash_env.c
Env(常规模式)相关操作接口及实现源码
\flash\src\flash_env_wl.c
Env(磨损平衡模式)相关操作接口及实现源码
\flash\src\flash_iap.c
IAP 相关操作接口及实现源码
\flash\src\flash_utils.c
EasyFlash常用小工具,例如:CRC32
\flash\src\flash.c
目前只包含EasyFlash初始化方法
\flash\port\flash_port.c
不同平台下的EasyFlash移植接口及配置参数
\demo\stm32f10x\non_os
stm32f10x裸机的demo
\demo\stm32f10x\rtt
stm32f10x基于RT-Thread的demo
\demo\stm32f4xx
stm32f4xx基于RT-Thread的demo

1.2、资源占用
  • 最低要求: 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.3、支持平台

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

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


2、流程
2.1、环境变量

下图为通过控制台(终端)来调用环境变量的常用接口,演示了环境变量 "temp" 从创建到保存,再修改,最后删除的过程。这些接口都支持被应用层直接调用。

2.2、在线升级

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

3、文档

具体内容参考\docs\下的文件。


4、许可

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


EasyFlash V1.01.23.zip (940.37 KB)
评分
参与人数 1威望 +2 收起 理由
thinkabout4451 + 2 赞一个!
沙发
armink|  楼主 | 2015-4-24 22:38 | 只看该作者
需要随时下载最新源码的网友们, 可以关注Github链接:github.com/armink/EasyFlash,我会在上面持续维护。

使用特权

评论回复
板凳
搞IT的| | 2015-4-24 22:42 | 只看该作者
不错 顶!!!

使用特权

评论回复
地板
598330983| | 2015-4-25 00:03 | 只看该作者
采用 GPL v3.0 开源协议

使用特权

评论回复
5
armink|  楼主 | 2015-4-25 11:18 | 只看该作者

欢迎试用,并反馈建议哈~

使用特权

评论回复
6
single凌风| | 2015-4-25 12:42 | 只看该作者

使用特权

评论回复
7
```| | 2015-4-25 16:00 | 只看该作者
代码很好,命名有点Linux风格。

使用特权

评论回复
8
armink|  楼主 | 2015-4-25 19:15 | 只看该作者
``` 发表于 2015-4-25 16:00
代码很好,命名有点Linux风格。

过奖啦,欢迎下载试用哈~

使用特权

评论回复
9
傲气长江| | 2015-4-25 20:31 | 只看该作者
不错哦,先看看

使用特权

评论回复
10
mmuuss586| | 2015-4-25 21:03 | 只看该作者

支持下,谢谢分享;

使用特权

评论回复
11
598330983| | 2015-4-25 23:04 | 只看该作者
EasyFlash是一款开源的轻量级嵌入式Flash存储器库

使用特权

评论回复
12
734774645| | 2015-4-25 23:30 | 只看该作者
Env(常规模式)相关操作接口及实现源码

使用特权

评论回复
13
周董| | 2015-4-26 12:23 | 只看该作者
很好的学习资料 感谢分享。。

使用特权

评论回复
14
afsim| | 2015-4-26 15:15 | 只看该作者
谢谢!

使用特权

评论回复
15
thinkabout4451| | 2015-4-27 14:17 | 只看该作者
太赞了,lz大神

使用特权

评论回复
16
perry_peng| | 2015-4-27 15:22 | 只看该作者
谢谢分享.

使用特权

评论回复
17
armink|  楼主 | 2015-4-29 09:34 | 只看该作者

欢迎试用哦~

使用特权

评论回复
18
SLHSu37| | 2015-4-29 09:39 | 只看该作者
感谢分享~学习学习!!!

使用特权

评论回复
19
那就地方iv| | 2015-4-29 09:39 | 只看该作者
学习了,谢谢楼主分享

使用特权

评论回复
20
armink|  楼主 | 2015-5-16 11:38 | 只看该作者
SLHSu37 发表于 2015-4-29 09:39
感谢分享~学习学习!!!

欢迎试用哦~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

21

帖子

1

粉丝