bouffalo_flash_cube 的使用

BouffaloSDK 采用新的 flash tool ( bouffalo_flash_cube ),并且烧录依赖 Flash prog cfg.ini 文件。

相比于 Bouffalo Lab DevCube 繁琐的功能,bouffalo_flash_cube 只用于下载代码,在用户执行 make flash 时会调用 bouffalo_flash_cube 下的可执行文件,并根据 Flash prog cfg.ini 进行烧录, 本节主要介绍一下 Flash prog cfg.ini 的语法。更详细的介绍参考 tools/bflb_tools/bouffalo_flash_cube/docs/FlashCube_User_Guide.pdf

语法

Flash prog cfg.ini 正常使用只需要创建一个 KEY,例如 [FW],并且填写 filedir 和 address 就可以使用了。

其中 filedir 的填写方式有以下几种:

  • bin 文件全路径 + bin 文件名称

  • bin 文件相对路径 + bin 文件名称

  • bin 文件名称添加 _$(CHIPNAME) 后缀可以自动识别成不同芯片(仅在 bin 文件名称前缀不同的时候使用)

  • bin 文件名称添加 * 通配符,可以自动补全bin 文件名称(仅在 bin 文件名称前缀不同的时候使用)

常规 MCU 使用(不使用无线功能)

 1 [cfg]
 2 # 0: no erase, 1:programmed section erase, 2: chip erase
 3 erase = 1
 4 # skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
 5 skip_mode = 0x0, 0x0
 6 # 0: not use isp mode, #1: isp mode
 7 boot2_isp_mode = 0
 8
 9 [FW]
10 filedir = ./build/build_out/xxx*_$(CHIPNAME).bin
11 address = 0x0000
  • cfg 表示烧录时的一些配置,正常不需要改动

  • FW 要烧录的应用固件,必须使用 FW 名称。

    • filedir 表示应用固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。 _$(CHIPNAME).bin 用于自动区分不同芯片。 xxx 表示应用固件名称,与 CMakeLists.txtproject(xxx) 中名称一致。 * 表示正则匹配,可用可不用。

    • address 必须使用 0 地址

常规 IOT 使用(使用无线功能)

 1 [cfg]
 2 # 0: no erase, 1:programmed section erase, 2: chip erase
 3 erase = 1
 4 # skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
 5 skip_mode = 0x0, 0x0
 6 # 0: not use isp mode, #1: isp mode
 7 boot2_isp_mode = 0
 8
 9 [boot2]
10 filedir = ./build/build_out/boot2_*.bin
11 address = 0x000000
12
13 [partition]
14 filedir = ./build/build_out/partition*.bin
15 address = 0xE000
16
17 [FW]
18 filedir = ./build/build_out/xxx*_$(CHIPNAME).bin
19 address = 0x10000
20
21 [mfg]
22 filedir = ./build/build_out/mfg*.bin
23 address = 0x210000
  • cfg 表示烧录时的一些配置,正常不需要改动

  • FW 要烧录的应用固件,必须使用 FW 名称。

    • filedir 表示应用固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。 _$(CHIPNAME).bin 用于区分不同芯片。 xxx 表示应用固件名称,与 CMakeLists.txtproject(xxx) 中名称一致。

    • addresspartition_xxx.toml 指定

  • boot2 要烧录的 boot2 固件,必须使用 boot2 名称。

    • filedir 表示 boot2 固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。 自动从 bsp/board/board_name/config 目录拷贝

    • address 必须使用 0 地址

  • partition 要烧录的 partition 固件,必须使用 partition 名称。

    • filedir 表示 partition 固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。 自动从 bsp/board/board_name/config 目录 partition_xxx.toml 转换成 bin 文件并拷贝

    • addresspartition_xxx.toml 指定

  • mfg 要烧录的 mfg 固件,必须使用 mfg 名称。 mfg 可选,可以不烧录

    • filedir 表示 mfg 固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。 自动从 bsp/board/board_name/config 目录拷贝

    • addresspartition_xxx.toml 指定

备注

如果使用了 partition,address 可以使用 @partition 代替绝对地址,@partition 将会自动从 partition_xxx.toml 找到对应的地址

 1 [cfg]
 2 # 0: no erase, 1:programmed section erase, 2: chip erase
 3 erase = 1
 4 # skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
 5 skip_mode = 0x0, 0x0
 6 # 0: not use isp mode, #1: isp mode
 7 boot2_isp_mode = 0
 8
 9 [boot2]
10 filedir = ./build/build_out/boot2_*.bin
11 address = 0x000000
12
13 [partition]
14 filedir = ./build/build_out/partition*.bin
15 address = 0xE000
16
17 [FW]
18 filedir = ./build/build_out/xxx*_$(CHIPNAME).bin
19 address = 0x10000
20
21 [mfg]
22 filedir = ./build/build_out/mfg*.bin
23 address = 0x210000

多个运行固件烧录

禁止使用通配符 * 以及 _$(CHIPNAME) 前缀,因为 bin 文件名称前缀相同。

 1 [cfg]
 2 # 0: no erase, 1:programmed section erase, 2: chip erase
 3 erase = 1
 4 # skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
 5 skip_mode = 0x0, 0x0
 6 # 0: not use isp mode, #1: isp mode
 7 boot2_isp_mode = 0
 8
 9 [FW1]
10 filedir = ./build/build_out/xxx0.bin
11 address = 0x00000
12
13 [FW2]
14 filedir = ./build/build_out/xxx1.bin
15 address = 0x10000
16
17 [FW3]
18 filedir = ./build/build_out/xxx2.bin
19 address = 0x20000