EasyFlash移植使用笔记

  • 网站

1.EasyFlash 的Github开源网址,下载源码(源码比公司的新

GitHub - armink/EasyFlash: Lightweight IoT device information storage solution: KV/IAP/LOG. | 轻量级物联网设备信息存储方案:参数存储、在线升级及日志存储 ,全新一代版本请移步至 https://githubfast.com/armink/FlashDB

  • 移植流程

1.新建一个具有串口打印功能的工程

2.把EasyFlash的相关程序加到项目工程中,初始化easyflash_init函数

3. 配置ef_cfg.h

#define EF_ENV_VER_NUM           

#define EF_ERASE_MIN_SIZE        

#define EF_WRITE_GRAN            

#define EF_START_ADDR             //根据芯片手册上的FLASH容量划分

#define ENV_AREA_SIZE            

4.配置ef_port.c

         1.实现ef_port_erase函数

         2.实现ef_port_write函数

         3.实现ef_port_env_lock函数

         4.实现ef_port_env_unlock函数

       5.设置环境变量ENV

         static const ef_env default_env_set[] = {

             {"startup_cnt",0}

};

       6.编译,完成移植。

  • 以HC32F030F8TA为例详细的讲解测试程序。

1. 配置ef_cfg.h

#define EF_ENV_VER_NUM            0

#define EF_ERASE_MIN_SIZE         512

#define EF_WRITE_GRAN             32

#define EF_START_ADDR             0xF000//根据芯片手册上的FLASH容量换分

#define ENV_AREA_SIZE             2048

讲解:

#define EF_ERASE_MIN_SIZE         512

芯片擦除的最小字节数,根据HC32F030用户手册描述最小的擦除字节数为512

#define EF_WRITE_GRAN             32

此程序只实现对STM32F4和F1的支持,所以要在F1/F4的基础上修改,实现ef_port.c里的擦、写功能(打印功能可以自己选择实现,擦和写必须实现)。

#define EF_START_ADDR             0xF000

把最后一个页用来FLASH的擦写区域

#define ENV_AREA_SIZE             2048

根据自己的环境变量的多少来改大小

2. 实现ef_port_erase、ef_port_write、ef_port_env_lock、ef_port_env_unlock函数

  这些函数的实现可以参考华大的flash.c函数,从而实现对页的擦除与写入。

3.设置环境变量

static const ef_env default_env_set[] = {

             {"startup_cnt",0}

};

4.初始化easyflash_init();               //EasyFlash的函数

  初始化Flash_Init(NULL, 8, TRUE);//华大的库函数

5.添加测试函数

  测试函数的功能是记录上电次数

void EasyFlash_Test(void)

{

    //从FLASH中读取app_para.cnt的值

ef_get_env_blob("startup_cnt",(void*)&app_para.cnt,sizeof(app_para.cnt),NULL);

//上电次数++

app_para.cnt ++;

//把新的上电次数写入FLASH

ef_set_env_blob("startup_cnt",(void*)&app_para.cnt,sizeof(app_para.cnt));      

//打印上电次数

Send_Data(app_para.cnt);

}

6.编译下载

  实验现象:每上一次电,上电次数+1

 

  • 总结

EasyFlash最终还是要调用官方的FLASH擦写函数,EasyFlash不仅能够实现对产品的 设定参数 或 运行日志 等信息的掉电保存功能,还封装了简洁的 增加、删除、修改及查询 方法, 降低了开发者对产品参数的处理难度。

此文档只实现了EasyFlash的读写功能,EasyFlash还封装了IAP(In-Application Programming)功能常用的接口,支持CRC32校验,同时支持Bootloader及Application的升级,Log 无需文件系统,日志可直接存储在Flash上。这些功能可以选择实现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值