3.12.3. U 盘烧录

U 盘烧录是通过提前在平台上烧录支持 U 盘烧录的固件,然后插上带有可用于烧录固件的 U 盘,重新上电即可自动进行烧录。

3.12.3.1. 要求与步骤

对芯片与板子的要求:

  1. 板子 USB 并配置为 HSOT 接口。

  2. 需提前烧录支持 U 盘烧录的固件。

对 U 盘的要求:
  1. U 盘要求只有一个分区

  2. U 盘格式化为 FAT32 文件系统,注意不是 exFAT、或者 FAT16

  3. U 盘里面不要放置太多其他文件

执行步骤:
  1. 拷贝在编译输出目录(images) 下的两个文件到 U 盘 FAT32 文件系统的 根目录
    • bootcfg.txt (注意 NAND 输出的名字有些不同,例如 bootcfg.txt(page_2k_block_128k))

    • xxx.img(例如 m4_ZXM47D00_nand_page_2k_block_128k_v1.0.0.img)

  2. 确保 bootcfg 文件的名字为 bootcfg.txt

    如果生成的名字为 bootcfg.txt(page_2k_block_128k),则需要改为 bootcfg.txt

  3. 将 U 盘插入板子,重新上电,即可从 BROM 启动到 U-Boot,并执行烧录更新

  4. 烧录更新完成时,需要拔出 U 盘,然后重新上电启动

注意

烧录完成平台并不会主动重启,以防重复进入 U 盘烧录更新模式。

3.12.3.2. 编译配置

SDK 提供的配置,默认已经使能该功能。 这里罗列一些配置注意项的说明。

3.12.3.2.1. eMMC 方案

使能 U 盘烧录功能,需要在 make uboot-menuconfig 中勾选配置项 UPDATE_UDISK_FATFS_ZXCMD_USB_MASS_STORAGE:

Update support  --->
[ ] Auto-update using fitImage via TFTP
[ ] Android A/B updates
[*] ZX firmware update using UDISK with FAT

Command line interface  --->
    Device access commands  --->
        [*] UMS usb mass storage

注意

  • 使用 U 盘烧录功能需要在设备树中使能对应的 USB HOST 设备树节点。

  • CONFIG_SPL_FIT_IMAGE_TINY 为可选配置项,勾选可以使得 SPL 更小。

3.12.3.2.2. SPI NAND/NOR 方案

使能 U 盘烧录功能,需要在 make uboot-menuconfig 中勾选配置项 UPDATE_UDISK_FATFS_ZXCMD_USB_MASS_STORAGE

Update support  --->
[ ] Auto-update using fitImage via TFTP
[ ] Android A/B updates
[*] ZX firmware update using UDISK with FAT

Command line interface  --->
    Device access commands  --->
        [*] UMS usb mass storage
同时设置:
  • CONFIG_SPL_MMC_TINY=y : 减小 SPL 代码大小

  • CONFIG_SPL_FIT_IMAGE_TINY=y : 减小 SPL 代码大小

3.12.3.3. 注意事项

在打包镜像前,需要确保 target/<IC>/<Board> 目录下的 image_cfg.json 文件中 device_id 与存储介质所使用的控制器 id 所对应。

例如 eMMC 存储介质使用的控制器为 SDMC0,则应该将 device_id 的值设为0, 如果 eMMC 存储介质所使用的控制器为 SDMC1,则应该将 device_id 设为1。