amobbs.com 阿莫电子技术论坛

标题: 【开源】嵌入式Flash闪存库 EasyFlash 已经支持裸机及STM32F4系列 [打印本页]

作者: sunnydragon    时间: 2015-4-23 21:14
标题: 【开源】嵌入式Flash闪存库 EasyFlash 已经支持裸机及STM32F4系列
EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 两大实用功能 :详细介绍见原帖:http://www.amobbs.com/thread-5613261-1-1.html



更新日志:
V1.04.23:


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

开源中国 : http://git.oschina.net/armink/EasyFlash

本坛下载:[attach]267481[/attach]

作者: zq6220    时间: 2015-4-23 21:41
不错不错,谢谢分享
作者: cargle    时间: 2015-4-23 21:59
这个要支持
作者: 596142041    时间: 2015-4-23 22:03
谢谢分享
作者: soos    时间: 2015-4-23 22:06
掉电如何保存???
作者: li99932li    时间: 2015-4-23 22:07
谢谢。支持!
作者: voidwalker2012    时间: 2015-4-23 22:15
谢谢分享!!!
作者: ghostxdy    时间: 2015-4-23 22:31
马上下载看看实现代码
作者: techbaby    时间: 2015-4-23 22:35
LZ厉害!

上次粗略的看了一下,请问        LZ个问题,如果我想存储一个二进制数组,或者结构体变量的全部信息,如何操作?貌似环境变量的存储均是字符串类型的。
作者: sunnydragon    时间: 2015-4-24 07:49
soos 发表于 2015-4-23 22:06
掉电如何保存???

存到Flash里,断电不就不会丢失了。
作者: sunnydragon    时间: 2015-4-24 07:54
techbaby 发表于 2015-4-23 22:35
LZ厉害!

上次粗略的看了一下,请问        LZ个问题,如果我想存储一个二进制数组,或者结构体变量的全部信息, ...

把结构体里的成员在存储时转换为字符串类型再进行保存。开机后读取对应的字符串,再用字符串转整形(atoi)、字符串转浮点型(atof)等方法还原数据类型即可。
在我的设备上都是这样做的,你可以看下demo。
作者: 清新怡人    时间: 2015-4-24 08:35
谢谢分享,支持。
作者: Excellence    时间: 2015-4-24 08:40
牛。。。。。。
顶顶。
IAP参考一下。
作者: cdlxzlp    时间: 2015-4-24 08:44
哈哈  好东西来的  顶起啦!
作者: AllEle    时间: 2015-4-24 08:52
这个可是好东西,MK
作者: JACK847070222    时间: 2015-4-24 09:14
必须顶起来,有时间研究一下
作者: powerlabor001    时间: 2015-4-24 09:20
mark一下,呵呵,flash 存储。
作者: mainbp    时间: 2015-4-24 09:38
看了楼主的代码,我感觉我没学过C语言一样......
作者: PIC16F54    时间: 2015-4-24 09:40
支持开源,早就在OSC上关注这个项目了~
作者: soosqt    时间: 2015-4-24 09:48
sunnydragon 发表于 2015-4-24 07:49
存到Flash里,断电不就不会丢失了。

呵呵,肯定是存在flash了,在存一半的时候突然掉电有什么机制??
作者: z13900139000    时间: 2015-4-24 10:07
谢谢分享!!!
作者: ztZJL2010    时间: 2015-4-24 10:16
支持                     
作者: techbaby    时间: 2015-4-24 10:28
sunnydragon 发表于 2015-4-24 07:54
把结构体里的成员在存储时转换为字符串类型再进行保存。开机后读取对应的字符串,再用字符串转整形(atoi) ...

多谢回复!
我试试看!
作者: KGSABER    时间: 2015-4-24 13:12
谢谢分享!!!!!!
作者: yixin1851    时间: 2015-4-24 13:27
谢谢楼主  
作者: shandong    时间: 2015-4-24 14:29
收下了,谢谢
作者: vcprograme    时间: 2015-4-24 14:55
谢谢分享!!!!!!!!!!!!
作者: 晚枫    时间: 2015-4-24 15:17
很不错,谢谢分享。
作者: fm0826    时间: 2015-4-24 15:44
很牛,谢谢分享
作者: hyper320    时间: 2015-4-24 15:46
谢谢分享
作者: sunnydragon    时间: 2015-4-24 21:18
PIC16F54 发表于 2015-4-24 09:40
支持开源,早就在OSC上关注这个项目了~

多谢关注,欢迎反馈意见哈~
作者: sunnydragon    时间: 2015-4-24 21:22
soosqt 发表于 2015-4-24 09:48
呵呵,肯定是存在flash了,在存一半的时候突然掉电有什么机制??

你说的是掉电保护机制~这个有在接下来的开发计划中的~
作者: sunnyqd    时间: 2015-4-24 22:19
挺高级的样子,以后有用
作者: jxcrg_t35    时间: 2015-4-24 22:22
谢谢分享!!!

作者: baal    时间: 2015-4-24 22:48
闪存库,有用
作者: ccao    时间: 2015-4-24 23:11
有用,收藏了,闪存库
作者: wxb7893212    时间: 2015-4-25 04:28
收藏     
作者: lionboa    时间: 2015-4-25 08:56
太好了,非常感谢分享,辛苦了!
作者: foxpro2005    时间: 2015-4-25 10:25
呵呵, 不错, 这个必须支持, 先学习一下,后续有机会准备试用
作者: zmgo    时间: 2015-4-25 11:55
这个库移植到C2000系列 DSP方便不?
作者: cs128815    时间: 2015-4-25 12:37
你好
看到了demo中,flash_set_env("boot_times", c_new_boot_times);  这一行是先擦擦然后在写入吧。

因为之前了解到stm32 必须要擦除,然后才可以写入。我想确定的是你这个函数会自动先擦除然后再写入数据吗?还是说要自己先擦除?
作者: sunnydragon    时间: 2015-4-25 18:51
zmgo 发表于 2015-4-25 11:55
这个库移植到C2000系列 DSP方便不?

请看下/flash/port/flash_port.c文件中的移植接口,同时可以对比下/demo下的已移植好的其余平台例子。
Github 可以直接看到Markdown格式的中文移植API介绍。要是还有问题,可以再联系我~
作者: sunnydragon    时间: 2015-4-25 18:56
cs128815 发表于 2015-4-25 12:37
你好
看到了demo中,flash_set_env("boot_times", c_new_boot_times);  这一行是先擦擦然后在写入吧。

flash_set_env只是修改内存中存放的环境变量。
真正保存环境变量方法是flash_save_env,里面自带先擦写后写入的功能,想一些“写平衡”的功能也在里面。
建议仔细阅读下 中文API说明文档,里面都有介绍的。
作者: sddzycnq    时间: 2015-4-25 23:13
一直在追赶,从未敢放弃。
作者: cargle    时间: 2015-5-28 12:47
发现你的一个bug.
size_t flash_get_env_total_size(void) {
    /* must be initialized */

    return FLASH_USER_SETTING_ENV_SIZE;
}
应该 return FLASH_ENV_SECTION_SIZE 才对,因为*env_total_size = FLASH_ENV_SECTION_SIZE;
作者: sunnydragon    时间: 2015-5-28 14:24
cargle 发表于 2015-5-28 12:47
发现你的一个bug.
size_t flash_get_env_total_size(void) {
    /* must be initialized */

可以看下我在flash_env_init里面的注释
[attach]272938[/attach]

EasyFlash自带两种模式的。
常规模式下:FLASH_USER_SETTING_ENV_SIZE = FLASH_ENV_SECTION_SIZE
磨损平衡模式下:FLASH_USER_SETTING_ENV_SIZE FLASH_ENV_SECTION_SIZE,因为需要留出额外的空间实现磨损平衡功能。
作者: lyzhangxiang    时间: 2015-5-28 19:38
不错有机会看看均衡机制
作者: cs128815    时间: 2015-6-20 17:47
这个如果要支持外部spi 接口的flash 吗?
作者: sunnydragon    时间: 2015-6-20 22:07
cs128815 发表于 2015-6-20 17:47
这个如果要支持外部spi 接口的flash 吗?

支持外部Flash的,只需修改移植文件中的Flash初始化、擦除、写入、读取方法即可。
作者: 10xjzheng    时间: 2015-9-1 17:55
我是想实现这个功能,不知道能不能实现!boss说他开发手机的时候是可以实现的!
“一个可穿戴设备在调试或者发给用户之后,可能会产生死机、运行故障等这些状况,我们工程师要收集这些死机的信息并进行分析”
作者: MidoriYakumo    时间: 2015-9-1 19:01
马克一个,顶楼主的作品
作者: sunnydragon    时间: 2015-9-1 19:55
10xjzheng 发表于 2015-9-1 17:55
我是想实现这个功能,不知道能不能实现!boss说他开发手机的时候是可以实现的!
“一个可穿戴设备在调试或 ...

完全可以实现的,我的产品也是同样的需求,你可以再仔细了解下这个开源项目,试用下里面的Demo。
作者: ddcour    时间: 2018-11-20 22:04
多谢分享!




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