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存储器常见应用开发。该库目前提供 两大实用功能 :
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"从创建到保存,再修改,最后删除的过程。这些接口都支持被应用层直接调用。
[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
支持的哦~实现\flash\port\flash_port.c中的几个移植接口即可
作者: sunnydragon 时间: 2015-1-25 13:18
我自己设计开源的~
作者: 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
写平衡目前还没有,因为我的项目擦写次数非常少,如果大家都对这个需求很高,后期我可以加入这个功能。
作者: sunnydragon 时间: 2015-1-25 20:23
写平衡目前还没有,因为我的项目擦写次数非常少,如果大家都对这个需求很高,后期我可以加入这个功能。
作者: 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
由于flash在写操作之前需要擦除整块且使用寿命有限,所以需要设计合理的“写平衡”机制,来保证数据被安全的保存在未到擦写寿命的Flash区中。常用的JFFS, YAFFS文件系统都有这样的机制。
作者: mypear 时间: 2015-1-25 22:38
好厉害,日后能用到
作者: wang55 时间: 2015-1-25 23:12
好东西,学习一下。![](static/image/smiley/default/biggrin.gif)
作者: cdlxzlp 时间: 2015-1-25 23:15
这个 一定要顶一下的了
作者: richards 时间: 2015-1-26 00:11
这个一定得试试 比自己做的应该更规范吧
作者: sunnydragon 时间: 2015-1-26 08:19
欢迎试用及反馈哦~可以在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 编辑
不分系统的,我只不过用了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
目前主要功能还是以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
稳定是我最主要的任务~由于我的产品只有使用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
具体哪个地方不好处理?
作者: 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
过奖哈~欢迎watch并使用github上的项目,分享你的使用感受及建议哈
作者: ccao 时间: 2015-1-28 22:06
正好用到,顶
作者: guanglv2008 时间: 2015-1-28 22:07
这个必须支持一下了 谢谢分享
作者: sunnydragon 时间: 2015-1-28 22:25
好用的话记得在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
大同小异,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
已经用在我的很多产品上了,你试试哈~
作者: sunnydragon 时间: 2015-2-3 20:22
欢迎试用哈~不只是支持STM32。
作者: dmzy 时间: 2015-2-3 22:32
很好,我现在stm32上试试
作者: sunnydragon 时间: 2015-2-6 14:20
多谢支持。直接使用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 |