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 SPI NAND-FLASH Mode......
NOTICE:   Nand PAGE_SIZE_2K
NOTICE:   Nand is_dummy = true
NOTICE:   Nand CLK_12M
NOTICE:  SPI baudrate is set to 12000000Hz
NOTICE:   Nand reset
NOTICE:  reg_status should = 0x18
NOTICE:  Invalid enable flash buffer mode
NOTICE:  Manufacturer ID 0xc8  Device ID 0x41c8
NOTICE:  Enter media_source_select process(5).
NOTICE:  SPI Nand flash set quad PASS
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-77-g72e4fe066
NOTICE:  BL2: Built : 20:15:32, Jun 11 2025
NOTICE:  Enter SPI NAND-FLASH Mode......
NOTICE:  dw_apb_ssi_params.apb_bus_freq: 100000000
NOTICE:  SPI baudrate is set to 12500000Hz
NOTICE:  Enter media_source_select process(5).
NOTICE:  BL2 config file
NOTICE:  ab slot is : 0
NOTICE:  fip index:0
NOTICE:  start to load bl2 cfg image
NOTICE:  BL2 CFG ADDR:0x1ff00000, MAGIC:0x474643324c424248
NOTICE:  bypass update efuse
NOTICE:  calibration_offset 7
NOTICE:  trimming_value 8
NOTICE:  ADC read channel[2]: 1110mv
NOTICE:  ddr info:[LPDDR4]-[DUAL_RANK]-[DIE: 2 GB]-[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_12 from aon config
NOTICE:  type: LP4, freq: 4266, ecc: 0(0x7f), rank: 2, dvfs: 1, die_dencity: 2 GB, version: 10.01
NOTICE:  ddr cost: 153622 us, ddr size: 8 GB, manuid: 0xff
NOTICE:  ddr ready
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-77-g72e4fe066
NOTICE:  BL31: Built : 20:12:37, Jun 11 2025
NOTICE:  plat_setup_psci_ops: sec_entrypoint = 0x2000010c
I/TC:
I/TC: OP-TEE version: aa2db5ff3 (gcc version 11.3.1 20220712 (Arm GNU Toolchain 11.3.Rel1)) #1 Mon Jun 16 11:51:26 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+ (Sep 03 2025 - 11:42:20 +0800)

Model: D-Robotics X5
DRAM:  7.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 (aa2db5ff)
ADC calibration: 7
ADC trimming: 8
horizon_hsio_pinctrl hsio_iomuxc@35050000: Initialized D-Robotics pinctrl driver
horizon_dsp_pinctrl dsp_iomuxc@31040014: Initialized D-Robotics pinctrl driver
Core:  137 devices, 24 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 UBI... dw_spi spi@35000000: max-frequency=50000000
spi-nand: spi_nand spi-flash@0: GigaDevice SPI NAND was found.
spi-nand: spi_nand spi-flash@0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 128
Read 196608 bytes from volume ubootenv to 000000008be71680
*** 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:c2:ee:ef:81:ad
eth0: gmac-tsn@35010000
Hit <SPACE> key to stop autoboot in  1s
MMC: no card present
SD Card not detected, entering Fastboot update mode
argv[1] 2
button no press,pass
eMMC or SD Card not detected on mmchost 0
MMC: no card present
eMMC or SD Card not detected on mmchost 1
MMC Device 2 not found
no mmc device at slot 2
eMMC or SD Card not detected on mmchost 2

整体启动链路:BOOTROM → BL1 → BL2 → DDR 初始化 → BL31(ATF 可信固件)→ OP-TEE 安全操作系统 → U-Boot以上全部运行在板载 SPI NAND Flash,完全不依赖 SD 卡

直到 U-Boot 阶段才开始扫描 SD 卡,日志末尾报错就是SD 卡未识别

一、第一阶段:ASIC BOOTROM(芯片内置一次性 ROM,硬件上电第一执行)

plaintext

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
  1. BOOTROM 是旭日 5 芯片内部固化一级启动代码,版本 V4.1,出厂烧死无法修改(芯片厂家可以更新,板载厂家无法操作);
  2. OTP:芯片一次性可编程熔丝,存储设备安全密钥、校准参数、安全分区配置;otp exist: true 代表芯片安全密钥已烧录,为量产正常芯片;
  3. 划分三段 OTP 空间:测试区、安全加密区、非安全区,用于签名校验、固件加密;
  4. 开启 MMU 内存管理单元,随后进入 ARM Trusted Firmware(ATF)安全启动链路。

二、第二阶段:BL1(一级安全引导,存 SPI NAND

plaintext

NOTICE:  BL1: v2.8(release):
NOTICE:  BL1: Built : 17:42:12, Oct 19 2023
NOTICE:  Enter SPI NAND-FLASH Mode......
NOTICE:   Nand PAGE_SIZE_2K
NOTICE:   Nand is_dummy = true
NOTICE:   Nand CLK_12M
NOTICE:  SPI baudrate is set to 12000000Hz
NOTICE:   Nand reset
NOTICE:  reg_status should = 0x18
NOTICE:  Invalid enable flash buffer mode
NOTICE:  Manufacturer ID 0xc8  Device ID 0x41c8
  1. BL1 属于 TF-A 可信固件第一层,任务:初始化 SPI 总线、读取板载 SPI NAND Flash;
  2. SPI NAND 参数:页大小 2K,SPI 时钟 12MHz;
  3. Flash 芯片识别:厂商 ID 0xc8 = 兆易创新 GD SPI NAND;
  4. 日志Invalid enable flash buffer mode为次要告警,不影响启动,仅缓存模式未开启。

安全校验环节(全链路加密防篡改)

plaintext

NOTICE:  Get S1PK
NOTICE:  [verify_signature] pass.
NOTICE:  [verify_hash] pass.
NOTICE:  [auth_decrypt] pass.
  • S1PK:芯片内置公钥,用于校验下层固件签名;
  • 三层校验全部通过:签名验证、哈希完整性校验、固件解密;
  • 校验通过才允许加载 BL2,防止固件被篡改、非法固件启动。

plaintext

NOTICE:  BL1: BL2 memory layout address = 0x1fe9f000
NOTICE:  BL1: Booting BL2

分配内存空间,跳转执行 BL2。

三、第三阶段:BL2(二级引导,硬件初始化核心)

plaintext

NOTICE:  BL2: v2.8(release):v1.0.8-77-g72e4fe066
NOTICE:  BL2: Built : 20:15:32, Jun 11 2025
NOTICE:  Enter SPI NAND-FLASH Mode......
NOTICE:  dw_apb_ssi_params.apb_bus_freq: 100000000
NOTICE:  SPI baudrate is set to 12500000Hz
NOTICE:  Enter media_source_select process(5).
NOTICE:  BL2 config file
NOTICE:  ab slot is : 0
NOTICE:  fip index:0
NOTICE:  start to load bl2 cfg image
  1. BL2 编译日期 2025-06-11,为较新固件版本;
  2. 重新初始化 SPI NAND,提升 SPI 时钟至 12.5MHz;
  3. A/B 双备份固件槽位,当前使用 slot0 主固件分区;
  4. 加载 BL2 配置镜像,读取芯片校准参数:

plaintext

NOTICE:  calibration_offset 7
NOTICE:  trimming_value 8
NOTICE:  ADC read channel[2]: 1110mv

读取电源 ADC 电压 1110mV,芯片电压采集正常。

关键:DDR 内存初始化(日志明确 8GB 内存,对应 X5 V3.0 底板)

plaintext

NOTICE:  ddr info:[LPDDR4]-[DUAL_RANK]-[DIE: 2 GB]-[ECC OFF]-[DVFS ON]-[4266M]
NOTICE:  JTAG ENABLE
NOTICE:  disable wdt
...
NOTICE:  ddr cost: 153622 us, ddr size: 8 GB, manuid: 0xff
NOTICE:  ddr ready
  1. DDR 规格:LPDDR4、双位宽、单颗 2GB 颗粒,组成总 8GB 内存、4266MHz 频率;
  2. ECC 内存校验关闭、动态调频 DVFS 开启(节能);
  3. 内存初始化耗时约 153ms,最终判定8GB 内存就绪,证明硬件是 RDK X5 V3.0(V1.0 原厂仅 4GB);
  4. 临时关闭硬件看门狗,防止初始化阶段误复位。

依次安全加载 BL31、OP-TEE、U-Boot 固件(全程签名校验)

plaintext

Get S1PK + verify_signature + verify_hash 全部pass
start to load ddr image → run ddr Fw
start to load bl31 image
start to load optee image
start to load uboot image

每一段固件都会重新验签,确保 SPI NAND 内所有底层固件未被篡改。

四、第四阶段:BL31(ATF 可信监控固件,ARM 标准安全世界调度器)

plaintext

NOTICE:  BL1: Booting BL31
NOTICE:  multicore_init: sec_entrypoint = 0x2000010c
NOTICE:  BL31: v2.8(release):v1.0.8-77-g72e4fe066
NOTICE:  BL31: Built : 20:12:37, Jun 11 2025
NOTICE:  plat_setup_psci_ops: sec_entrypoint = 0x2000010c
  1. BL31 作用:管理 CPU 多核启动、PSCI 电源复位、安全世界 / 普通世界切换;
  2. 负责调度后续 OP-TEE 安全系统与 U-Boot 普通世界。

五、第五阶段:OP-TEE 可信执行环境(TEE 安全操作系统)

plaintext

I/TC: OP-TEE version: aa2db5ff3 (gcc version 11.3.1 20220712 (Arm GNU Toolchain 11.3.Rel1)) #1 Mon Jun 16 11:51:26 UTC 2025 aarch64
I/TC: Primary CPU initializing
MBEDTLS_CORE  Select regular OTP
MBEDTLS_CORE  SRAM Pool Base: 0x80000000, size: 0x2000
MBEDTLS_CORE   ACA driver init success!
I/TC: Primary CPU switching to normal world boot
  1. OP-TEE 是安全操作系统,运行在 CPU 安全核,负责密钥存储、加密算法、安全外设访问;
  2. 内置 Mbedtls 加密库,读取 OTP 密钥池,安全硬件 ACA 初始化成功;
  3. 初始化完成后,切换至普通世界,跳转 U-Boot。

六、第六阶段:U-Boot 启动(首次尝试扫描 SD 卡,日志故障点)

1. U-Boot 基础硬件初始化(依旧不碰 SD 卡)

plaintext

U-Boot 2022.10+ (Sep 03 2025 - 11:42:20 +0800)
Model: D-Robotics X5
DRAM:  7.9 GiB
horizon_lsio_pinctrl / hsio / dsp 三组引脚控制器初始化
WDT: Started watchdog@34250000 with servicing (10s timeout)
MMC:   sdio-host@35040000: 0, sdio-host@35020000: 1
Loading Environment from UBI...
spi-nand: 128 MiB GD SPI NAND 正常识别
*** Warning - bad CRC, using default environment
  1. U-Boot 版本 2022.10,内存识别 7.9Gi(硬件 8GB);
  2. 加载 SPI NAND 里的 ubootenv 环境变量分区,提示bad CRC:环境变量分区校验出错,本次启动使用默认启动参数;
  3. 串口控制台、千兆网 MAC 随机生成、看门狗初始化完成;
  4. 注册两路 MMC 控制器:mmc0(SD 卡插槽)、mmc1(板载 eMMC 预留)。

2. 自动倒计时、扫描存储设备(故障核心日志)

plaintext

Hit <SPACE> key to stop autoboot in  1s
MMC: no card present
SD Card not detected, entering Fastboot update mode
eMMC or SD Card not detected on mmchost 0
MMC: no card present
eMMC or SD Card not detected on mmchost 1
MMC Device 2 not found
  1. 倒计时 1 秒未按空格,进入自动启动流程;
  2. 扫描 mmc0(SD 卡槽):no card present没有检测到 SD 卡
  3. 扫描 mmc1(预留 eMMC)同样无设备;
  4. 无任何启动存储介质,进入 Fastboot 刷机模式等待上位机烧录镜像。

七、完整时序总结(SD 卡介入边界)

  1. BOOTROM → BL1 → BL2 → DDR 初始化 → BL31 → OP-TEE 全部运行在板载 128MB SPI NAND Flash,全程不读取、不依赖 SD 卡; 完成芯片安全校验、内存初始化、底层固件加载。
  2. U-Boot 阶段 U-Boot 本身也存于 SPI NAND,硬件初始化完成后,才会主动扫描外部 MMC 设备(SD 卡 /eMMC); 日志卡在这一步:SD 卡缺失 / 接触不良,无法找到启动介质,无法加载 SD 卡内内核、dtb、Ubuntu 系统

八、当前故障定位(结合日志)

  1. 底层全部固件正常:BOOTROM/BLx/ATF/OPTEE/U-Boot 校验、DDR 8GB 初始化无硬件损坏;
  2. 故障仅发生在 U-Boot 存储扫描环节:SD 卡未识别;
  3. 排查方向:SD 卡损坏、SD 卡未插紧、卡槽弹片接触不良、SD 镜像损坏、MMC 硬件通道故障。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐