Jetson Bootloader 全面深入解析

开源AI·十一月创作之星挑战赛 10w+人浏览 727人参与


📺 本课B站视频讲解(Bilibili)https://www.bilibili.com/video/BV1k1C9BYEAB/

📘 《Yocto项目实战教程》京东购买链接Yocto项目实战教程



在这里插入图片描述

1. Jetson Bootloader 的整体脉络(表格总览)

Jetson Bootloader 是一条“固件链”,而不是一个 Bootloader 程序。与其他 SoC 完全不同。

1.1 启动链总览表

阶段位置可否修改主要职责错误表现
BootROMSoC 内部不可修改读取 BCT、加载 MB1、Secure Boot 验证黑屏、只进入 RCM、串口无输出
MB1QSPI/Boot 媒体不可修改(可调 BCT)PMIC、DDR、Pinmux、UPHY、时钟、安全环境上电断电、DDRx 失败、外设不亮
MB2QSPI/Boot 媒体不可修改(可调 BCT)固件加载、GPIO 中断、Boot 参数准备UEFI 进入失败、摄像头/USB 功能异常
UEFI/CBootQSPI/分区可修改Boot Order、DTB 合并、A/B、Capsule、加载 Kernel启动目标异常、DTB 错误、无法 OTA

2. Jetson 启动链(增强型流程图)

┌──────────────────────────────────┐
│            BootROM              │
│ - 读取 FUSE                     │
│ - 加载 BR-BCT                   │
│ - 加载并验证 MB1                │
└──────────────┬──────────────────┘
               │
┌──────────────▼──────────────────┐
│               MB1               │
│ - PMIC/上电rail                 │
│ - DDR 初始化+Training            │
│ - Pinmux + Pad Voltage          │
│ - UPHY Lane / 时钟树            │
│ - 安全环境 Secure Boot           │
└──────────────┬──────────────────┘
               │
┌──────────────▼──────────────────┐
│               MB2               │
│ - 加载 BPMP/RCE/XUSB FW          │
│ - 中断映射 GPIO→IRQ              │
│ - Carveout 参数传递               │
│ - Boot 参数准备                  │
└──────────────┬──────────────────┘
               │
┌──────────────▼──────────────────┐
│             UEFI / CBoot        │
│ - Boot Order / Boot Mode        │
│ - DTB 合并与 Overlay             │
│ - 加载 Kernel + initrd          │
│ - A/B Slot 管理                 │
│ - Capsule Update                │
└──────────────────────────────────┘

3. BCT(Boot Configuration Table)结构总览

3.1 BCT 分类表

BCT 名称由谁使用作用范围含关键字段错误表现
BR-BCTBootROM启动设备、电气时序QSPI/UFS/SD 参数无法加载 MB1 → 黑屏
MB1-BCTMB1Pinmux、PMIC、UPHY、时钟树Rail、Pad、电压、电源时序、Lane 配置上电断电、PCIE 不亮、串口无输出
Mem-BCTMB1DDR 配置+ECC+CarveoutSDRAM、ECC、CarveoutDDR 错误、ISP 摄像头不可用
MB2-BCTMB2中断映射、固件加载、安全控制GPIO→IRQ、FW 区布局USB、摄像头等初始化失败

4. 启动链各阶段详细解析(大量表格 + 图示)

4.1 BootROM

功能说明
Fuse 读取根据 SoC 烧录决定启动模式
读取 BR-BCT决定启动介质、时序、访问参数
验证 MB1Secure Boot 的第一环
失败进入 RCM可通过 USB 重新刷机

流程图:

BootROM → 读取 Fuse → 读取 BR-BCT → 访问存储 → 加载 MB1 →(失败)→ 进入 RCM

4.2 MB1(Bootloader 中最关键、最复杂)

4.2.1 MB1 初始化内容表格

项目在 MB1 中作用风险
PMIC Rail系统上电顺序、电压配错=上电断电
DDR Training内存初始化配错=完全不启动
Pinmux各 IO 功能定义错误=系统无外设
Pad VoltageIO 电压域错误可能损坏外设
UPHY LanePCIE/USB/ SATA 方向错误=PCIE 不亮
Clock + PLL核心时钟树错误造成外设失败
Security 初始化TrustZone / Keyslot影响 Secure Boot

4.2.2 DDR Training 流程图

DDR 参数加载
   → ZQ 校准
   → Read Leveling
   → Write Leveling
   → ECC 初始化(可选)
   → DRAM 频率切换
   → 成功 → 进入 MB2
   → 失败 → 重启/卡死

4.3 MB2

功能说明
加载 BPMP FW管理时钟、电源的核心固件
加载 RCE FW摄像头 ISP 使用此固件
加载 XUSB FWUSB 控制器初始化
GPIO → IRQ 映射决定 GPIO 对应中断号
Boot 参数准备传递给 UEFI

MB2 作用关系图

MB1(底层硬件)
       → MB2(固件加载 + 中断 + Boot 参数)
              → UEFI(系统 Boot 管理)

4.4 UEFI / CBoot

4.4.1 UEFI 功能总表

功能内容
Boot OrderNVMe → UFS → eMMC → SD → 网络
Boot ModeNormal / Recovery / Fastboot
UEFI VariablesOSIndications、BootNext
DTB 合并SoC DTB + Carrier Board DTB + overlay
A/B Slot 管理自动切换失败 slot
Capsule UpdateOTA Bootloader 更新
Logo / Shell可定制 logo、禁用 shell、菜单密码

4.4.2 DTB 合并流程图

基础 SoC DTB
     + Carrier Board DTB
     + overlay(摄像头、扩展板)
     → UEFI 合并处理
     → 生成最终 DTB → 传给 Kernel

5. Jetson 与其他 SoC 的 Bootloader 差异(表格强化版)

5.1 架构差异表

功能项Jetsoni.MX / RK
DDR 初始化MB1TF-A / SPL
PinmuxMB1DTS / U-Boot
PMICMB1Kernel/UBoot
UPHY LaneMB1DTS
Bootloader多阶段(ROM→MB1→MB2→UEFI)ROM→U-Boot
OTA官方 A/B + Capsule自研为主

5.2 开发复杂度对比

项目Jetsoni.MXRK
Bootloader 可修改性★★★★★★★★★★★★
启动链复杂度★★★★★★★★★★
OTA 难度★★(官方完善)★★★★★★★★★★
板级定制难度★★★★★★★★★★

6. Bootloader 中最难的部分(表格 + 调试策略)

6.1 难点总表

难点典型表现根因调试方式
PMIC rail 配错上电瞬断电压/时序错误示波器测波形,对照 devkit
DDR 配置错误无串口时序/频率错误对照官方 BCT、降低频率测试
UPHY Lane 配错PCIE link downLane 方向不一致查看 UPHY 表,对照 SKU
Pinmux 错误外设无反应功能 or 电压域错误查看 MB1 pinmux log
UEFI DTB 合并异常Kernel 看到的硬件不对overlay 冲突dtc -I fs 对比
A/B 失败slot 切换异常metadata 错误nvbootctrl 查看

7. OTA:A/B Slot + BUP + Capsule(流程图强化)

7.1 A/B Slot 切换流程图

UEFI 启动 Slot A
    │
    ├─ Kernel 正常启动 → 标记成功 → 保持 A
    │
    └─ Kernel 启动失败 → 增加失败计数
             → 达到阈值 → 切换 Slot B

7.2 BUP 更新流程图

构建 BUP
    → 分发到设备
    → 写入另一 Slot
    → 设置 BootNext
    → 重启
    → 验证新 Slot
    → 成功则激活

7.3 Capsule Update 流程图

生成 capsule
   → 复制到 ESP
   → 设置 OSIndications
   → 重启
   → UEFI 解析 capsule
   → 刷写 bootloader
   → 清理 capsule

8. 开发者实战工作流(表格 + 步骤)

8.1 工作流总表

阶段工作重点工具
分析启动链/硬件特性NVIDIA 文档、DevKit BCT
定制PMIC/Pinmux/Lane/DDRMB1-BCT/Mem-BCT 调整
验证tegraflash 测试串口 log、波形仪
系统集成UEFI Boot/DTBextlinux.conf、overlay
OTABUP/Capsule/A/Bnvbootctrl、fwupdtool

9. 总结(表格化精炼)

重点说明
Jetson Bootloader 是“固件链”BootROM→MB1→MB2→UEFI
MB1 最关键DDR/Pinmux/PMIC/UPHY 全在此
BCT 是核心配置越精确,板子越稳定
OTA 体系强大A/B + BUP + Capsule 完全企业级
调试难度高必须依赖串口 log + 波形 + BCT 对照


📺 本课B站视频讲解(Bilibili)https://www.bilibili.com/video/BV1k1C9BYEAB/

📘 《Yocto项目实战教程》京东购买链接Yocto项目实战教程


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值