[具身智能-574]:RDK X5 上电至 SD 卡检测前完整启动日志分层详解
·
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
- BOOTROM 是旭日 5 芯片内部固化的一级启动代码,版本 V4.1,出厂烧死无法修改(芯片厂家可以更新,板载厂家无法操作);
- OTP:芯片一次性可编程熔丝,存储设备安全密钥、校准参数、安全分区配置;
otp exist: true代表芯片安全密钥已烧录,为量产正常芯片; - 划分三段 OTP 空间:测试区、安全加密区、非安全区,用于签名校验、固件加密;
- 开启 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
- BL1 属于 TF-A 可信固件第一层,任务:初始化 SPI 总线、读取板载 SPI NAND Flash;
- SPI NAND 参数:页大小 2K,SPI 时钟 12MHz;
- Flash 芯片识别:厂商 ID
0xc8= 兆易创新 GD SPI NAND; - 日志
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
- BL2 编译日期 2025-06-11,为较新固件版本;
- 重新初始化 SPI NAND,提升 SPI 时钟至 12.5MHz;
- A/B 双备份固件槽位,当前使用 slot0 主固件分区;
- 加载 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
- DDR 规格:LPDDR4、双位宽、单颗 2GB 颗粒,组成总 8GB 内存、4266MHz 频率;
- ECC 内存校验关闭、动态调频 DVFS 开启(节能);
- 内存初始化耗时约 153ms,最终判定8GB 内存就绪,证明硬件是 RDK X5 V3.0(V1.0 原厂仅 4GB);
- 临时关闭硬件看门狗,防止初始化阶段误复位。
依次安全加载 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
- BL31 作用:管理 CPU 多核启动、PSCI 电源复位、安全世界 / 普通世界切换;
- 负责调度后续 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
- OP-TEE 是安全操作系统,运行在 CPU 安全核,负责密钥存储、加密算法、安全外设访问;
- 内置 Mbedtls 加密库,读取 OTP 密钥池,安全硬件 ACA 初始化成功;
- 初始化完成后,切换至普通世界,跳转 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
- U-Boot 版本 2022.10,内存识别 7.9Gi(硬件 8GB);
- 加载 SPI NAND 里的 ubootenv 环境变量分区,提示
bad CRC:环境变量分区校验出错,本次启动使用默认启动参数; - 串口控制台、千兆网 MAC 随机生成、看门狗初始化完成;
- 注册两路 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 秒未按空格,进入自动启动流程;
- 扫描 mmc0(SD 卡槽):
no card present→ 没有检测到 SD 卡; - 扫描 mmc1(预留 eMMC)同样无设备;
- 无任何启动存储介质,进入 Fastboot 刷机模式等待上位机烧录镜像。
七、完整时序总结(SD 卡介入边界)
- BOOTROM → BL1 → BL2 → DDR 初始化 → BL31 → OP-TEE 全部运行在板载 128MB SPI NAND Flash,全程不读取、不依赖 SD 卡; 完成芯片安全校验、内存初始化、底层固件加载。
- U-Boot 阶段 U-Boot 本身也存于 SPI NAND,硬件初始化完成后,才会主动扫描外部 MMC 设备(SD 卡 /eMMC); 日志卡在这一步:SD 卡缺失 / 接触不良,无法找到启动介质,无法加载 SD 卡内内核、dtb、Ubuntu 系统。
八、当前故障定位(结合日志)
- 底层全部固件正常:BOOTROM/BLx/ATF/OPTEE/U-Boot 校验、DDR 8GB 初始化无硬件损坏;
- 故障仅发生在 U-Boot 存储扫描环节:SD 卡未识别;
- 排查方向:SD 卡损坏、SD 卡未插紧、卡槽弹片接触不良、SD 镜像损坏、MMC 硬件通道故障。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)