搜索
bottom↓
回复: 235

【开源】嵌入式闪存库 EasyFlash for STM32,支持Env和IAP

  [复制链接]

出0入198汤圆

发表于 2015-1-25 11:42:22 | 显示全部楼层 |阅读模式
本帖最后由 sunnydragon 于 2015-1-25 11:41 编辑

1、介绍
EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 两大实用功能
  • Env 让变量轻轻松松实现掉电保存,无需担心变量长度、对其等问题
    使用 键值对(key-value) 方式将变量存储到Flash中,类似U-Boot的 环境变量 ,使用方式与U-Boot一致。
  • IAP 在线升级再也不是难事儿
    该库封装了IAP(In-Application Programming)功能常用的接口,支持CRC32校验,同时支持Bootloader及Application的升级

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

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


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


2.2、在线升级

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


3、下载

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

开源中国 : http://git.oschina.net/armink/EasyFlash
本坛下载:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

有一句段子是这样说的,身家过亿的只关心自己的身体,身家千万的,在担心传承,勉强糊口度日才天天看国际新闻,关心国家大事。

出0入198汤圆

 楼主| 发表于 2015-2-12 21:58:55 | 显示全部楼层
好消息,看到这么多网友需要“写平衡”,现在“写平衡”已经增加上去了,是一种比较简洁的实现思路。
目前环境变量支持两种模式,默认是常规模式,欢迎大家下载试用并反馈哦。可以通过以下方式获取最新源码。
github : https://github.com/armink/EasyFlash
oschina: http://git.oschina.net/armink/EasyFlash
coding : https://coding.net/u/armink/p/EasyFlash/git

出0入198汤圆

 楼主| 发表于 2015-7-3 15:42:24 | 显示全部楼层
最近写了一篇《如何在嵌入式产品中应用键值存储数据库》:http://geek.csdn.net/news/detail/35184,里面有一些EasyFlash的使用场景。欢迎大家拍砖。

出0入0汤圆

发表于 2015-1-25 11:50:10 来自手机 | 显示全部楼层
有没有写平衡之类的功能?

出0入0汤圆

发表于 2015-1-25 13:00:17 | 显示全部楼层
可以用于spi flash 不?

出0入0汤圆

发表于 2015-1-25 13:14:18 | 显示全部楼层
不错的想法,请问是开发团队是谁?

出0入198汤圆

 楼主| 发表于 2015-1-25 13:16:21 | 显示全部楼层
dswkl11 发表于 2015-1-25 13:00
可以用于spi flash 不?

支持的哦~实现\flash\port\flash_port.c中的几个移植接口即可

出0入198汤圆

 楼主| 发表于 2015-1-25 13:18:45 | 显示全部楼层
styleno1 发表于 2015-1-25 13:14
不错的想法,请问是开发团队是谁?

我自己设计开源的~

出0入0汤圆

发表于 2015-1-25 13:25:46 | 显示全部楼层
好东西,收藏,FLASH IAP

出0入4汤圆

发表于 2015-1-25 13:44:22 | 显示全部楼层
请问下 用于  spi flash  的时候, 有没有写平衡的功能呢?  最近比较纠结, 有个项目,要保存大量数据, 而这个数据不需要考虑存储格式,也就是说不一定需要标准的文件系统,自定义就可以,自己能写进去能读出来就可以了。   但是 写平衡方面却不知道该如何处理。

出0入51汤圆

发表于 2015-1-25 14:30:32 | 显示全部楼层
很好,楼主无私!

出0入0汤圆

发表于 2015-1-25 14:42:19 | 显示全部楼层
GOT IT, ....

出0入0汤圆

发表于 2015-1-25 15:59:07 | 显示全部楼层
谢谢分享。

出0入0汤圆

发表于 2015-1-25 16:47:44 来自手机 | 显示全部楼层
升级不再是问题

出0入0汤圆

发表于 2015-1-25 19:01:27 | 显示全部楼层
mark,看起来很不错

出0入0汤圆

发表于 2015-1-25 19:37:31 | 显示全部楼层
好像很腻害的样子哦~~

出0入0汤圆

发表于 2015-1-25 19:54:30 来自手机 | 显示全部楼层
支持,多些这样的小固件就舒服了

出0入198汤圆

 楼主| 发表于 2015-1-25 20:22:38 | 显示全部楼层
soosqt 发表于 2015-1-25 11:50
有没有写平衡之类的功能?

写平衡目前还没有,因为我的项目擦写次数非常少,如果大家都对这个需求很高,后期我可以加入这个功能。

出0入198汤圆

 楼主| 发表于 2015-1-25 20:23:41 | 显示全部楼层
huchunlei 发表于 2015-1-25 13:44
请问下 用于  spi flash  的时候, 有没有写平衡的功能呢?  最近比较纠结, 有个项目,要保存大量数据,  ...

写平衡目前还没有,因为我的项目擦写次数非常少,如果大家都对这个需求很高,后期我可以加入这个功能。

出0入0汤圆

发表于 2015-1-25 20:27:21 来自手机 | 显示全部楼层
不错,收藏!

出0入0汤圆

发表于 2015-1-25 20:56:39 | 显示全部楼层
留个标记,也许用得着

出0入0汤圆

发表于 2015-1-25 21:05:40 | 显示全部楼层
不错,正在写IAP这块,可以借鉴一下

出0入0汤圆

发表于 2015-1-25 21:55:14 来自手机 | 显示全部楼层
不错,这个flash有意思,持续关注

出0入0汤圆

发表于 2015-1-25 22:10:57 | 显示全部楼层
mark  嵌入式闪存库 EasyFlash for STM32

出0入0汤圆

发表于 2015-1-25 22:12:48 | 显示全部楼层
好东西,很有使用价值

出0入198汤圆

 楼主| 发表于 2015-1-25 22:14:08 | 显示全部楼层
需要写平衡功能的坛友们,可以再后面跟帖+1,我会根据大家的需求程度来考虑是否增加这个功能。

出0入0汤圆

发表于 2015-1-25 22:18:59 | 显示全部楼层
支持楼主~~~~

出0入0汤圆

发表于 2015-1-25 22:24:17 | 显示全部楼层
好像是不错的东东

出0入0汤圆

发表于 2015-1-25 22:29:02 来自手机 | 显示全部楼层
谢谢楼主 学习学习 顺便弱弱的请教一下啥叫写平衡

出0入198汤圆

 楼主| 发表于 2015-1-25 22:35:05 | 显示全部楼层
airwolf09921 发表于 2015-1-25 22:29
谢谢楼主 学习学习 顺便弱弱的请教一下啥叫写平衡

由于flash在写操作之前需要擦除整块且使用寿命有限,所以需要设计合理的“写平衡”机制,来保证数据被安全的保存在未到擦写寿命的Flash区中。常用的JFFS, YAFFS文件系统都有这样的机制。

出0入0汤圆

发表于 2015-1-25 22:38:53 | 显示全部楼层
好厉害,日后能用到

出0入0汤圆

发表于 2015-1-25 23:12:41 | 显示全部楼层
好东西,学习一下。

出0入0汤圆

发表于 2015-1-25 23:15:35 | 显示全部楼层
这个  一定要顶一下的了

出0入0汤圆

发表于 2015-1-26 00:11:58 来自手机 | 显示全部楼层
这个一定得试试 比自己做的应该更规范吧

出0入198汤圆

 楼主| 发表于 2015-1-26 08:19:19 | 显示全部楼层
richards 发表于 2015-1-26 00:11
这个一定得试试 比自己做的应该更规范吧

欢迎试用及反馈哦~可以在github上watch这个项目,这样就能知道随时知道项目新进展。

出0入0汤圆

发表于 2015-1-26 08:48:06 来自手机 | 显示全部楼层
貌似好东西

出0入0汤圆

发表于 2015-1-26 09:04:23 | 显示全部楼层
平衡功能+1

出0入0汤圆

发表于 2015-1-26 09:07:45 | 显示全部楼层
借鉴一下,最近也弄这个。

出0入0汤圆

发表于 2015-1-26 09:23:46 | 显示全部楼层
谢谢楼主分享。。。。。。。。。。。

出0入0汤圆

发表于 2015-1-26 09:42:54 | 显示全部楼层
平衡功能+1

出0入4汤圆

发表于 2015-1-26 09:45:01 | 显示全部楼层
EasyFlash for STM32

出0入0汤圆

发表于 2015-1-26 09:46:45 | 显示全部楼层
有没有ucos下的?

出0入198汤圆

 楼主| 发表于 2015-1-26 10:14:54 | 显示全部楼层
本帖最后由 sunnydragon 于 2015-1-26 10:17 编辑


不分系统的,我只不过用了rt-thread的printf打印功能

出0入0汤圆

发表于 2015-1-26 10:20:35 | 显示全部楼层
已经fork,持续关注

出0入0汤圆

发表于 2015-1-26 12:11:25 | 显示全部楼层
cool,  watch star at github

出0入0汤圆

发表于 2015-1-26 12:38:55 | 显示全部楼层
这贴一定要用力顶!!

出0入0汤圆

发表于 2015-1-26 16:43:25 | 显示全部楼层
这个很棒!对NAND有优化吗?

出0入198汤圆

 楼主| 发表于 2015-1-26 21:04:07 | 显示全部楼层
ghostxdy 发表于 2015-1-26 16:43
这个很棒!对NAND有优化吗?

目前主要功能还是以Env及IAP为主,是个非常轻量级的库。对NAND优化还没有考虑,优化的事情文件系统都做好啦~

出0入0汤圆

发表于 2015-1-26 21:57:52 | 显示全部楼层
嵌入式闪存库 EasyFlash for STM32

出0入0汤圆

发表于 2015-1-26 22:59:50 来自手机 | 显示全部楼层
sunnydragon 发表于 2015-1-25 22:35
由于flash在写操作之前需要擦除整块且使用寿命有限,所以需要设计合理的“写平衡”机制,来保证数据被安 ...

感谢 学习了

出0入0汤圆

发表于 2015-1-27 01:42:32 | 显示全部楼层
  这个库要是稳定和支持广泛的画,还是很有用的。

出0入198汤圆

 楼主| 发表于 2015-1-27 08:10:05 | 显示全部楼层
brieve 发表于 2015-1-27 01:42
这个库要是稳定和支持广泛的画,还是很有用的。

稳定是我最主要的任务~由于我的产品只有使用STM32平台的,别的平台需要大家一起来努力哈,我会大家提供所有力所能及的帮助~

出0入0汤圆

发表于 2015-1-27 08:16:44 | 显示全部楼层
这是个好东西啊,谢谢了!

出0入0汤圆

发表于 2015-1-27 08:20:17 | 显示全部楼层
非常不错,下来学习学习

出0入0汤圆

发表于 2015-1-27 09:23:56 | 显示全部楼层
不错.不错

出0入17汤圆

发表于 2015-1-27 09:26:33 | 显示全部楼层
这个是个好东东,Mark

出0入9汤圆

发表于 2015-1-27 16:06:57 | 显示全部楼层
平衡功能+1

出0入0汤圆

发表于 2015-1-27 17:37:04 | 显示全部楼层
平衡功能+1
最近下下来测试测试

出0入0汤圆

发表于 2015-1-27 23:34:18 | 显示全部楼层
软件分层结构不好弄...

出0入0汤圆

发表于 2015-1-28 07:55:18 | 显示全部楼层
平衡+1,感谢分享

出0入198汤圆

 楼主| 发表于 2015-1-28 08:25:01 | 显示全部楼层
xiaoliusheng 发表于 2015-1-27 23:34
软件分层结构不好弄...


具体哪个地方不好处理?

出0入0汤圆

发表于 2015-1-28 09:40:28 | 显示全部楼层
大哥真心厉害

出0入0汤圆

发表于 2015-1-28 11:32:07 | 显示全部楼层
谢谢,刚刚有所了解。

出30入0汤圆

发表于 2015-1-28 11:47:48 | 显示全部楼层
留个记号,以后应该会有用!

出0入0汤圆

发表于 2015-1-28 16:48:23 | 显示全部楼层
不错不错,好东西

出0入0汤圆

发表于 2015-1-28 17:05:38 | 显示全部楼层
支持  +1

出0入0汤圆

发表于 2015-1-28 17:21:47 | 显示全部楼层
顶下撸主

出0入198汤圆

 楼主| 发表于 2015-1-28 19:22:26 | 显示全部楼层
今天刚刚更新了API说明文档,欢迎大家去Github或开源中国上去查看。

出0入76汤圆

发表于 2015-1-28 19:55:57 | 显示全部楼层
不错,非常感谢楼主开源分享,  给你点+1024个赞, 之前看过你改写的Freemodbus主/从机协议栈, 都很不错。

出0入198汤圆

 楼主| 发表于 2015-1-28 21:34:58 | 显示全部楼层
foxpro2005 发表于 2015-1-28 19:55
不错,非常感谢楼主开源分享,  给你点+1024个赞, 之前看过你改写的Freemodbus主/从机协议栈, 都很不错。 ...

过奖哈~欢迎watch并使用github上的项目,分享你的使用感受及建议哈

出0入0汤圆

发表于 2015-1-28 22:06:43 | 显示全部楼层
正好用到,顶

出0入0汤圆

发表于 2015-1-28 22:07:24 | 显示全部楼层
这个必须支持一下了   谢谢分享

出0入198汤圆

 楼主| 发表于 2015-1-28 22:25:24 | 显示全部楼层

好用的话记得在Github上给星星哦~

出0入0汤圆

发表于 2015-1-29 15:37:17 | 显示全部楼层
不错,试一下

出0入0汤圆

发表于 2015-1-29 15:46:53 | 显示全部楼层
CAN、485、以太网一样的操作?!

出0入0汤圆

发表于 2015-1-29 18:45:53 来自手机 | 显示全部楼层
载下来学习一下,支持楼主

出0入198汤圆

 楼主| 发表于 2015-1-29 21:02:01 | 显示全部楼层
zjwzcn 发表于 2015-1-29 15:46
CAN、485、以太网一样的操作?!

大同小异,Demo演示的串口使用Ymodem协议发送,485、CAN等总线需要自定义协议。我的产品上都是用的这个哈~

出0入0汤圆

发表于 2015-1-29 21:32:48 | 显示全部楼层
                                                     顶。

出0入0汤圆

发表于 2015-1-29 22:44:42 来自手机 | 显示全部楼层
厉害啊,得顶一下

出0入0汤圆

发表于 2015-1-30 14:01:44 | 显示全部楼层
哇塞,太需要这样的东西了,帮顶~

出0入0汤圆

发表于 2015-1-30 18:35:32 | 显示全部楼层
感谢分享,有空移植适用于一下。

出0入42汤圆

发表于 2015-1-30 19:01:03 来自手机 | 显示全部楼层
写平衡+1

出0入0汤圆

发表于 2015-2-1 21:55:23 | 显示全部楼层
这个真不错,不知道稳定性如何

出0入0汤圆

发表于 2015-2-1 21:55:45 | 显示全部楼层
这个真不错,不知道稳定性如何

出0入0汤圆

发表于 2015-2-2 09:15:35 | 显示全部楼层
下下来看看

出0入0汤圆

发表于 2015-2-3 12:54:19 | 显示全部楼层
嗯 楼主英文水平不错

出0入0汤圆

发表于 2015-2-3 14:32:28 | 显示全部楼层
恩,不错,有模有样的!

出0入0汤圆

发表于 2015-2-3 14:46:48 | 显示全部楼层
加入读写平衡就更好了

出0入198汤圆

 楼主| 发表于 2015-2-3 20:21:51 | 显示全部楼层
pdabug 发表于 2015-2-1 21:55
这个真不错,不知道稳定性如何

已经用在我的很多产品上了,你试试哈~

出0入198汤圆

 楼主| 发表于 2015-2-3 20:22:58 | 显示全部楼层
tang0571 发表于 2015-2-3 14:32
恩,不错,有模有样的!

欢迎试用哈~不只是支持STM32。

出0入0汤圆

发表于 2015-2-3 22:32:13 | 显示全部楼层
很好,我现在stm32上试试

出0入198汤圆

 楼主| 发表于 2015-2-6 14:20:40 | 显示全部楼层
dmzy 发表于 2015-2-3 22:32
很好,我现在stm32上试试

多谢支持。直接使用Demo中的工程就行的,同时支持IAR及Keil两个IDE

出0入0汤圆

发表于 2015-2-9 21:48:17 | 显示全部楼层
mark。备用

出100入18汤圆

发表于 2015-2-9 22:29:12 | 显示全部楼层
支持lz一个!!!!!!!!!!!

出0入0汤圆

发表于 2015-2-10 08:37:15 | 显示全部楼层
写平衡 +1

出0入0汤圆

发表于 2015-2-10 08:59:45 来自手机 | 显示全部楼层
好东西,多谢分享

出0入0汤圆

发表于 2015-2-10 09:40:34 | 显示全部楼层
平衡功能+1

出0入0汤圆

发表于 2015-2-10 10:01:15 | 显示全部楼层
学习一下,以后应该用的着,多谢!

出0入0汤圆

发表于 2015-2-10 10:41:46 | 显示全部楼层
这个必须支持一下了   谢谢分享

出0入0汤圆

发表于 2015-2-10 13:18:35 | 显示全部楼层
下载来看看

出0入0汤圆

发表于 2015-2-10 13:48:01 | 显示全部楼层
这个很方便啊

出0入198汤圆

 楼主| 发表于 2015-2-11 11:15:39 | 显示全部楼层
最新的API文档在这里 http://armink.github.io/EasyFlash/ ,大家在使用的时候可以看下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-12-11 11:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表