片内 BOOTROM → 板载 SPI NAND miniboot 分区(BL1+FIP 安全 Bootloader,内置 U-Boot)→ SD 卡 /boot Linux 镜像 → SD 卡 rootfs(系统 + 驱动 + AI 中间件 + 业务应用)

完整分层详解启动链路:片内 BOOTROM → SPI NAND miniboot → SD/boot 内核 → SD rootfs

整体逻辑总览

启动分为四大层级,介质完全隔离:芯片内置只读 ROM → 主板焊死 SPI NAND Flash → SD 卡启动分区 → SD 卡系统根分区;底层安全引导全部固化在板载 Flash,操作系统、业务程序完全存于 SD 卡,两者互不覆盖。

第一层:片内 BOOTROM(SoC 芯片内部固化,无外部存储参与)

  1. 存放载体 集成在旭日 5 ASIC 芯片内部的一次性可编程只读 ROM,出厂烧录、不可擦除、不可修改,不属于 SPI NAND/SD 卡任何外部存储。
  2. 上电执行时机 整机通电后第一个运行代码,无任何前置初始化。
  3. 唯一核心功能 硬件默认启动逻辑:初始化 SPI 控制器,读取板载 SPI NAND Flash miniboot 分区最起始位置的 BL1.bin,加载到芯片片内 SRAM(此时 DDR 内存未初始化,只能用片内极小内存运行)。
  4. 特点 无加密固件、无系统、无驱动,仅一段极简读取跳转逻辑;无论 SD 卡损坏、丢失,BOOTROM 都会正常执行。

第二层:板载 SPI NAND Flash miniboot 分区(BL1+FIP 完整安全 Bootloader,内置 U-Boot)

整块 128MB SPI NAND 焊死在主板,独立 MTD 分区命名miniboot,存放 ARM TF-A 全套安全启动固件,全程不依赖 SD 卡

2.1 内部存储结构

miniboot 分区内部分为 A/B 双备份槽(防升级变砖),每个槽固定两段二进制:

  1. BL1.bin(独立前置引导,不在 FIP 包内)
  2. fip.bin(FIP 固件镜像包,容器格式)

2.2 各固件作用与执行顺序

  1. BL1(一级安全引导) 由 BOOTROM 载入 SRAM 运行;初始化 SPI NAND、校验固件签名 / 哈希,读取同槽内 fip.bin 固件包。
  2. FIP 包内部封装 4 段固件,BL1 解析后依次加载
    • BL2:二级引导,核心任务初始化 LPDDR4 内存,把后续固件搬运至 DDR 运行;
    • BL31:ARM 可信监控固件 EL3,管理多核启动、电源复位、安全世界 / 普通世界切换;
    • BL32 OP-TEE:可信执行环境 TEE 安全操作系统,负责密钥、加密、安全外设访问;
    • BL33 U-Boot:主引导程序(链路末尾的 Bootloader),提供命令行、MMC/SD 卡扫描、内核加载逻辑。

2.3 本层整体特性

  1. 全链路安全校验:BL1、FIP 内所有固件均带签名,非法篡改无法启动;
  2. SD 卡失效兼容:SD 卡拔出 / 损坏时,本层完整跑完串口打印,最终进入 Fastboot 刷机模式;
  3. 升级隔离:烧录 SD 系统镜像不会修改 miniboot 分区固件,更新 BL1/U-Boot 必须单独刷 miniboot.img。

第三层:SD 卡 /boot Linux 镜像(SD 卡 FAT32 启动分区)

U-Boot 是本层入口,U-Boot 初始化 MMC 控制器后扫描 SD 卡,读取第一个 FAT32 分区 /boot,内容属于 Linux 启动前置资源,非完整系统:

  1. 核心 Linux 镜像:Image(标准内核)/Image-rt(实时内核,运动控制低延迟);
  2. 硬件设备树:devicetree.dtb,区分 X5 V1.0/V3.0 底板,描述 MIPI、CAN FD、40Pin IO、以太网等硬件资源;
  3. 启动脚本:boot.cmd 文本 + boot.scr(mkimage 打包 U-Boot 可识别二进制脚本),定义内核加载地址、启动参数 bootargs;
  4. 硬件固件:Wi-Fi / 蓝牙固件、MIPI ISP 图像处理固件。

执行动作

U-Boot 将内核、dtb 加载到 DDR 指定地址,传入硬件参数,跳转启动 Linux 内核,控制权移交操作系统。

第四层:SD 卡 rootfs(ext4 根文件系统系统 + 驱动 + AI 中间件 + 业务应用)

Linux 内核挂载 SD 卡第二大 ext4 分区作为系统根目录 /,整机运行环境全部在此,细分四大类内容:

  1. 基础 Ubuntu 22.04 系统 Linux 用户态基础环境:shell、ssh、网络工具、账号权限、系统服务、串口 / 磁盘运维工具(df、free、srpi-config、cansend 等)。
  2. 全硬件外设驱动 MIPI 多路相机、HDMI/DSI 显示、TCAN4550 CAN FD、40Pin I2C/SPI/UART/PWM/GPIO、千兆 PoE 网口、音频 Codec、Wi-Fi 蓝牙驱动。
  3. AI 机器人中间件栈
    • HBM Runtime BPU 推理 SDK:旭日 5 硬件加速算子、模型转换工具 hb_mapper、目标检测 / 分割 / 深度视觉 Demo;
    • TogetheROS.Bot (TROS):ROS2 Humble 机器人通信框架,多传感器融合、SLAM、底盘运动控制、可视化工具 rviz2。
  4. 业务应用程序 用户自研上层代码:AGV 底盘控制、人形机器人感知、视觉检测业务、自启动脚本、业务日志、训练 / 推理模型文件。

故障场景对应链路理解

SD 卡丢失 / 损坏时:前两层(BOOTROM + SPI NAND miniboot)完整执行,串口打印底层启动日志;U-Boot 扫描不到 SD 卡,无法进入第三、四层,直接进入 Fastboot 刷机等待状态。

关键介质隔离总结

  1. 底层安全引导(BL1/FIP/U-Boot):板载 SPI NAND,与 SD 卡物理隔离;
  2. Linux 内核、硬件设备树:SD 卡 boot 分区;
  3. Ubuntu 系统、驱动、AI 框架、业务程序:SD 卡 rootfs 分区。
Logo

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

更多推荐