2.5. 系统镜像烧写

2.5.1. 概述

系统烧录操作系统、应用程序相关数据写入开发板存储设备(例如 eMMC 或 NAND Flash),以确保能够正常运行过程。该过程主要包括以下几个关键步骤:

  1. 准备镜像文件

    BSP 必须编译打包镜像文件,包括 Bootloader、操作系统应用程序内容。有关如何生成镜像文件详细信息,请查阅 BSP 开发指南 - 搭建开发环境编译说明

  2. 连接开发板

    首先,需要使用 USB 或以太网开发板计算机连接。

    特定情况下,可能需要通过串口连接,以便开发板置于特定模式(例如,直接存储介质启动部分启动镜像通过串口下载内存运行),以完成 USB 或以太网初始化。

  3. 选择烧录工具

    烧录工具用于镜像文件写入开发板存储设备,根据用户需求操作系统环境不同,可选择以下几种工具:

    • 图形化工具:XBurn

      XBurn 提供直观图形界面,适合希望通过简单操作完成烧录任务用户。用户点击几步即可完成镜像烧录,非常便捷。

    • 命令行工具:xburn

      对于高级定制烧录需求,可以选择 xburn 工具。该工具支持通过手动编辑 JSON 配置文件利用图形化工具生成配置文件运行命令完成烧录。

      • 特点:灵活性高,适合需要批量处理脚本操作用户。

      • 使用说明:请参阅 命令行工具介绍

    • 手动烧录方式

      对于某些特殊情况自由度需求,用户可以选择手动方式完成镜像烧录。

      • 特点:完全自定义操作流程,适合特定开发调试场景。

      • 使用说明:请参阅 手动烧录工具介绍

  4. 设置烧录参数

    烧录工具图形界面中,需要设置烧录参数,包括目标设备类型、镜像文件路径烧录方式等。这些参数直接影响烧录结果过程。

  5. 执行烧录操作

    烧录参数设置完成后,开始执行烧录操作。烧录工具逐字节地镜像文件数据写入开发板存储设备( eMMC 或 NAND Flash),确保操作系统应用程序能够正确加载。

  6. 验证烧录结果

    系统烧录完成后,烧录结束后,需进行验证确保烧录成功。可以通过开发板串口输出其他调试接口,检查系统是否能够正确启动,以及应用程序是否能够正常运行。

章节旨在提供如何使用 XBurn 图形化工具、命令行工具以及手动烧录工具详细操作方法注意事项。

2.5.2. 固件烧录协议简介

本手册连接开发板章节详细说明串口、网口及USB接口连接方法。固件烧录过程同样依赖这三类物理接口,并对应三种核心协议:

协议
概述
特点
适用场景
DFU DFU(Device Firmware Upgrade) 是一种固件更新协议,通常用于设备进入特定恢复模式,以便通过 USB 连接烧录固件。它嵌入式系统广泛应用,尤其适用设备无法正常启动处于空板状态固件下载。 支持低层次烧录操作,通常用于恢复初次烧写固件,通常用于硬件之间低级交互,不依赖操作系统。 设备完全启动处于空板状态时,适合通过 USB 进行固件下载烧录。
Xmodem Xmodem 是一种串口通信协议,最初用于文件传输,常用通过串口(如 UART)进行固件下载。具有错误检测自动重传机制,确保传输过程可靠性。 适用串口连接,通常用于固件小规模传输,速度相对较慢,但可靠性高,适用带宽低速环境。 常用设备初始引导程序(如 BL2、BL3x)的下载,特别无法进入高级引导模式时,适合串口传输固件。
Fastboot Fastboot 是一种快速启动下载协议,通过 USB 连接设备进入引导模式进行快速固件下载。 高速固件烧录工具,支持设备快速更新修复,直接通过设备的 bootloader 进入 fastboot 模式。 设备启动进入 fastboot 模式,适用已经基本引导程序设备,常用更新系统镜像固件。

2.5.3. 图形化工具烧录介绍

XBurn-gui工具集提供丰富图形化界面,如下:

2.5.3.1. 烧录工具界面简介

烧录界面

img

说明如下:

  • 基本配置

    img

    1. 产品类型:选择烧录设备对应产品类型。

      • 每种产品类型对应一种特定硬件型号配置(例如 X5 、 RDKS100 等)。

      • 确保选择设备实际型号一致选项,以确保刷入固件设备兼容,从而避免刷机失败。

    2. 连接类型:选择设备主机通信连接方式,支持串口、 USB 和网口三种方式。

      • 可以组合使用不同连接方式,例如串口 +USB,以满足不同刷机需求。

      • 连接类型选择直接影响刷机过程下载模式。

      • 每种连接方式对应协议操作方法可能不同,请根据目标设备兼容性使用场景选择合适连接方式。

    3. 下载模式: 根据设备连接类型,系统自动匹配适用下载模式。常用下载模式如下:

      • fastboot(推荐):

        • 连接类型: USB

        • 适用非空板设备,能够实现快速烧录,速度最快。

      • dfu_fastboot(空板烧录):

        • 连接类型: USB

        • 适用空板设备,进行整机烧录。需手动拨码使设备进入 DFU 引导模式,速度快。

      • xmodem_fastboot(空板/调试优选):

        • 连接类型:串口 +USB

        • 适用空板非空板设备,支持烧录查看日志,适合调试,烧录速度适中。

      • xmodem_xmodem(应急方案):

        • 连接类型:纯串口

        • 适用空板设备,当 USB 和网口功能异常时可选,只适合烧录镜像(如 miniboot_all, uboot 等),速度较慢( 3-10KB/s)。

      • 其他下载模式详细使用说明,请参考烧录方式简介章节表格。

    4. 镜像文件目录:

      选择烧录镜像文件所在目录。

    5. 批量烧录数量:

      设置同时烧录设备数量。根据电脑性能、硬件连接类型带宽因素,合理设置烧录设备数量。

      建议同时烧录 8 台设备。

  • 高级配置

    • 启用分区备份/还原功能:勾选后,会烧录备份分区信息,在烧录还原分区信息。

    • 烧录指定分区镜像:勾选后,会烧录指定分区镜像,不选则烧录完整包含所有分区镜像。

    • 全盘擦除 eMMC:勾选后,会烧录对 eMMC 进行全盘擦除,耗时较长,请耐心等待。

    • 烧录完成自动重启:勾选后,会烧录完成自动重启设备。

    • 启用 USB 3.0模式:勾选后,会使用 USB3.0 接口烧录,默认使用 USB2.0 接口。

    • 详细使用说明参考高级配置章节

  • 操作按钮

    • 恢复默认配置:恢复默认设置。

    • 开始升级:开始烧录操作。

设置界面

img

界面用于设置日志级别,控制日志输出级别。

  • 日志级别:选择日志输出级别(例如信息、调试)。

驱动界面

img

界面用于查看管理驱动程序状态信息。

  • 驱动名称:列出安装驱动程序名称(例如 USB Driver (ADB, Fastboot, DFU) 和 USB to Serial Driver (CH341))。

  • 当前版本:显示驱动程序当前版本。

  • 操作:提供安装卸载驱动程序按钮。

  • 扫描驱动:提供扫描驱动程序按钮,用于检测安装驱动程序。

2.5.3.2. 烧录方式简介

XBurn-gui工具支持烧录方式如下:

连接类型 下载模式 接线方式
烧录步骤说明
备注
USB DFU+Fastboot 单 USB 线连接 1. 将单板设置为 DFU 启动模式(拨码开关 D5 置零, 拨码开关 D[2:0] 置为 010)下载 BL2BL3x设备引导至 U-Boot 命令模式。
2. 在 U-Boot 下执行 fastboot 0 进入 Fastboot 模式。
3. 使用 Fastboot 通过 USB 烧写完整镜像。
4. 烧录完成拨码开关正常启动模式,如 EMMC 启动模式(将 D[5][2:0] 置为1001)。
· 支持空板状态烧录
· 需要一分钟点击 开始升级 按钮进行升级,否则因为 DFU 超时升级失败
USB Fastboot 单 USB 线连接 1. 非空板状态下,确保设备进入 U-Boot 命令模式,执行 fastboot 0 进入 Fastboot 模式:
a. 若设备在 Fastboot 模式,直接烧录。
b. 否则,若有 ADB 连接 (adb devices),如果存在 adb devices,通过 adb shell 进入单板终端,然后执行 reboot -m usb2 -f 使设备进入到 fastboot 模式。
2. 使用 Fastboot 通过 USB 烧写完整镜像。
· 仅支持非空板状态烧录
Serial+USB Fastboot 串口线 + USB 线连接 1. 非空板状态下,板端通过串口进入 U-Boot 命令模式,执行 fastboot 0进入 Fastboot 模式。
2. 使用 Fastboot 通过 USB 烧写完整镜像。
· 仅支持非空板状态烧录
Serial+USB Xmodem+fastboot 串口线 + USB 线连接 1. 通过串口使用 Xmodem 协议下载 BL2BL3x设备引导至 U-Boot 命令模式。
2. 在 U-Boot 下执行 fastboot 0 进入 Fastboot 模式。
3. 使用 Fastboot 通过 USB 烧写完整镜像。
· 支持空板状态烧录
· 推荐串口波特率设置为 921600 (拨码开关 D4 置 1)
Serial+USB Xmodem+DFU 串口线 + USB 线连接 1. 通过串口使用 Xmodem 协议下载 BL2BL3x设备引导至 U-Boot 命令模式。
2. 进入 U-Boot 命令模式执行 dfu 0 命令进入 DFU 模式。
3. 使用 DFU 通过 USB 烧写完整镜像。
· 支持空板状态烧录
· 推荐串口波特率设置为 921600 (拨码开关 D4 置 1)
Serial+USB DFU 串口线 + USB 线连接 1. 非空板状态下,板端通过串口进入 U-Boot 命令模式执行 dfu 0 命令进入 DFU 模式。
2. 使用 DFU 通过 USB 烧写完整镜像。
· 仅支持非空板状态烧录
Serial+Ethernet xmodem+fastboot 串口线 + 网线连接 1. 通过串口使用 Xmodem 协议下载 BL2BL3x设备引导至 U-Boot 命令模式。
2. 在 U-Boot 下执行 fastboot udp 0 命令启动 Fastboot UDP 服务。
3. 在主机使用 fastboot 的 UDP 模式烧写完整镜像。
· 支持空板状态烧录
· 推荐串口波特率设置为 921600 (拨码开关 D4 置 1)
Serial+Ethernet fastboot 串口线 + 网线连接 1. 非空板状态下,通过串口进入 U-Boot 命令模式执行 fastboot udp 0 启动 Fastboot UDP 服务。
2. 在主机使用 fastboot 的 UDP 模式烧写完整镜像。
· 仅支持非空板状态烧录
Serial xmodem+xmodem 串口线连接 1. 通过串口使用 Xmodem 协议下载 BL2BL3x设备引导至 U-Boot 命令模式。
2. 继续在 U-Boot 下使用串口协议(如 loady, loadx)下载镜像烧录。
· 支持空板状态烧录
· 仅推荐用于尺寸镜像烧录
· 推荐串口波特率设置为 921600 (拨码开关 D4 置 1)
Serial xmodem 串口线连接 1. 非空板状态下,通过串口进入 U-Boot 命令模式使用串口协议(如 loady, loadx)下载镜像烧录。
2. 下载烧录操作通过串口进行。
· 仅支持非空板状态烧录
· 仅推荐用于尺寸镜像烧录
· 推荐串口波特率设置为 921600 (拨码开关 D4 置 1)

注意:在上述所有使用 Xmodem 协议下载模式中,推荐串口波特率改为 921600bps (将拨码开关的 D4 置 1),以提高烧录速度。

2.5.3.3. 烧录工具安装启动说明

windows 系统安装启动 XBurn

双击安装包 xburn-gui_1.1.5_x64-setup.exe 即可进行安装,具体安装步骤如下:

  1. 点击 Next

    img

  2. 选择 Add/Reinstall components,然后点击 Next

    img

  3. 点击 Browse 选择安装路径:

    img

    提示:建议软件安装硬盘分区根目录(如 D:\xburn-gui),以便查找日志文件。

  4. 点击 Install 进行安装:

    img

  5. 进度条满,且出现 Setup was completed successfully.说明安装成功,此时点击 Next

    img

  6. 勾选 Run xburn-gui 以及 Create desktop shortcut,然后点击 Finish 完成安装:

    img

  7. 安装完成后,XBurn-gui界面随后自动打开:

    img

  8. 后续可以直接双击桌面上XBurn.exe 图标即可启动软件。

Ubuntu 系统安装启动 XBurn

安装包目录执行 sudo dpkg -i xburn-gui_1.1.5_amd64.deb 命令即可等待完成安装,安装示例如下:

(base) hobot@hobot-ThinkPad-T14-Gen-1:~/tools$ sudo dpkg -i xburn-gui_1.1.5_amd64.deb 
[sudo] hobot 的密码: 
正在选中未选择的软件包 xburn-gui。
(正在读取数据库 ... 系统当前共安装有 494898 个文件和目录。)
准备解压 xburn-gui_1.1.5_amd64.deb  ...
正在解压 xburn-gui (1.1.5) ...
正在设置 xburn-gui (1.1.5) ...
Udev rules installed and activated
User nobody added to plugdev group
User hobot added to plugdev group
User snapd-range-524288-root added to plugdev group
User snap_daemon added to plugdev group
User xpj added to plugdev group
正在处理用于 mailcap (3.70+nmu1ubuntu1) 的触发器 ...
正在处理用于 gnome-menus (3.36.0-1ubuntu3) 的触发器 ...
正在处理用于 desktop-file-utils (0.26-1ubuntu3) 的触发器 ...
正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...

然后执行 sudo xburn-gui 命令或者应用菜单点击 xburn-gui 图标(会输入密码提示),输入密码即可打开烧录工具界面:

img

MAC 系统安装启动 XBurn

双击安装包 xburn-gui_1.1.5_universal.dmg 即可进行安装,具体安装步骤如下:

  1. 随即出现一个弹窗,单击按住 xburn-gui 图标Applications 图标中:

    img

    img

    img

  2. xburn-gui 便装完成,此时可以双击 xburn-gui图标打开程序:

    img

  3. 安装过程中若遇到提示缺少一些依赖,需要安装相应依赖。

启动常见问题

一些常见问题以及解决方案FAQ:常见错误对照表

2.5.3.4. 烧录方式选取说明

连接类型下载模式详细说明可以参考烧录方式简介章节表格,本小节重点说明:

  1. 存储介质镜像为空或者已经损坏,设备已变砖(Bricked Device);

  2. 存储介质镜像正常,设备可以正常启动。

两种情况使用烧录软件烧录方式选取。

镜像为空已损坏下载模式选取

镜像为空已损坏时,板端无法进入 U-Boot,此时有 BL1 的镜像,需要将 BL2 镜像以及 BL3X 镜像烧录板端,烧录两个镜像可以通过下面模式:

  1. 使用 DFU 下载模式:

    • 硬件具备启动拨码开关,且拨码开关设置为 USB 启动模式;

    • 硬件中 BOOT CONFIG 中 DFU 位(一般是 D5 位)需要接地(DFU 置零),如果单板拨码开关控制 DFU 则拨码开关拨为 0;若没有拨码开关控制 DFU 位,则需要根据实际硬件电路拆/装 DFU 位电阻;

    • 存储介质镜像存在已损坏时,可以采用选项进行升级。

      USB 启动模式需要拨码开关设置如下状态:

      USB_Download_Mode

  2. 使用 Xmodem 下载模式:

    • 存储介质镜像存在已损坏时,可以采用选项进行升级;

    • 建议在 Xmodem 下载模式下,对于 X5 EVB 可以拨码开关的 D4 置 1 (将串口波特率改为 921600bps),这样可以极大加快烧录速度。

      Xmodem 启动模式需要拨码开关设置如下状态:

      UART_Download_Mode

镜像正常下载模式选取

存储设备镜像正常可以选取 Fastboot 下载模式,该模式需要开发板可以正常进入 U-Boot 命令行:

  • 硬件具备启动拨码开关,请确保存储介质存在正常启动软件,无需其他操作;

  • 硬件具备启动拨码开关,请确保拨码配置设置可以正常启动状态。

默认启动模式为 EMMC 启动,此时拨码开关状态如下:

EMMC_Download_Mode

其他启动模式可以参考拨码开关章节拨码真值表。

注意:在存储介质软件存在已损坏情况下, X5 芯片自动切换至 USB 启动模式。

2.5.3.5. USB 连接方式升级过程说明

前提条件:

适用范围:

USB 连接方式当前支持 Fastboot、DFU+Fastboot 下载模式。

  • DFU+Fastboot 下载模式

    • DFU+Fastboot 烧录模式适用开发板没有可用镜像镜像已损坏场景,此时需要使用 out/product/uart_usb镜像。

    • 启动码器开发板通过启动拨码开关 配置启动方式为 USB场景。

    • 需要注意:本模式需要一分钟点击 开始升级 按钮进行升级,否则因为 DFU 超时升级失败。

    • 烧录步骤如下:

      1. 单板设置为 DFU 启动模式(拨码开关 D5 置零, 拨码开关 D[2:0] 置为 010)下载 BL2 和 BL3x 至设备引导至 U-Boot 命令模式。

      2. 在 U-Boot 下执行 fastboot 0 进入 Fastboot 模式。

      3. 使用 Fastboot 通过 USB 烧写完整镜像。

      4. 烧录完成拨码开关正常启动模式,如 EMMC 启动模式(将 D[5][2:0] 置为1001)。

  • Fastboot 下载模式

    • Fastboot 下载模式适用非空板状态烧录。

    • 烧录步骤如下:

      1. 非空板状态下,确保设备进入 U-Boot 命令模式,执行 fastboot 0 进入 Fastboot 模式:

        • I. 若设备在 Fastboot 模式,直接烧录。

        • II. 否则,若有 ADB 连接 (adb devices),如果存在 adb devices,通过 adb shell 进入单板终端,然后执行 reboot -m usb2 -f 使设备进入到 fastboot 模式:

          # Windows PowerShell terminal
          PS C:\Users\xiangqing.shi> adb devices
          List of devices attached
          0x30811a620a494c0f035cefd80000  device
          
          PS C:\Users\xiangqing.shi> adb shell
          sh-5.1# reboot -m usb2 -f
          
        • III. 操作前,如果板端接入串口,此时可以看到串口日志:

          # board serial terminal
          U-Boot 2022.10-g64e3056741 (Jun 18 2025 - 21:44:29 +0800)
          
          Model: Horizon X5
          DRAM:  3.9 GiB
          console out start addr:0x0000000087ffc000, end addr:0x0000000087ffe000
          horizon_lsio_pinctrl lsio_iomuxc@34180000: Initialized D-Robotics pinctrl driver
          optee optee: OP-TEE: revision 3.20 (a3b65462)
          ADC calibration: -22
          ADC trimming: 9
          horizon_hsio_pinctrl hsio_iomuxc@35050000: Initialized D-Robotics pinctrl driver
          horizon_dsp_pinctrl dsp_iomuxc@31040014: Initialized D-Robotics pinctrl driver
          Core:  149 devices, 29 uclasses, devicetree: separate
          WDT:   Started watchdog@34250000 with servicing (10s timeout)
          stop watchdog
          MMC:   sdio-host@35040000: 0, sdio-host@35020000: 1
          Loading Environment from MMC... (Tuning Ok!) *** Warning - bad CRC, using default environment
          
          In:    serial@32120000
          Out:   serial@32120000
          Err:   serial@32120000
          Net:   
          Warning: gmac-tsn@35010000 (eth0) using random MAC address - 92:d9:1f:90:d1:8d
          eth0: gmac-tsn@35010000
          boot action: FASTBOOT USB2.0
          select emmc(0) as flash medium
          do fastboot usb
          
      2. 使用 Fastboot 通过 USB 烧写完整镜像。

接线示意图:

USB_UP

USB 连接类型烧录说明:

以 DFU+Fastboot 下载模式为例对 XBurn-gui烧录工具使用进行说明。

烧录之前,需要配置启动方式为 USB 启动(将拨码开关 D5 置零, 拨码开关 D[2:0] 置为 010,如果开发板没有拨码开关,需要临时修改硬件电路),此时,板端如果连接串口,可以串口终端看到下面日志:

SNOTICE:  Welcome to Horizon X5 ASIC BOOTROM - V4.1
NOTICE:                 OTP config:
NOTICE:                         otp exist: true
NOTICE:                         test region size: 304
NOTICE:                         secure region size: 120
NOTICE:                         none secure region size: 56
NOTICE:   Enable MMU 
NOTICE:  Booting Trusted Firmware
NOTICE:  BL1: v2.8(release):
NOTICE:  BL1: Built : 17:42:12, Oct 19 2023
NOTICE:  Enter USB2 Mode......
NOTICE:  Currtenly use dfu-util to download file
NOTICE:  Download file via USB
NOTICE:  DFU Start...

XBurn-gui烧录工具界面配置如下:

img

步骤1:

选择产品类型。点击产品类型选项列表中,选择型号X5

步骤2:

选择连接类型。点击选择连接类型选项列表,选择 USB

步骤3:

选择下载模式。点击下载模式选项列表,选择 DFU+Fastboot 模式。

步骤4:

选择烧录镜像目录。点击浏览,选择镜像文件所在目录,通常系统编译生成的 out/product 目录,如 S:\home\sxq\projects\sdk_x5_CS1.0\out\product

步骤5:

开始烧录。将开发板上电,然后点击开始升级,工具开始烧录。当进度条显示 100% 时,表示升级成功。

img

步骤6:

烧录完成拨码开关正常启动模式,如 EMMC 启动模式(将 D[5][2:0] 置为1001)。

注意:点击开始升级 按钮需要单板上电 1 分钟完成,否则单板因为超时退出 DFU 状态,此时进入等待 Xmodem 文件传输状态,此时烧录软件一般报错如下:

[Burn thread-1][20:09:55] [WARNING] Minimum dfu device detect timeout is 30s!
[Burn thread-1][20:09:55] [INFO] Executing 'tools/windows/dfu-util.exe -l', waiting for 60 seconds for execution to finish...
dfu-util 0.11
......
Determining device status...
error get_status: LIBUSB_ERROR_PIPE
[Burn thread-1][20:09:58] [ERROR] DFU download 'S:\home\sxq\projects\sdk_x5_CS1.0\out\product\uart_usb/bl2_usb2_ddr.bin' failed
......
[Burn thread-1][20:09:58] [ERROR] Step 'dfu_boot' failed
[Burn thread-1][20:09:58] [ERROR] Board-1, burn failed
[Burn thread-1][20:09:58] [ERROR] Board-1 [UID: 1-2.2] [Storage: emmc] Status: FAILED
Process terminated, exit code: 0

如果执行 USB 升级过程同时接入串口,打开串口终端可以看到如下日志:

NOTICE:  Welcome to Horizon X5 ASIC BOOTROM - V4.1
NOTICE:                 OTP config:
NOTICE:                         otp exist: true
NOTICE:                         test region size: 304
NOTICE:                         secure region size: 120
NOTICE:                         none secure region size: 56
NOTICE:   Enable MMU 
NOTICE:  Booting Trusted Firmware
NOTICE:  BL1: v2.8(release):
NOTICE:  BL1: Built : 17:42:12, Oct 19 2023
NOTICE:  Enter USB2 Mode......
NOTICE:  Currtenly use dfu-util to download file
NOTICE:  Download file via USB
NOTICE:  DFU Start...
NOTICE:  USB DFU function timeout and need switch to xmodem download 
NOTICE:   dfu-util timeout, forcily switch xmodem download......
## Ready for (xmodem) download to 0x1ff00000
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

如果遇到超时退出 DFU 导致升级失败,可以断电重启单板再次点击升级即可。

2.5.3.6. Serial+USB 连接方式升级过程说明

前提条件:

适用范围:

Serial+USB 连接方式时,支持 Fastboot、Xmodem+fastboot、Xmodem+DFU、 DFU 四种下载模式,这四种下载方式详细说明可以参考烧录方式简介章节表格。

需要说明:

  • 连接类型适用能够同时连接串口和 USB 接口情景;

  • 连接类型可以选择 Xmodem+fastboot 以及 Xmodem+DFU 下载模式,通过 Xmodem 协议用于开发板没有可用镜像镜像已损坏场景烧录,此时需要使用 out/product/uart_usb镜像 BL2 以及 BL3X,此时推荐串口波特率设置为 921600 (拨码开关 D4 置 1)。

下面以 Fastboot 下载模式为例进行说明。

接线示意图:

fastboot_usb

XBurn-gui烧录工具界面配置如下:

fastboot_usb

以下烧录过程详细描述:

步骤1: 选择产品类型。点击产品类型选项列表中,选择型号X5

步骤2: 选择连接类型。点击连接类型选项列表,选择 Serial+USB

步骤3: 选择下载模式。点击下载模式选项列表,选择Fastboot模式。

步骤4: 选择烧录镜像目录。点击浏览,选择镜像文件所在目录,通常系统编译生成out/product目录,如S:\home\sxq\projects\sdk_x5_CS1.0\out\product

步骤5: 点击刷新按钮,确保软件识别正确串口。

步骤6: 选择串口。在串口选项选择正确的 COM 口,如COM6

步骤7: 设置波特率。在波特率选项输入选择正确波特率,如921600(推荐)。

步骤8: 开始烧录。将开发板上电,然后点击开始升级,工具开始烧录。当进度条显示100%时,表示升级成功。

img

2.5.3.7. Serial+Ethernet 连接方式升级过程说明

前提条件:

适用范围:

Serial+Ethernet 连接方式 Fastboot 以及 Xmodem+fastboot 两种下载模式,这两种下载模式详细说明可以参考烧录方式简介章节表格。

  • 连接方式适用能够同时连接串口以太网场景。

  • 连接方式可以选择 Xmodem+fastboot 下载模式,通过 Xmodem 协议用于开发板没有可用镜像镜像已损坏场景烧录,此时需要使用 out/product/uart_usb镜像 BL2 以及 BL3X,此时推荐串口波特率设置为 921600 (拨码开关 D4 置 1)。

下面以 Fastboot 下载模式为例进行说明。

接线示意图:

fastboot_udp

XBurn-gui烧录工具界面配置如下:

fastboot_usb

以下烧录过程详细描述:

步骤1: 选择产品类型。在产品类型列表选择X5

步骤2: 选择连接类型。在连接类型列表选择Serial+Ethernet

步骤3: 选择下载模式。在下载模式列表选择Fastboot

步骤4: 选择镜像所在目录。点击浏览按钮,选择镜像文件所在目录,例如S:\home\sxq\projects\sdk_x5_CS1.0\out\product

步骤5: 点击刷新按钮,确保软件识别正确串口。

步骤6: 选择串口。在串口列表选择当前使用的 COM 口,如 COM6

步骤7: 设置波特率。在波特率列表选择当前串口波特率,如921600

步骤8: 设置主机IP。在主机IP输入框输入当前接入的 PC 网口静态 IP ,如 192.168.1.101

步骤9: 设置板子IP。在板子IP输入框输入192.168.1.10(默认 IP)。

步骤10: 设置子网掩码。在子网掩码输入框输入255.255.255.0

步骤11: 设置网关。在网关输入框输入192.168.1.1

步骤12: 开始烧录。点击开始升级按钮,开始烧录过程。当进度条显示100%时,表示升级成功。

fastboot_usb

2.5.3.8. Serial 连接方式升级过程说明

前提条件:

适用范围:

Serial 连接方式 Xmodem 以及 Xmodem+Xmodem 两种下载模式,这两种下载模式详细说明可以参考烧录方式简介章节表格。

  • 连接方式适用只能连接串口场景。

  • 连接方式支持下载模式通过 Xmodem 协议用于开发板没有可用镜像镜像已损坏场景烧录,此时需要使用 out/product/uart_usb镜像 BL2 以及 BL3X,此时推荐串口波特率设置为 921600 (拨码开关 D4 置 1)。

  • 连接方式推荐用于尺寸镜像烧录,Xmodem 传输速度慢。

下面以 Xmodem 下载模式为例进行说明。

接线示意图:

Serial_mode

XBurn-gui烧录工具界面配置如下:

XBurn_Serial_Ethernet_Fastboot_dl

以下烧录过程详细描述:

步骤1: 选择产品类型。在产品类型列表选择X5

步骤2: 选择连接类型。在连接类型列表选择Serial

步骤3: 选择下载模式。在下载模式列表选择Xmodem

步骤4: 选择镜像所在目录。点击浏览按钮,选择镜像文件所在目录,例如S:\home\sxq\projects\sdk_x5_CS1.0\out\product

步骤5: 选择串口。在串口列表选择COM6

步骤6: 点击刷新按钮,刷新串口列表确保选择正确串口。

步骤7: 设置波特率。在波特率输入框输入921600

步骤8: 开始烧录。点击开始升级按钮,开始烧录过程。Xmodem 传输速度慢,请耐心等待。

2.5.3.9. 高级配置

烧录完成自动重启

勾选烧录完成后自动重启选项后,烧录镜像结束时会重启开发板。

  • 默认勾选,烧录结束后,开发板停留最后烧录结束状态,比如通过fastboot烧录,那么烧录结束后,开发板依然处在fastboot模式。

auto_reboot

勾选后出现一个 检查设备是否重启成功 选项勾选。

全盘擦除 eMMC

勾选全盘擦除 eMMC后,如果开发板存储介质是 eMMC 时,会烧录镜像前,全盘擦除整个 eMMC。

  • 全盘擦除 eMMC 耗时较长,请耐心等待,16GB 的 eMMC 的全盘擦除需要 3-5 分钟。

  • 当选烧录指定分区镜像模式是,即使勾选 全盘擦除 eMMC不会生效。

all_emmc_erase

启用分区备份/还原功能

简介

XBurn-gui 烧录工具支持分区备份、还原功能,可以指定分区进行备份,在镜像烧录结束后,会备份分区重写烧录开发板,保持分区数据不会因为烧录镜像发生变化。

适用范围

  • 开发板存储介质必须已经存在分区。

使用方式

  • 默认烧录不会进行分区备份。

    partition_backup

  • 勾选 启用分区备份/还原功能 选项,并选择需要备份分区,则烧录时会选择分区进行分区备份。

烧录步骤之前介绍几种连接方式烧录步骤除了需要额外勾选启用分区备份/还原功能 选项之外完全一样。

额外需要注意烧录完成后,重启开发板检查分区是否备份成功。

指定烧录分区镜像

Burn_specified

  • 指定烧录分区镜像: 本选项支持烧录镜像一个多个分区,不影响其他分区内容。适用以下场景:

    • 更新系统某个组件(如 miniboot、uboot、system、app 分区等)

    • 需要影响用户数据分区前提进行系统升级

    • 选择模式后,您手动选择烧录目标分区。

2.5.4. 命令行工具介绍(工厂版本)

2.5.4.1. 简介

命令行工具图形化工具核心执行模块,能够独立运行完成相同功能,二者基本原理相同。用户可以根据需要选择适合自己工具。

镜像准备、环境配置支持烧录方式内容图形化界面工具一致,此处不再详细说明。

2.5.4.2. 命令行环境配置说明

Windows 系统需要将 xburn-gui 烧录工具安装目录加入系统环境变量中,以方便通过命令行方式执行烧录操作,例如:

XBurn_path

上述路径 D:\xburn-gui 添加系统环境变量中,步骤如下:

  1. 按下 Win + R 键,打开运行对话框。

  2. 输入 sysdm.cpl,按下回车。

  3. 系统属性窗口菜单栏选择高级,然后点击右下角环境变量

  4. 环境变量窗口选中Path变量,然后点击编辑按钮。

  5. 编辑环境变量窗口点击新建,将 xburn-gui 烧录工具安装目录地址粘贴进去即可。

  6. 点击确定

在 Ubuntu 系统xburn 命令完成安装自动集成/usr/bin/ 中,可以直接使用。

2.5.4.3. 命令行使用方式

在 PC 端,打开对应系统命令行界面,执行命令 sudo xburn (Ubuntu 以及 macOS 终端中)或 xburn (Windows Powershell 中),即可进行烧录,可以执行 xburn --help 看到完整使用方式:

$ xburn --help
usage: xburn [-h] [-s {product,serial,dfu,adb}] [-c CONFIG] [-v, --version] [-V {debug,info,warning,error,critical}] [-p PRODUCT_TYPE] [-l {usb,ethernet,serial,serial_usb,serial_ethernet}] [-d {fastboot,dfu,dfu_fastboot,xmodem,xmodem_fastboot,xmodem_dfu,xmodem_xmodem}] [-i IMG_FILES] [--erase_scrub]
             [--security {secure,secure_ohp,nosecure}] [--boot_check] [--batch_num BATCH_NUM] [--host_ip HOST_IP] [--board_ip BOARD_IP] [--netmask NETMASK] [--gateway GATEWAY] [--ipv6] [--usb_port {usb2.0,usb3.0}] [--serial SERIAL] [--baudrate BAUDRATE] [--mcu_serial MCU_SERIAL]
             [--hsm_serial HSM_SERIAL] [--erase_part ERASE_PART] [--select_part SELECT_PART] [--backup_part BACKUP_PART] [--reboot]

Command-line interface for the application.

optional arguments:
  -h, --help            show this help message and exit

Status query and other configurations::
  -s {product,serial,dfu,adb}, --scan {product,serial,dfu,adb}
                        Scan serial, dfu, adb and supported product lists.
  -c CONFIG, --config CONFIG
                        Path to the xburn config file.
  -v, --version         Display compiler version information.
  -V {debug,info,warning,error,critical}, --log_level {debug,info,warning,error,critical}
                        Set the logging level (default: info).

Burn configuration Arguments::
  -p PRODUCT_TYPE, --product_type PRODUCT_TYPE
                        Specify the product type.
  -l {usb,ethernet,serial,serial_usb,serial_ethernet}, --link_type {usb,ethernet,serial,serial_usb,serial_ethernet}
                        Specify the hardware link type.
  -d {fastboot,dfu,dfu_fastboot,xmodem,xmodem_fastboot,xmodem_dfu,xmodem_xmodem}, --dl_mode {fastboot,dfu,dfu_fastboot,xmodem,xmodem_fastboot,xmodem_dfu,xmodem_xmodem}
                        Specify the download mode.
  -i IMG_FILES, --img_files IMG_FILES
                        Specify img_files (comma separated).
  --erase_scrub         Enable or disable storage erase scrub.
  --security {secure,secure_ohp,nosecure}, --security_type {secure,secure_ohp,nosecure}
                        Specify the security type.
  --boot_check          Enable or disable boot check.
  --batch_num BATCH_NUM
                        Specify the number of boards to burn in batch.
  --host_ip HOST_IP     Specify the network host IP (comma separated).
  --board_ip BOARD_IP   Specify the network board IP (comma separated).
  --netmask NETMASK     Specify the network netmask (comma separated).
  --gateway GATEWAY     Specify the network gateway (comma separated).
  --ipv6                Enable or disable IPv6 network configuration.
  --usb_port {usb2.0,usb3.0}
                        Specify the usb port.
  --serial SERIAL       Specify the serial port.
  --baudrate BAUDRATE   Specify the serial port baud rate.
  --mcu_serial MCU_SERIAL
                        Specify the MCU serial port.
  --hsm_serial HSM_SERIAL
                        Specify the Hardware Security Module serial port.
  --erase_part ERASE_PART
                        Specify partitions to erase (comma separated).
  --select_part SELECT_PART
                        Specify partitions to select (comma separated).
  --backup_part BACKUP_PART
                        Specify partitions to backup (comma separated).
  --reboot              Enable or disable board reboot after burn.

下面这些参数分别进行简要说明。

状态查询基础配置

参数 缩写 可选值 作用说明 示例 格式要求
--scan -s product, serial, dfu, adb 扫描设备产品列表 -s serial 单选
--config -c 文件路径 指定配置文件路径 -c XXX
--version -v 显示编译器版本信息 -v -
--log_level -V debug, info, warning, error, critical 设置日志级别(默认 info -V debug -

核心烧录配置

参数 缩写 可选值 作用说明 示例 格式要求
--product_type -p 产品型号(当前支持 X5, RDKS100 必填,指定设备硬件型号 -p X5 设备一致
--link_type -l usb, ethernet, serial, serial_usb, serial_ethernet 物理连接方式 -l serial_usb -
--dl_mode -d fastboot,dfu,dfu_fastboot,xmodem,xmodem_fastboot,xmodem_dfu,xmodem_xmodem 烧录协议组合(依赖连接类型) -d xmodem_fastboot -
--img_files -i 镜像路径 指定烧录镜像 -i boot.img,system.img 多块单板并行烧录需要逗号分隔路径
--batch_num - 整数(建议≤8 ) 并行烧录设备数量 --batch_num 4 -
--reboot - - 烧录完成自动重启设备 --reboot -

协议选择逻辑

  • 空板状态 → 优先 dfuxmodem_xmodem(串口应急)

  • 非空板 → 首选 fastboot( USB 高速)

  • 调试需求xmodem_fastboot(串口日志 +USB 烧录)

分区操作安全控制

参数 缩写 可选值 作用说明 示例 格式要求
--erase_part - 分区列表 擦除指定分区 --erase_part cache,userdata 逗号分隔分区
--select_part - 分区列表 烧录选中分区 --select_part boot 逗号分隔分区
--backup_part - 分区列表 烧录备份分区 --backup_part recovery 逗号分隔分区
--erase_scrub - 布尔值 启用存储深度擦除(增强安全性) --erase_scrub -
--security_type - secure, secure_ohp, nosecure 设备安全模式(影响启动验证) --security secure -
--boot_check - 布尔值 烧录校验启动完整性 --boot_check -

网络配置

参数 缩写 可选值 作用说明 示例 格式要求
--host_ip - IPv4/IPv6 地址 主机 IP 地址 --host_ip 192.168.1.100 逗号分隔 IP(多设备时)
--board_ip - IPv4/IPv6 地址 设备 IP 地址 --board_ip 192.168.1.101,192.168.1.102 逗号分隔 IP(多设备时)
--netmask - 子网掩码 网络子网掩码 --netmask 255.255.255.0 -
--gateway - IPv4/IPv6 地址 网关地址 --gateway 192.168.1.1 -
--ipv6 - 布尔值 启用 IPv6 网络配置 --ipv6 -

接口配置

参数 缩写 可选值 作用说明 示例 格式要求
--usb_port - usb2.0, usb3.0 USB 接口速率选择 --usb_port usb3.0 -
--serial - 串口设备路径 指定串口路径 --serial /dev/ttyUSB0--serial COM10 -
--baudrate - 当前支持 115200921600 设置串口波特率 --baudrate 115200 -
--mcu_serial - 串口设备路径 MCU 调试串口(特殊设备用) --mcu_serial /dev/ttyACM1 -
--hsm_serial - 串口设备路径 HSM 安全模块串口 --hsm_serial /dev/ttyHS0 -

使用示例

  1. 设备烧录(串口 + USB Fastboot)

    xburn -V info -p X5 -l serial_usb -d fastboot -i S:\home\sxq\projects\sdk_x5_CS1.0\out\product --batch_num 1 --baudrate 921600 --serial COM6 --reboot
    
  2. 空板调试(串口 + USB xmodem_fastboot)

    xburn -V info -p X5 -l serial_usb -d xmodem_fastboot -i S:\home\sxq\projects\sdk_x5_CS1.0\out\product --batch_num 1 --baudrate 921600 --serial COM6 --reboot
    

    执行成功日志如下:

    Finished. Total time: 31.990s
    [Burn thread-1][18:44:37] [INFO] Step 'fastboot_burn' completed successfully
    
    [Burn thread-1][18:44:37] [PROGRESS] Board 1 burn progress 85.0%
    [Burn thread-1][18:44:37] [INFO] Start step: after_burn
    
    [Burn thread-1][18:44:37] [PROGRESS] Board 1 burn progress 86.0%
    [Burn thread-1][18:44:37] [INFO] After burn...
    [Burn thread-1][18:44:37] [INFO] Step 'after_burn' completed successfully
    
    [Burn thread-1][18:44:37] [PROGRESS] Board 1 burn progress 90.0%
    [Burn thread-1][18:44:37] [INFO] Start step: check_burn_result
    
    [Burn thread-1][18:44:37] [PROGRESS] Board 1 burn progress 91.0%
    [Burn thread-1][18:44:37] [ERROR] Write failed: Write timeout
    [Burn thread-1][18:44:37] [INFO] Reconnected successfully
    
    [Burn thread-1][18:44:37] [PROGRESS] Board 1 burn progress 100.0%
    [Burn thread-1][18:44:37] [INFO] Step 'check_burn_result' completed successfully
    
    [Burn thread-1][18:44:37] [PROGRESS] Board 1 burn progress 100.0%
    [Burn thread-1][18:44:37] [INFO] Board-1 [UID: 308064960e30c82402062d570000024] [Storage: emmc] Status:  SUCCESS
    
  3. 扫描可用串口

    xburn -s serial
    

    命令执行日志如下:

    PS C:\Users\xiangqing.shi> xburn -s serial
    Scanning for serial information...
    Detected serial devices:
    Device: COM6, Description: USB-SERIAL CH340 (COM6), HWID: USB VID:PID=1A86:7523 SER= LOCATION=1-2.3
    

2.5.5. 手动烧录工具介绍

2.5.5.1. 使用 fastboot 命令烧录镜像

前提条件:

  • 查阅 通过串口连接完成串口驱动安装。在 Windows 电脑设备管理器中,您可以看到对应的 COM 端口;在 Ubuntu 系统的 /dev 目录中,可以找到相应的 tty 串口设备。

  • 查阅 通过 USB 连接完成 USB 驱动安装。在 Windows 电脑上,通常设备管理器显示Android Bootloader Interface 设备。

适用范围:

烧录方式适用已经存在镜像能够正常启动开发板,不适用于没有镜像镜像损坏开发板。

提示:

  • 图形化xburn-gui 软件包集成 Fastboot 工具。 Windows 版本位于安装目录xburn-gui\tools\windows 目录中。

  • 在 Windows 系统中,可以fastboot 工具路径加入环境变量中。

开发板进入 U-Boot 命令行模式后,请执行 fastboot 0 命令使开发板进入 Fastboot 模式。

U-Boot 2022.10-gca2c6582a0 (Mar 13 2024 - 19:04:15 +0800)

Model: Horizon X5
... (省略) ...
Hobot>fastboot 0

接下来,您可以在 Windows 系统emmc_disk.simg 镜像所在目录打开 Windows Powershell 终端窗口,在镜像目录下 Shift 按键同时鼠标右键即可看到:

usb_fastboot_usPower_Shellage

然后在 Windows Powershell 终端窗口执行以下命令进行整体系统镜像烧录:

fastboot flash addr:0x0 emmc_disk.simg

烧写完成后,请在 Windows Powershell 终端窗口执行 fastboot reboot 命令重启设备,或者可以通过断电重启方式使升级生效。

整体烧录系统镜像过程图示如下所示:

usb_fastboot_usage

此外,您可以选择传统分区方式进行烧录。

烧录 uboot 分区

fastboot flash uboot uboot.img

烧录 boot 分区

fastboot flash boot boot.img

烧录 system 分区

fastboot flash system system.img

烧录 miniboot 分区

fastboot flash miniboot miniboot.img

注意: 烧录 miniboot 分区另外一种方式,需要 flash addr:0x0, 使用以下命令 :

fastboot flash addr:0x0 miniboot_all.img

miniboot_all.img 是包含 miniboot 分区及其之前所有镜像文件,具体包括 miniboot.img、分区表以及 misc 分区。若需同时更新 miniboot 和分区表,必须addr:0x0 开始进行写入,不能单独指定 miniboot 分区进行烧录。这一操作类似更新 emmc_disk.simg,因此确保写入格式正确性。

2.5.5.2. 使用 dfu 命令烧录镜像

前提条件:

  • 查阅 通过 USB 连接完成 USB 驱动安装。在 Windows 电脑上,通常设备管理器显示Android Bootloader Interface 设备。

  • 按照图形化工具 USB 下载模式接线方式进行接线。

适用范围:

  • 烧录方式主要适用没有镜像镜像损坏开发板。

  • 烧录方式用于已经存在镜像能够正常启动开发板。

Windows 下 dfu 命令烧录说明

Windows 下 dfu 命令详细使用方式可以参考使用 dfu 章节。

Ubuntu 下 dfu 命令烧录说明

  1. 前置条件 (udev 规则, plugdev 组)

    • 配置 udev 规则:将 51-drobotics-usb.rules(点击自动下载)文件拷贝到 /etc/udev/rules.d/ 目录中。

    • 激活规则:

      udevadm control --reload-rules
      udevadm trigger
      

      上述命令激活失败,可以尝试重启电脑。

    • 当前用户添加到 plugdev 组:

      sudo usermod -aG plugdev $(whoami)
      

      重新登录账户使用 groups 命令确认用户成功加入 plugdev 组。

  2. 常见命令 常用命令与 Windows 平台类似,使用 dfu-util 工具进行烧录。

2.5.5.3. 使用串口手动烧录镜像

前提条件:

  • 查阅 通过串口连接完成串口驱动安装。在 Windows 电脑设备管理器中,您可以看到对应的 COM 端口;在 Ubuntu 系统的 /dev 目录中,可以找到相应的 tty 串口设备。

  • 按照图形化工具 UART 下载模式接线方式进行接线。

  • 拨码开关单板,保持拨码开关处于默认启动方式EMMC 启动状态

  • 使用串口烧录镜像时,建议串口波特率调整为 921600bps (对于 X5 EVB 可以拨码开关的 D4 置 1)以提高烧录速度。

适用范围:

  • 烧录方式主要适用没有镜像镜像损坏开发板。

  • 烧录方式用于已经存在镜像能够正常启动开发板。

  • 如果通过图形化烧录工具进行固件升级失败,并且由于缺少日志信息难以准确定位问题,可以参考章节提供手动烧录方法。通过系统启动至 U-Boot 阶段,可以获取详细启动信息,帮助判断问题原因。

以下固件烧录详细步骤:

步骤1:

准备串口工具。 UART 下载模式需要使用 Xmodem 协议传输镜像,所以需要支持 Xmodem 的串口工具,推荐使用开源工具 WindTerm,该工具在 Windows 系统以及 Linux 系统中均运行,只下载对应软件包即可。

对于 Windows 系统下载 WindTerm_X.X.X_Windows_Portable_x86_64.zip,解压后,直接运行 WindTerm.exe 即可。

对于 Linux 系统下载 WindTerm_X.X.X_Linux_Portable_x86_64.zip,解压后,执行下面命令运行:

chmod +x ./WindTerm && ./WindTerm

步骤2:

设备串口电脑连接,务必确保设备处于 断电状态(未通电)。

步骤3:

使用 WindTerm 连接设备串口。在 WindTerm 界面依次点击菜单栏 Session -> New Session 创建串口窗口,并配置串口信息:

WindTerm_Serial_Config1

WindTerm_Serial_Config2

WindTerm_Serial_Xmodem

配置拖放文件协议为 Xmodem,并且推荐选择传输大小为 1024 以提高文件传输速度。

步骤4:

在 WindTerm 界面,依次点击菜单栏View -> Panes -> Sender 打开 Sender 窗口:

WindTerm_Sender

步骤5:

在 Sender 窗口中,输入 x2dbg 命令,并设置执行次数为 50 次,间隔时间为 0.01S:

WindTerm_Sender_cmd

步骤6:

点击 run(绿色三角形按钮)循环执行命令。

步骤7:

运行脚本后,立即开发板上电。上电后,设备进入串口下载模式,串口持续打印 C,并提示 Currently use xmodem to download file

WindTerm_Run

步骤8:

位于 BSP 编译out\product\uart_usb 目录bl2_uart_ddr.bin 固件文件拖拽当前串口窗口中,随后自动进行 Xmodem 文件传输:

WindTerm_Xmodem1

步骤9:

bl2_uart_ddr.bin完成成功运行后,串口日志如下所示。日志末尾提示 Download bl3x fip(bl3x_all.bin),此时需要继续使用 xmodem 传输固件。串口再次持续打印字符 C,等待一步操作。

 100% [====================] 00:00:10 704360 bytes
00 = 704512 Bytes
NOTICE:  Get S1PK
NOTICE:  [verify_signature] pass.
NOTICE:  [verify_hash] pass.
NOTICE:  [verify_hash] pass.
NOTICE:  [auth_decrypt] pass.
NOTICE:  BL1: BL2 memory layout address = 0x1fe9f000
NOTICE:  BL1: Booting BL2
NOTICE:                 OTP config:
NOTICE:                         otp exist: true
NOTICE:                         test region size: 304
NOTICE:                         secure region size: 120
NOTICE:                         none secure region size: 56
NOTICE:  BL2: v2.8(release):v1.0.8-72-g68feecd07
NOTICE:  BL2: Built : 15:17:38, Jan 16 2025
NOTICE:  Enter UART Mode..... 
NOTICE:  Enter media_source_select process(0).
NOTICE:  BL2 config file
NOTICE:  start to load bl2 cfg image
NOTICE:  BL2 CFG ADDR:0x1ff00000, MAGIC:0x474643324c424248
NOTICE:  bypass update efuse
NOTICE:  calibration_offset -22
NOTICE:  trimming_value 9
NOTICE:  ADC read channel[2]: 313mv
NOTICE:  ddr info:[LPDDR4]-[DUAL_RANK]-[ECC OFF]-[DVFS ON]-[4266M]
NOTICE:  JTAG ENABLE
NOTICE:  disable wdt
NOTICE:  Get S1PK
NOTICE:  [verify_signature] pass.
NOTICE:  [verify_hash] pass.
NOTICE:  [verify_signature] pass.
NOTICE:  start to load ddr image
NOTICE:  [verify_hash] pass.
NOTICE:  run ddr Fw
NOTICE:  matching profile: profile_2 from aon config
NOTICE:  type: LP4, freq: 4266, ecc: 0(0x7f), rank: 2, dvfs: 1, version: 9.03
NOTICE:  ddr cost: 146803 us, ddr size: 4 GB, manuid: 0x13
NOTICE:  ddr ready
NOTICE:  Download bl3x fip(bl3x_all.bin) to ddr: 0x84000000
NOTICE:  Currtenly use xmodem to download file
## Ready for (xmodem) download to 0x84000000
CCCCCCCCCCCCCCCCCCCC

步骤10:

步骤 8 一样,将位于 BSP 编译out\product\uart_usb 目录bl3x_all.bin 固件文件拖拽当前串口窗口中,随后自动进行 Xmodem 文件传输。该固件较大,如果波特率设置是 115200bps,传输速度比较慢,需要耐心等待传输完成。

WindTerm_Xmodem2

步骤11:

bl3x_all.bin 传输完成成功运行后,设备进入 U-Boot 命令行模式。在模式下,可以选择使用 fastboot 命令烧录固件,或手动使用 tftp 下载镜像进行烧录操作。

串口日志如下所示:

100% [====================] 00:00:32 2144940 bytes
00 = 2145280 Bytes
NOTICE:  Get S1PK
NOTICE:  [verify_signature] pass.
NOTICE:  [verify_hash] pass.
NOTICE:  [verify_signature] pass.
NOTICE:  start to load bl31 image
NOTICE:  [verify_hash] pass.
NOTICE:  Get S1PK
NOTICE:  [verify_signature] pass.
NOTICE:  [verify_hash] pass.
NOTICE:  [verify_signature] pass.
NOTICE:  start to load optee image
NOTICE:  [verify_hash] pass.
NOTICE:  [verify_hash] pass.
NOTICE:  start to load uboot image
NOTICE:  BL1: Booting BL31
NOTICE:  multicore_init: sec_entrypoint = 0x2000010c
NOTICE:  BL31: v2.8(release):v1.0.8-67-g40e41bd29
NOTICE:  BL31: Built : 10:40:46, Dec 31 2024
NOTICE:  plat_setup_psci_ops: sec_entrypoint = 0x2000010c
I/TC: 
I/TC: OP-TEE version: 6b9fbbe87 (gcc version 11.3.1 20220712 (Arm GNU Toolchain 11.3.Rel1)) #1 Thu Jan 16 06:59:55 UTC 2025 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
MBEDTLS_CORE  Select regular OTP
MBEDTLS_CORE  SRAM Pool Base: 0x80000000, size: 0x2000, alignment: 0x10
MBEDTLS_CORE   ACA driver init success!
MBEDTLS_CORE  set sw_init_done!
I/TC: Primary CPU switching to normal world boot


U-Boot 2022.10-gd5c668dae2 (Mar 14 2025 - 17:56:43 +0800)

Model: Horizon X5
DRAM:  3.9 GiB
console out start addr:0x0000000087ffc000, end addr:0x0000000087ffe000
horizon_lsio_pinctrl lsio_iomuxc@34180000: Initialized D-Robotics pinctrl driver
optee optee: OP-TEE: revision 3.20 (6b9fbbe8)
ADC calibration: -22
ADC trimming: 9
horizon_hsio_pinctrl hsio_iomuxc@35050000: Initialized D-Robotics pinctrl driver
horizon_dsp_pinctrl dsp_iomuxc@31040014: Initialized D-Robotics pinctrl driver
Core:  149 devices, 29 uclasses, devicetree: separate
WDT:   Started watchdog@34250000 with servicing (10s timeout)
stop watchdog
MMC:   sdio-host@35040000: 0, sdio-host@35020000: 1
Loading Environment from MMC... (Tuning Ok!) *** Warning - bad CRC, using default environment

In:    serial@32120000
Out:   serial@32120000
Err:   serial@32120000
Net:   
Warning: gmac-tsn@35010000 (eth0) using random MAC address - 36:64:fc:52:5e:1e
eth0: gmac-tsn@35010000
boot action: UART
Hobot>

确保按照上述步骤正确执行,以顺利完成固件烧录升级。

2.5.6. FAQ:常见错误对照表

2.5.6.1. 环境准备问题

问题: 检测烧录状态错误

报错信息

[Burn thread-1][11:46:37] [INFO] burn_flow.py:271 Please try enter UART download mode
[Burn thread-1][11:46:37] [INFO] serial_transport.py:746 Try entry UART download mode...
[Burn thread-1][11:46:37] [WARNING] serial_transport.py:748 [IMPORTANT] Please power on or reboot the Board! Wait 30 seconds...
[Burn thread-1][11:47:07] [WARNING] serial_transport.py:763 Entry UART download mode timed out after 30 seconds.
[Burn thread-1][11:47:07] [ERROR] burn_flow.py:273 Failed to enter UART download mode, Board state: UNKNOWN
[Burn thread-1][11:47:07] [ERROR] burn_executor.py:57 Step 'prepare_boot' failed
[Burn thread-1][11:47:07] [ERROR] xburn.py:91 Board-1, burn failed
[Burn thread-1][11:47:07] [ERROR] xburn.py:75 Board-1 [Storage: nand] Status: FAILED
Process terminated, exit code: 0

措施

  1. 工具提示 Please power on or reboot the Board! Wait 30 seconds… 时请重启开发板

  2. 建议操作顺序:先点击工具 开始升级,然后开发板上电

问题: 串口连接

报错信息

[MainThread][10:54:37] [ERROR] cli_utils.py:573 Serial port COM8 is NOT available
[MainThread][10:54:37] [ERROR] cli_utils.py:575 Reason:
Port COM8 not found.
Please check:
1. Is the device properly connected?
2. Is the correct port name used?
3. Available ports: python -m serial.tools.list_ports
[MainThread][10:54:37] [ERROR] xburn.py:368 Invalid configuration.
Process terminated, exit code: 1

措施

  1. 检查串口 USB 线是否连接

  2. 检查 USB 驱动是否安装

  3. 串口是否其他终端占用

  4. 返回界面刷新串口,并选择正确口号

问题: 镜像路径异常镜像存在

报错信息

[MainThread][10:58:00] [ERROR] cli_utils.py:427 Set storage type failed.
[MainThread][10:58:00] [ERROR] cli_utils.py:584 The img_files parameter validation failed. Exiting...
[MainThread][10:58:00] [ERROR] xburn.py:368 Invalid configuration.

措施

  1. 检查镜像路径是否正确,SDK默认烧录镜像路径out/product

  2. 检查指定镜像路径是否有所镜像文件

问题: 找不到 dfu 设备

报错信息

dfu-util 0.11
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
dfu-util: No DFU capable USB device available

措施

  1. 检查是否 usb2.0 dfu 启动模式

  2. 检查 USB 线连接状态

  3. 检查 USB 驱动是否安装

2.5.6.2. 固件类型错误

问题: Secure 芯片烧录 Non-Secure 固件

报错信息

[Burn thread-1][18:05:09] [INFO] uart_boot.py:66 load success
NOTICE: Get S1PK
NOTICE: [verify_signature] pass.
ERROR: Hash value not match.
ERROR: Failed to load extension FW ID 1
ERROR: horizon_dfu_dnl_fip failed
ERROR: Uart Preemption Download fip failed, ReDownLoad!!

措施

Secure 芯片烧录 Non-Secure 固件,将提示 hash 校验失败,关于 Secure 和 Non-Secure 固件编译参考 Non-secure 固件

问题: Non-Secure 芯片烧录 Secure 固件

报错信息

[Burn thread-1][17:54:58] [PROGRESS] burn_progress.py:21 Board 1 burn progress 15.5%
[Burn thread-1][17:54:58] [INFO] uart_boot.py:66 load success
00 = 708608 Bytes
NOTICE: BL1: BL2 memory layout address = 0x1fe9f000
NOTICE: BL1: Booting BL2
E[Burn thread-1][17:56:38] [ERROR] uart_boot.py:81 Uart xmodem download uart_usb/bl3x_all.bin failed
[Burn thread-1][17:56:38] [ERROR] burn_executor.py:57 Step 'xmodem_boot' failed
[Burn thread-1][17:56:38] [ERROR] xburn.py:91 Board-1, burn failed
[Burn thread-1][17:56:38] [ERROR] xburn.py:75 Board-1 [Storage: emmc] Status: FAILED
Process terminated, exit code: 0

措施

Non-Secure 芯片烧录 Secure 固件,将Booting BL2 阶段直到烧录超时,关于 Secure 和 Non-Secure 固件编译参考 Non-secure 固件

2.5.6.3. 烧录过程问题

问题: Xmodem 报错 “send error: expected ACK; got b’C’ for block 1”

报错信息

[Burn thread-1][2026-07-02 11:42:04,689] [PROGRESS] burn_progress.py:21 Board 1 burn progress 18.2%
[Burn thread-1][2026-07-02 11:42:04,689] [INFO] serial_transport.py:83 Transfer: 59.4% | Blocks: 940/1582
[Burn thread-1][2026-07-02 11:42:06,094] [ERROR] __init__.py:338 send error: expected ACK; got b'\x15' for block 1
[Burn thread-1][2026-07-02 11:42:06,107] [ERROR] __init__.py:338 send error: expected ACK; got b'\x15' for block 1
[Burn thread-1][2026-07-02 11:42:06,117] [ERROR] __init__.py:338 send error: expected ACK; got b'\x15' for block 1

措施

  1. 检查串口连接稳定性

  2. 调低串口波特率重试,对于 X5 EVB 开发板,可拨码开关 D4 置 0,将波特率到115200

  3. 如果客制化主板,并且使用外部串口模块,检查线束连接状态,地线是否连接

问题: 找不到 fastboot 设备

报错信息

[DeviceScannerThread][14:33:53] [INFO] usb_device_manager.py:246 Scan fastboot [21]round: timeout 3s
[DeviceScannerThread][14:33:53] [INFO] run_host_cmd.py:240 Executing 'tools/windows/fastboot.exe devices', waiting for 3 seconds for execution to finish...
[DeviceScannerThread][14:33:54] [INFO] usb_device_manager.py:246 Scan fastboot [22]round: timeout 3s
[DeviceScannerThread][14:33:54] [INFO] run_host_cmd.py:240 Executing 'tools/windows/fastboot.exe devices', waiting for 3 seconds for execution to finish...
[Burn thread-1][14:33:56] [WARNING] usb_transport.py:196 Wait for state Fastboot Mode timed out
[Burn thread-1][14:33:56] [ERROR] fastboot_burn.py:159 Not found usb2.0

措施

  1. 检查 USB 驱动是否安装

  2. 检查 USB 线连接状态

  3. Fastboot 设备启动需要依赖开发板 uboot,检查 uboot 是否正常启动