嵌入式技术论坛
直播中

LL-LING宁

8年用户 1237经验值
擅长:电源/新能源
私信 关注
[问答]

关于【easyflash 】4.0.99版本使用问题请教

1、rtconfig.h配置如下:

#define PKG_USING_EASYFLASH

#define PKG_EASYFLASH_ENV

#define PKG_EASYFLASH_ERASE_GRAN 4096

#define PKG_EASYFLASH_WRITE_GRAN_1BIT

#define PKG_EASYFLASH_WRITE_GRAN 1

#define PKG_EASYFLASH_START_ADDR 0

#define PKG_EASYFLASH_DEBUG

#define PKG_USING_EASYFLASH_LATEST_VERSION

#define PKG_EASYFLASH_VER_NUM 0x99999

2、分区表配置如下:

#define FAL_PART_TABLE

{

{FAL_PART_MAGIC_WROD, "easyflash", NOR_FLASH_DEV_NAME, 0, 41281024, 0},

{FAL_PART_MAGIC_WROD, "download", NOR_FLASH_DEV_NAME, 10241024, 6128*1024, 0},

}

3、默认环境变量配置如下:

/* default ENV set for user */

static const ef_env default_env_set[] =

{

{"username", "hurryD", 0},

{"password", "123456", 0},

{"boot_count",&boot_count, sizeof(boot_count)},

{"boot_time", &boot_time, sizeof(boot_time)},

};

运行后现象如下:

Sector header check failed. Format this sector (0x00000000)?????????

1.jpg

跟着移植教程抄的一个测试历程,测试结果为 “LF”

int ef_test(uint8_t argc, char **argv)

{

char value[32];

size_t len;

/* 如果环境变量长度未知,可以先获取 Flash 上存储的实际长度,将通过 len 返回 */

ef_get_env_blob("username", NULL, 0, &len);

/* 如果长度已知,使用 value 缓冲区,存放读取回来的环境变量值数据,并将实际长度返回 */

len = ef_get_env_blob("username", value, sizeof(value) , NULL);

rt_kprintf("ef_test username :");

rt_kprintf("%s
", value);

return 0;

}

MSH_CMD_EXPORT(ef_test, easyflash test);

1.jpg

回帖(3)

张辉

2022-10-28 10:07:50
配置看起来没问题,图中的警告是因为第一次空片写入。第二次就不会有了

/* 系统参数写入 */
void save_param(const char *key, const void *value_buf, size_t buf_len)
{
    ef_set_env_blob(key, value_buf, buf_len);
}
/* 系统参数读取 */
void get_param(const char *key, void *value_buf, size_t buf_len)
{
    ef_get_env_blob(key, value_buf, buf_len , NULL);
}
举报

张辉

2022-10-28 10:07:56
#define PKG_USING_EASYFLASH
#define PKG_EASYFLASH_ENV
#define PKG_EASYFLASH_ENV_AUTO_UPDATE
#define PKG_EASYFLASH_ENV_VER_NUM 0
#define PKG_EASYFLASH_LOG
#define PKG_EASYFLASH_LOG_AREA_SIZE 770048
#define PKG_EASYFLASH_IAP
#define PKG_EASYFLASH_ERASE_GRAN 4096
#define PKG_EASYFLASH_WRITE_GRAN_1BIT
#define PKG_EASYFLASH_WRITE_GRAN 1
#define PKG_EASYFLASH_START_ADDR 0
#define PKG_EASYFLASH_DEBUG
#define PKG_USING_EASYFLASH_LATEST_VERSION
#define PKG_EASYFLASH_VER_NUM 0x99999
#define PKG_USING_ULOG_EASYFLASH
#define ULOG_EASYFLASH_BACKEND_ENABLE
#define ULOG_EASYFLASH_CFG_SAVE_ENABLE
#define PKG_USING_ULOG_EASYFLASH_LATEST_VERSION
举报

王萍

2022-10-28 10:08:04
resetenv 试试

正常默认的环境变量只有第一次才会保存的 flash 上

另外,也贴一下 ef_port.c 的移植代码,确保是用的 fal 里的一个分区
举报

更多回帖

发帖
×
20
完善资料,
赚取积分