📖 推荐博主书籍:《Yocto项目实战教程:高效定制嵌入式Linux系统》
🎥 更多学习视频请关注 B 站:嵌入式Jerry
Yocto meta-tegra 与 Jetson Machine Config 全解
NVIDIA Jetson 系列(AGX Orin、Orin NX、Orin Nano 等)是边缘 AI 和嵌入式开发的重要平台。使用 Yocto 构建定制化 Linux 系统时,meta-tegra 层为 Jetson 提供了 BSP 支持。在实际开发中,最核心的就是 选择正确的 MACHINE 配置 并结合存储方式(eMMC、NVMe、SD)来构建和刷机。本博文将系统总结这一过程,帮助你快速入门并避免常见陷阱。

一、meta-tegra 层的作用
meta-tegra 是 NVIDIA Jetson 平台的 Yocto BSP 层,定义了:
- MACHINE 配置(不同 Jetson 模块/开发板型号)。
- 内核、Bootloader、设备树(DTB/DTBO) 的构建规则。
- 刷机脚本与分区布局(flash.sh、flash_t234_qspi_*.xml)。
- 存储支持:eMMC、NVMe SSD、microSD 等。
只有使用正确的 MACHINE 配置,Yocto 才能输出与实际硬件匹配的镜像和刷机工具。
二、Jetson 模块与 MACHINE 的关系
Jetson 模块硬件用 Part Number + SKU 标识,例如 P3701-0005:
- 前半部分:平台型号(AGX Orin 是 P3701,Orin NX/Nano 是 P3767)。
- 后半部分 SKU:具体变体(内存大小、eMMC 容量、是否工业级)。
meta-tegra/conf/machine/ 中的 MACHINE 文件命名方式通常有两类:
-
简写型:
jetson-agx-orin-devkit.conf→ 对应 AGX Orin 开发套件(P3701-0000)。jetson-orin-nano-devkit-nvme.conf→ Orin Nano Devkit,rootfs 在 NVMe。
-
精确型(推荐):
p3737-0000-p3701-0005.conf→ Carrier Board P3737-0000 + Module P3701-0005(AGX Orin 64GB)。p3768-0000-p3767-0003.conf→ Orin Nano Devkit (8GB)。
⚠️ 使用精确型 MACHINE 最可靠,因为会直接匹配你的实际模块/载板 SKU,避免刷机时报 “expected 0000 / actual 0005” 的错误。
三、如何选择 MACHINE
-
确认模块 SKU
-
在 bootloader 目录运行:
sudo ./chkbdinfo -f ../cvm.bin.* -
输出中会包含
P3701-0005或P3767-0003等信息。
-
-
对应 MACHINE
P3701-0000 + P3737-0000→jetson-agx-orin-devkitP3701-0005 + P3737-0000→p3737-0000-p3701-0005P3767-0003 + P3768-0000→p3768-0000-p3767-0003P3767-0004→p3768-0000-p3767-0004
-
选择 rootfs 存储介质
-
eMMC → 默认 MACHINE(如
jetson-agx-orin-devkit)。 -
NVMe → 选择带
-nvme的 MACHINE,或在local.conf里指定:PARTITION_LAYOUT_TEMPLATE_DEFAULT = "flash_t234_qspi_nvme.xml" ROOTFSPART = "nvme0n1p1" -
microSD → 修改分区模板为
flash_t234_qspi_sdmmc.xml。
-
四、构建与烧录流程
-
配置 MACHINE
在build/conf/local.conf中设置:MACHINE = "p3737-0000-p3701-0005" # 按实际替换 KERNEL_IMAGETYPE = "Image" -
构建镜像
bitbake core-image-sato # 或其他目标镜像 -
进入刷机目录
cd tmp/deploy/images/${MACHINE}/bootloader -
进入恢复模式
- 按住 Recovery 键,上电 →
lsusb中出现0955:7023 NVIDIA Corp. APX。
- 按住 Recovery 键,上电 →
-
执行刷机
-
刷 eMMC:
sudo ./flash.sh ${MACHINE} mmcblk0p1 -
刷 NVMe:
sudo ./flash.sh ${MACHINE} nvme0n1p1
-
五、核心知识点总结
- MACHINE 选择必须匹配实际硬件 SKU,否则刷机会被安全校验拒绝。
- SPI NOR Flash 存放 Bootloader,eMMC/NVMe/SD 存放 rootfs,两者都要正确烧录。
- flash_t234_qspi_*.xml 决定了分区布局和 rootfs 存储介质。
- 推荐使用 精确型 MACHINE 名称(如
p3737-0000-p3701-0005)来避免混淆。
六、类比帮助理解
可以把 Jetson 的启动链路类比成 PC:
- SPI NOR Flash = BIOS/UEFI 芯片,存放启动固件。
- SSD (NVMe) = 系统盘,存放操作系统。
先刷 BIOS(SPI),才能识别硬盘(SSD),最后从 SSD 启动系统。
七、结语
使用 Yocto 构建 Jetson 镜像的关键在于:
- 识别模块 SKU → 选对 MACHINE。
- 确认 rootfs 存储介质 → 配置对应分区模板。
- 使用 meta-tegra 提供的 flash 工具正确烧录 SPI + 系统存储。
掌握这三点,你就能顺利在 Jetson 平台上构建并运行高度定制的 Linux 系统。
📖 推荐博主书籍:《Yocto项目实战教程:高效定制嵌入式Linux系统》
🎥 更多学习视频请关注 B 站:嵌入式Jerry
1452

被折叠的 条评论
为什么被折叠?



