amobbs.com 阿莫电子技术论坛

标题: 【开源】嵌入式闪存库 EasyFlash for STM32,支持Env和IAP [打印本页]

作者: sunnydragon    时间: 2015-1-25 11:42
标题: 【开源】嵌入式闪存库 EasyFlash for STM32,支持Env和IAP
本帖最后由 sunnydragon 于 2015-1-25 11:41 编辑

1、介绍
EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 两大实用功能
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"从创建到保存,再修改,最后删除的过程。这些接口都支持被应用层直接调用。
[attach]253654[/attach]

2.2、在线升级

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

3、下载

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

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






作者: soosqt    时间: 2015-1-25 11:50
有没有写平衡之类的功能?
作者: dswkl11    时间: 2015-1-25 13:00
可以用于spi flash 不?
作者: styleno1    时间: 2015-1-25 13:14
不错的想法,请问是开发团队是谁?
作者: sunnydragon    时间: 2015-1-25 13:16
dswkl11 发表于 2015-1-25 13:00
可以用于spi flash 不?

支持的哦~实现\flash\port\flash_port.c中的几个移植接口即可
作者: sunnydragon    时间: 2015-1-25 13:18
styleno1 发表于 2015-1-25 13:14
不错的想法,请问是开发团队是谁?

我自己设计开源的~
作者: bad_fpga    时间: 2015-1-25 13:25
好东西,收藏,FLASH IAP
作者: huchunlei    时间: 2015-1-25 13:44
请问下 用于  spi flash  的时候, 有没有写平衡的功能呢?  最近比较纠结, 有个项目,要保存大量数据, 而这个数据不需要考虑存储格式,也就是说不一定需要标准的文件系统,自定义就可以,自己能写进去能读出来就可以了。   但是 写平衡方面却不知道该如何处理。
作者: my_avr    时间: 2015-1-25 14:30
很好,楼主无私!
作者: linjunxiong    时间: 2015-1-25 14:42
GOT IT, ....
作者: sblpp    时间: 2015-1-25 15:59
谢谢分享。
作者: LICHANGAN726    时间: 2015-1-25 16:47
升级不再是问题
作者: hkchenhao    时间: 2015-1-25 19:01
mark,看起来很不错
作者: limaotaizi    时间: 2015-1-25 19:37
好像很腻害的样子哦~~
作者: 悟空间66    时间: 2015-1-25 19:54
支持,多些这样的小固件就舒服了
作者: sunnydragon    时间: 2015-1-25 20:22
soosqt 发表于 2015-1-25 11:50
有没有写平衡之类的功能?

写平衡目前还没有,因为我的项目擦写次数非常少,如果大家都对这个需求很高,后期我可以加入这个功能。
作者: sunnydragon    时间: 2015-1-25 20:23
huchunlei 发表于 2015-1-25 13:44
请问下 用于  spi flash  的时候, 有没有写平衡的功能呢?  最近比较纠结, 有个项目,要保存大量数据,  ...

写平衡目前还没有,因为我的项目擦写次数非常少,如果大家都对这个需求很高,后期我可以加入这个功能。
作者: ljt80158015    时间: 2015-1-25 20:27
不错,收藏!
作者: kaomantou    时间: 2015-1-25 20:56
留个标记,也许用得着
作者: fsmcu    时间: 2015-1-25 21:05
不错,正在写IAP这块,可以借鉴一下
作者: mypc16888    时间: 2015-1-25 21:55
不错,这个flash有意思,持续关注
作者: wszyjsw2    时间: 2015-1-25 22:10
mark  嵌入式闪存库 EasyFlash for STM32
作者: ysyt_3    时间: 2015-1-25 22:12
好东西,很有使用价值
作者: sunnydragon    时间: 2015-1-25 22:14
需要写平衡功能的坛友们,可以再后面跟帖+1,我会根据大家的需求程度来考虑是否增加这个功能。
作者: nongxiaoming    时间: 2015-1-25 22:18
支持楼主~~~~
作者: xurenhui    时间: 2015-1-25 22:24
好像是不错的东东
作者: airwolf09921    时间: 2015-1-25 22:29
谢谢楼主 学习学习 顺便弱弱的请教一下啥叫写平衡
作者: sunnydragon    时间: 2015-1-25 22:35
airwolf09921 发表于 2015-1-25 22:29
谢谢楼主 学习学习 顺便弱弱的请教一下啥叫写平衡

由于flash在写操作之前需要擦除整块且使用寿命有限,所以需要设计合理的“写平衡”机制,来保证数据被安全的保存在未到擦写寿命的Flash区中。常用的JFFS, YAFFS文件系统都有这样的机制。
作者: mypear    时间: 2015-1-25 22:38
好厉害,日后能用到

作者: wang55    时间: 2015-1-25 23:12
好东西,学习一下。
作者: cdlxzlp    时间: 2015-1-25 23:15
这个  一定要顶一下的了
作者: richards    时间: 2015-1-26 00:11
这个一定得试试 比自己做的应该更规范吧
作者: sunnydragon    时间: 2015-1-26 08:19
richards 发表于 2015-1-26 00:11
这个一定得试试 比自己做的应该更规范吧

欢迎试用及反馈哦~可以在github上watch这个项目,这样就能知道随时知道项目新进展。
作者: emobbs    时间: 2015-1-26 08:48
貌似好东西
作者: zishan    时间: 2015-1-26 09:04
平衡功能+1
作者: Excellence    时间: 2015-1-26 09:07
借鉴一下,最近也弄这个。
作者: zhzj2007    时间: 2015-1-26 09:23
谢谢楼主分享。。。。。。。。。。。
作者: 32MCU    时间: 2015-1-26 09:42
平衡功能+1
作者: billtian    时间: 2015-1-26 09:45
EasyFlash for STM32
作者: fanfanrenfan    时间: 2015-1-26 09:46
有没有ucos下的?
作者: sunnydragon    时间: 2015-1-26 10:14
本帖最后由 sunnydragon 于 2015-1-26 10:17 编辑
fanfanrenfan 发表于 2015-1-26 09:46
有没有ucos下的?


不分系统的,我只不过用了rt-thread的printf打印功能
作者: badboy.tao    时间: 2015-1-26 10:20
已经fork,持续关注
作者: elunlang2000    时间: 2015-1-26 12:11
cool,  watch star at github
作者: graycker    时间: 2015-1-26 12:38
这贴一定要用力顶!!
作者: ghostxdy    时间: 2015-1-26 16:43
这个很棒!对NAND有优化吗?
作者: sunnydragon    时间: 2015-1-26 21:04
ghostxdy 发表于 2015-1-26 16:43
这个很棒!对NAND有优化吗?

目前主要功能还是以Env及IAP为主,是个非常轻量级的库。对NAND优化还没有考虑,优化的事情文件系统都做好啦~
作者: yangzi8000    时间: 2015-1-26 21:57
嵌入式闪存库 EasyFlash for STM32
作者: airwolf09921    时间: 2015-1-26 22:59
sunnydragon 发表于 2015-1-25 22:35
由于flash在写操作之前需要擦除整块且使用寿命有限,所以需要设计合理的“写平衡”机制,来保证数据被安 ...

感谢 学习了
作者: brieve    时间: 2015-1-27 01:42
  这个库要是稳定和支持广泛的画,还是很有用的。
作者: sunnydragon    时间: 2015-1-27 08:10
brieve 发表于 2015-1-27 01:42
这个库要是稳定和支持广泛的画,还是很有用的。

稳定是我最主要的任务~由于我的产品只有使用STM32平台的,别的平台需要大家一起来努力哈,我会大家提供所有力所能及的帮助~
作者: xuxi2009    时间: 2015-1-27 08:16
这是个好东西啊,谢谢了!
作者: xy8800    时间: 2015-1-27 08:20
非常不错,下来学习学习
作者: gtnr    时间: 2015-1-27 09:23
不错.不错
作者: cddxhy    时间: 2015-1-27 09:26
这个是个好东东,Mark
作者: ndt2000    时间: 2015-1-27 16:06
平衡功能+1
作者: adswads    时间: 2015-1-27 17:37
平衡功能+1
最近下下来测试测试
作者: xiaoliusheng    时间: 2015-1-27 23:34
软件分层结构不好弄...
作者: jiangkehong    时间: 2015-1-28 07:55
平衡+1,感谢分享
作者: sunnydragon    时间: 2015-1-28 08:25
xiaoliusheng 发表于 2015-1-27 23:34
软件分层结构不好弄...


具体哪个地方不好处理?
作者: solojimes    时间: 2015-1-28 09:40
大哥真心厉害
作者: 鱼尾之恋    时间: 2015-1-28 11:32
谢谢,刚刚有所了解。
作者: linquan315    时间: 2015-1-28 11:47
留个记号,以后应该会有用!
作者: farmerzhangdl    时间: 2015-1-28 16:48
不错不错,好东西
作者: a105    时间: 2015-1-28 17:05
支持  +1
作者: ffeige0303    时间: 2015-1-28 17:21
顶下撸主
作者: sunnydragon    时间: 2015-1-28 19:22
今天刚刚更新了API说明文档,欢迎大家去Github或开源中国上去查看。
作者: foxpro2005    时间: 2015-1-28 19:55
不错,非常感谢楼主开源分享,  给你点+1024个赞, 之前看过你改写的Freemodbus主/从机协议栈, 都很不错。
作者: sunnydragon    时间: 2015-1-28 21:34
foxpro2005 发表于 2015-1-28 19:55
不错,非常感谢楼主开源分享,  给你点+1024个赞, 之前看过你改写的Freemodbus主/从机协议栈, 都很不错。 ...

过奖哈~欢迎watch并使用github上的项目,分享你的使用感受及建议哈
作者: ccao    时间: 2015-1-28 22:06
正好用到,顶
作者: guanglv2008    时间: 2015-1-28 22:07
这个必须支持一下了   谢谢分享
作者: sunnydragon    时间: 2015-1-28 22:25
ccao 发表于 2015-1-28 22:06
正好用到,顶

好用的话记得在Github上给星星哦~
作者: laojiao    时间: 2015-1-29 15:37
不错,试一下
作者: zjwzcn    时间: 2015-1-29 15:46
CAN、485、以太网一样的操作?!
作者: witbrave2014    时间: 2015-1-29 18:45
载下来学习一下,支持楼主
作者: sunnydragon    时间: 2015-1-29 21:02
zjwzcn 发表于 2015-1-29 15:46
CAN、485、以太网一样的操作?!

大同小异,Demo演示的串口使用Ymodem协议发送,485、CAN等总线需要自定义协议。我的产品上都是用的这个哈~
作者: efree    时间: 2015-1-29 21:32
                                                     顶。
作者: qianniao29    时间: 2015-1-29 22:44
厉害啊,得顶一下
作者: chxaitz    时间: 2015-1-30 14:01
哇塞,太需要这样的东西了,帮顶~
作者: creep    时间: 2015-1-30 18:35
感谢分享,有空移植适用于一下。
作者: n0831    时间: 2015-1-30 19:01
写平衡+1
作者: pdabug    时间: 2015-2-1 21:55
这个真不错,不知道稳定性如何
作者: pdabug    时间: 2015-2-1 21:55
这个真不错,不知道稳定性如何
作者: unclewolf    时间: 2015-2-2 09:15
下下来看看
作者: 只是代号    时间: 2015-2-3 12:54
嗯 楼主英文水平不错
作者: tang0571    时间: 2015-2-3 14:32
恩,不错,有模有样的!
作者: ablightstar    时间: 2015-2-3 14:46
加入读写平衡就更好了

作者: sunnydragon    时间: 2015-2-3 20:21
pdabug 发表于 2015-2-1 21:55
这个真不错,不知道稳定性如何

已经用在我的很多产品上了,你试试哈~
作者: sunnydragon    时间: 2015-2-3 20:22
tang0571 发表于 2015-2-3 14:32
恩,不错,有模有样的!

欢迎试用哈~不只是支持STM32。
作者: dmzy    时间: 2015-2-3 22:32
很好,我现在stm32上试试
作者: sunnydragon    时间: 2015-2-6 14:20
dmzy 发表于 2015-2-3 22:32
很好,我现在stm32上试试

多谢支持。直接使用Demo中的工程就行的,同时支持IAR及Keil两个IDE
作者: nuncle    时间: 2015-2-9 21:48
mark。备用
作者: hcambridge    时间: 2015-2-9 22:29
支持lz一个!!!!!!!!!!!
作者: 湛无双    时间: 2015-2-10 08:37
写平衡 +1
作者: Ilidan    时间: 2015-2-10 08:59
好东西,多谢分享
作者: martin007    时间: 2015-2-10 09:40
平衡功能+1
作者: aasf3    时间: 2015-2-10 10:01
学习一下,以后应该用的着,多谢!
作者: lmhtz    时间: 2015-2-10 10:41
这个必须支持一下了   谢谢分享
作者: ly3663675    时间: 2015-2-10 13:18
下载来看看
作者: jeasey    时间: 2015-2-10 13:48
这个很方便啊
作者: sunnydragon    时间: 2015-2-11 11:15
最新的API文档在这里 http://armink.github.io/EasyFlash/ ,大家在使用的时候可以看下




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4