【升级】嵌入式Flash闪存库EasyFlash,可以直接保存日志了

2019-12-14 12:52发布

EasyFlash 是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 三大实用功能
  • Env 让变量轻松实现掉电保存,支持 写平衡 模式,无需担心变量长度、磨损平衡等问题
使用 键值对(key-value) 方式将变量存储到Flash中。在产品上,能够更加简捷的实现 设定参数运行日志等信息掉电保存的功能。
  • IAP 在线升级再也不是难事儿
该库封装了IAP(In-Application Programming)功能常用的接口,支持CRC32校验,同时支持Bootloader及Application的升级。
  • (新增)Log 无需文件系统,日志可直接存储在Flash上
非常适合应用在小型的不带文件系统的产品中。同时配合EasyLogger(我开源的超轻量级、高性能C日志库,它提供与EasyFlash的无缝接口)一起使用,轻松实现日志的Flash存储功能。
更多详细介绍,点击:https://github.com/armink/EasyFlash
原帖:http://www.amobbs.com/thread-5613261-1-1.html

更新日志
V1.06.10
  • 新增 Flash存储日志功能,无需文件系统的支持;
  • 删除 用户以前需要自定义的types.h头文件,全部采用C99自带头文件,降低移植复杂度;
  • 增加 C++ 编译器的支持;
  • 增加 环境变量同步锁,提升库在并发量较大的环境下的稳定性;
  • 修复 部分bug;


下载方式
Github:https://github.com/armink/EasyFlash
本坛下载: EasyFlash-V1.06.10.zip (6.9 MB, 下载次数: 344) 2015-6-10 19:18 上传 点击文件名下载附件
EasyFlash-V1.06.10



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
99条回答
qq302011
2019-12-25 14:14
本帖最后由 qq302011 于 2015-9-20 11:04 编辑

能否添加一些对相应的宏定义的详细说明,比方说FLASH_ENV_SECTION_SIZE等,在使用中还是有些不太确定,比方说由于F407的FLASH是1M字节,前面几个SECTOR的大小较小,为了节省空间我需要把EASYFLASH使用到的空间定义在这些前面这几个SECTOR,
地址如下
0X08000000-0x08003fff  //程序空间
0X08004000-0X0800bfff //EASYFLASH使用
0x0800c000-0X0800ffff//自定义FLASH,我自己坐特殊使用
0X08010000-0x080fffff//程序空间

我不太确定使用环境变量之后,环境变量最大的使用地址会不会超过我的FLASH定义进入我的自定义地址空间,请楼主解答,谢谢

我现在的定义如下:

#define FLASH_ENV_USING_WEAR_LEVELING_MODE
//#define FLASH_ENV_USING_NORMAL_MODE

#define FLASH_ENV_START_ADDR            (FLASH_BASE + 16 * 1024) /* on the chip position: 256KB */
/* the minimum size of flash erasure */
#define FLASH_ERASE_MIN_SIZE            (16 * 1024)              /* it is 128K for compatibility */
#ifdef FLASH_ENV_USING_WEAR_LEVELING_MODE
/* ENV section total bytes size in wear leveling mode. */
#define FLASH_ENV_SECTION_SIZE          (2 * FLASH_ERASE_MIN_SIZE)/* 512K */
#else
/* ENV section total bytes size in normal mode. It's equal with FLASH_USER_SETTING_ENV_SIZE */
#define FLASH_ENV_SECTION_SIZE          (FLASH_USER_SETTING_ENV_SIZE)
#endif

一周热门 更多>