[答疑] easyflash4 使用问题及解决方法

[复制链接]
查看2842 | 回复11 | 2023-12-6 13:52:11 | 显示全部楼层 |阅读模式

本帖最后由 WT_0213 于 2023-12-7 11:23 编辑

在工程的 proj.conf 里面添加 下面三个 组件,用于使用 Easy Flash 好像是一层一层的相互依赖。

set(CONFIG_PARTITION 1)
set(CONFIG_BFLB_MTD 1)
set(CONFIG_EASYFLASH4 1)

flash_prog_cfg.ini 内容为

[cfg]
# 0: no erase, 1:programmed section erase, 2: chip erase
erase = 1
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
skip_mode = 0x0, 0x0
# 0: not use isp mode, #1: isp mode
boot2_isp_mode = 0

[boot2]
filedir = ./build/build_out/boot2_*.bin
address = 0x000000

[partition]
filedir = ./build/build_out/partition*.bin
address = 0xE000

[FW]
filedir = ./build/build_out/ab*_$(CHIPNAME).bin
address = @partition

# 下面这个 wifi_http 工程没有使用,我打开了,是否需要打开呢?
[mfg]
filedir = ./build/build_out/mfg*.bin
address = @partition

components\easyflash4\src\easyflash_cli.c 修改

SHELL_CMD_EXPORT_ALIAS()修改为 SHELL_CMD_EXPORT(),否则要报错,因为参数数量不同,当然也可以用SHELL_CMD_EXPORT_ALIAS()增加一个别名参数。

#if defined(CONFIG_SHELL)
SHELL_CMD_EXPORT(psmcli_set_cmd, psm set cmd);
SHELL_CMD_EXPORT(psmcli_unset_cmd, psm unset cmd);
SHELL_CMD_EXPORT(psmcli_erase_cmd, psm erase cmd);
SHELL_CMD_EXPORT(psmcli_dump_cmd, psm dump cmd);
SHELL_CMD_EXPORT(psmcli_test_cmd, psm test cmd);

Bouffalo SDK 上目前的 EasyFlash 功能仅用于 PSM ;

如果直接使用会报

[MTD] [PART] [XIP] error when get PSM partition -5

[MTD] [PART] [XIP] Dead Loop. Reason: no Valid PSM partition found

错误是因为 components\easyflash4\src\easyflash.c 中 调用 components\easyflash4\src\ef_port.c 中的函数

result = ef_port_init(&default_env_set, &default_env_set_size);

然后就卡死在以下的代码里面了

    if ((ret = bflb_boot2_partition_bus_addr_inactive(name, &addr, &size)) || 0 == addr) {
                printf("[MTD] [PART] [XIP] error when get %s partition %d\r\n", name, ret);
                printf("[MTD] [PART] [XIP] Dead Loop. Reason: no Valid %s partition found\r\n", name);
               // 这里死循环了
                while (1) {
                }
            }

你如果需要保存 WiFi 信息,建议你自己参考 flash case 中的读写 api 自行实现一下。或者用自己重写ef_port

注意一下 ld 链接脚本中 flash 地址空间的划分,你最好是空出一部分 flash 空间来用于保存你的信息,确保此空间不会被做他用。

如果觉得还不错的话,可以 给个 企业微信截图_20231207112020.png+ 1 哦。

本帖被以下淘专辑推荐:

回复

使用道具 举报

WT_0213 | 2023-12-7 08:50:57 | 显示全部楼层
补充说明:
使用easyflash初始化一定注意:
  1.   //init easyflash
  2.     bflb_mtd_init(); // 这一行不要忘记
  3.     easyflash_init();
复制代码

回复 支持 反对

使用道具 举报

干簧管 | 2023-12-6 14:03:28 | 显示全部楼层
感谢分享
回复

使用道具 举报

爱笑 | 2023-12-6 14:04:06 | 显示全部楼层
用心做好保姆工作
回复

使用道具 举报

曹县 | 2023-12-6 14:33:48 | 显示全部楼层
回复

使用道具 举报

妖猊 | 2023-12-6 14:38:53 | 显示全部楼层
牛逼
回复

使用道具 举报

noonezero | 2023-12-6 15:26:39 | 显示全部楼层
感谢分享
回复

使用道具 举报

lsrly | 2023-12-6 16:06:35 | 显示全部楼层
感谢分享
好好学习,努力挣钱,专心
回复

使用道具 举报

lazy | 2023-12-7 09:01:20 | 显示全部楼层
学习了
回复

使用道具 举报

心云 | 2023-12-14 14:12:22 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则