Jetson 启动流程全解析 —— 对比 NXP i.MX 系列的核心理解


📖 推荐博主书籍:《Yocto项目实战教程:高效定制嵌入式Linux系统
🎥 更多学习视频请关注 B 站:嵌入式Jerry


Jetson 启动流程全解析 —— 对比 NXP i.MX 系列的核心理解

嵌入式 SoC 的启动过程,是系统工程师必须掌握的基础知识。NVIDIA Jetson 系列(Orin、Xavier、Nano)和 NXP i.MX 系列(i.MX6、i.MX8、i.MX9)虽然在硬件架构上有差异,但它们的启动流程却体现了类似的理念:从硬件上电到操作系统内核运行,通过一系列 Boot 阶段完成初始化、安全验证和系统加载。

本文将系统讲解 Jetson 的启动流程,并与 NXP i.MX 系列进行对比,帮助读者抓住核心要点,形成整体理解。


在这里插入图片描述

1. 启动的本质

启动(Boot)就是 从硬件无序状态逐步初始化到软件可控状态 的过程。核心目标包括:

  • 初始化存储与内存
  • 配置时钟与电源
  • 建立安全信任链
  • 加载操作系统内核与根文件系统

无论是 Jetson 还是 i.MX,启动都分为多个阶段,每一阶段由不同的固件(ROM Code、Bootloader、UEFI/U-Boot)接力完成。


2. Jetson 冷启动流程

下图(简化)描述了 Jetson Orin 的冷启动序列:

[Power On]
   ↓
[Boot ROM (PSC ROM / Boot ROM)]
   ↓
[MB1 / PSC BL1] → 初始化 DRAM、时钟、电源
   ↓
[MB2] → 加载 Arm Trusted Firmware (ATF)、OP-TEE
   ↓
[UEFI] → 统一固件接口,提供标准化启动环境
   ↓
[Linux Kernel + DTB + RootFS]

核心要点:

  1. 多核协处理器参与:Jetson SoC 内含 BPMP、MCE、TSEC 等固件,分别负责电源管理、安全与图形安全。它们在启动时并行初始化。
  2. 安全机制:Jetson 支持 安全启动 (Secure Boot),确保固件与操作系统镜像未被篡改。
  3. UEFI 引入:在较新的 Jetson 平台,UEFI 取代了早期的 CBoot,成为标准的 CPU Boot Loader (CPUBL)。

3. NXP i.MX 系列的启动流程

i.MX 平台的冷启动通常如下:

[Power On]
   ↓
[Boot ROM] → 从启动介质(eMMC/SD/NAND/QSPI)加载镜像
   ↓
[First Stage Bootloader (SPL/U-Boot SPL)]
   ↓
[U-Boot] → 初始化设备、加载内核
   ↓
[Linux Kernel + DTB + RootFS]

核心要点:

  1. ROM Code 固化:i.MX SoC 内部的 ROM Code 决定了启动源和校验方式。
  2. Bootloader 以 U-Boot 为主:几乎所有 i.MX 平台都依赖 U-Boot,分为 SPL 和正式的 U-Boot 两阶段。
  3. 安全启动支持 HAB:i.MX 提供 High Assurance Boot (HAB),用于签名验证。

4. Jetson 的 UEFI 特性

UEFI (Unified Extensible Firmware Interface) 是一种 统一固件接口规范,在 Jetson 上取代了 CBoot。其主要特性:

  • 标准化操作系统加载:配合 SMBIOS、ACPI,可以加载标准 OS,无需操作系统做平台定制。
  • 安全启动:内置标准化的 Secure Boot 机制,支持第三方软件(OS、PCIe ROM)的认证。
  • 扩展支持:支持外部 PCIe 设备的 Option ROM,提供统一系统配置界面。
  • 固件升级:定义了统一的固件更新方法。

换句话说,UEFI 让 Jetson 的启动模式更加接近 PC 服务器平台 的通用模式,这与 NXP 仍大量使用 U-Boot 的方式不同。


5. Jetson 与 i.MX 启动流程对比

对比维度Jetson Orin 系列 (NVIDIA)i.MX8/9 系列 (NXP)
第一阶段PSC ROM / Boot ROMBoot ROM
二阶段 BootloaderMB1 / MB2SPL (U-Boot SPL)
主 BootloaderUEFI (取代 CBoot)U-Boot
安全机制Secure Boot + OP-TEEHAB (High Assurance Boot)
协处理器参与BPMP, MCE, TSEC 等较少,主要靠 CPU 执行
启动环境标准化 UEFI + ACPI/SMBIOS传统 U-Boot + Device Tree

6. 总结

  • Jetson 的启动链条更复杂,涉及多个协处理器固件,并逐步过渡到 UEFI,体现了类似 PC 服务器的启动逻辑。
  • i.MX 系列更传统,延续 U-Boot SPL → U-Boot → Linux 的路径,更接近嵌入式 SoC 的经典设计。
  • UEFI 的引入 让 Jetson 更加开放、标准化,适合加载通用 OS;而 i.MX 更强调灵活性与嵌入式场景的定制化。

整体理解:Jetson 的启动流程更偏向 “标准化 + 通用计算”,而 i.MX 更偏向 “嵌入式定制化”


📖 推荐博主书籍:《Yocto项目实战教程:高效定制嵌入式Linux系统
🎥 更多学习视频请关注 B 站:嵌入式Jerry


### TensorRT 在 i.MX 8M Plus 上的边缘部署 #### 背景介绍 TensorRT 是 NVIDIA 提供的一个高性能深度学习推理库,专为优化和加速神经网络模型而设计。尽管它最初针对的是 NVIDIA 的 GPU 平台(如 Jetson 系列),但在某些情况下也可以通过交叉编译的方式将其适配到其他硬件平台上运行[^1]。 对于 NXP 的 i.MX 8M Plus 设备而言,其内置了一个专用的人工智能处理单元 (NPU),能够显著提升机器学习工作负载的性能。然而,由于 TensorRT 主要依赖于 CUDA 和 cuDNN 技术栈,这些技术通常仅适用于 NVIDIA 自家的硬件架构,在 ARM Cortex-A 架构上的移植需要额外的努以及可能涉及第三方工具链的支持。 #### 部署流程概述 以下是基于现有技术和资源实现 TensorRT 在 i.MX 8M Plus 上进行边缘计部署的主要方法: 1. **环境准备** - 安装 Yocto Project 支持的操作系统镜像至目标板卡。 这一步骤可以通过下载官方发布的 BSP 层文件并按照文档指南完成定制化构建来达成目的。 2. **软件开发套件获取** - 下载适合 Linux on ARM 版本的 TensorRT SDK 源码包或者预编译二进制版本。 如果无法直接获得对应平台的目标产物,则需自行执行跨平台编译操作以生成兼容的共享库(.so 文件). 3. **模型转换与优化** 使用 Python API 或 C++ 接口加载训练好的框架模型(例如 TensorFlow/PyTorch), 经过序列化过程转化为 ONNX 格式的中间表示形式之后再导入到 TensorRT 中进一步精简结构尺寸同时提高预测速度效率. ```python import tensorrt as trt TRT_LOGGER = trt.Logger(trt.LogLevel.WARNING) def build_engine(onnx_file_path, engine_file_path): with trt.Builder(TRT_LOGGER) as builder,\ builder.create_network() as network,\ trt.OnnxParser(network, TRT_LOGGER) as parser: builder.max_workspace_size = common.GiB(1) builder.fp16_mode = True # Parse model file with open(onnx_file_path, 'rb') as model: if not parser.parse(model.read()): print ('Failed to parse the ONNX file') for error in range(parser.num_errors): print (parser.get_error(error)) return None last_layer = network.get_layer(network.num_layers - 1) # Mark output of the network network.mark_output(last_layer.get_output(0)) serialized_engine = builder.build_serialized_network() with open(engine_file_path, "wb") as f: f.write(serialized_engine) build_engine("model.onnx", "model.trt") ``` 4. **测试验证阶段** 编写简单的应用程序调用上述创建出来的引擎实例来进行前向传播运得出最终分类结果或其他业务逻辑所需的数值输出. 需要注意的是整个过程中可能会遇到各种挑战比如驱动程序缺失、特定子不被支持等问题都需要逐一排查解决才能顺利推进到最后成功上线的地步.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值