NVIDIA Jetson嵌入式开发板通用刷机教程

本文详细介绍了Jetpack与L4T的关系,阐述了Jetpack是NVIDIA为Jetson平台提供的软件集合,而L4T是运行在Jetson上的Linux操作系统。文章指导如何设置刷机环境,包括使用命令行进行刷机的步骤,以及如何判断和进入Recovery模式进行设备刷写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jetpack与L4T区别

Jetpack是NVIDIA 捆绑了所有的Jetson平台软件,包括TensorRT、cuDNN、cuda工具包、VPI、GStreamer和opencv。所有的这些都是建立在带有LTS Linux内核的Jetson Linux(L4T)之上的

通俗一点来讲,Jetpack是一个Jetson平台的软件栈,Linux_for_Tegra(L4T)是运行在Jetson 嵌入式平台上的Linux操作系统(主要是Ubuntu操作系统)

Jetpack SDK参考链接:https://developer.nvidia.com/embedded/jetpack
Linux_for_Tegra(L4T)参考链接:https://developer.nvidia.com/embedded/jetson-linux-r362
Jetpack版本与L4T版本是一一对应的,具体参考链接:https://developer.nvidia.com/embedded/jetpack-archive

前提条件

Jetson系统刷机,可使用NVIDIA 官方提供的SDKmanager软件,通过图形界面点击进行刷机。同时也可以使用命令行进行刷机。两种方式各有利弊;在此推荐使用命令行进行刷机操作,命令行刷机,除刷机之外,还可以进行Jetson系统备份等操作,同时也支持裁剪操作系统,修改启动logo等操作。更多内容,在后续文章中进行说明。

Jetson命令行刷机,建议使用X86架构,装有Ubuntu系统主机进行操作,支持Ubuntu16.04、Ubuntu18.04、Ubuntu20.04以及Ubuntu22.04。需要注意的是,不同的Jetson Linux(L4T)系统,对应着不同的Ubuntu系统版本,例如:*L4T 32.5 - L4T 32.7.的版本,对应了Ubuntu18.04的系统,如果使用主机为Ubuntu16.04或者Ubuntu22.04的系统去刷机,刷完系统可能会存在问题。

所以,在根据CUDA或者其他的Jetpack软件选择好对应的L4T版本过后,最好选择与之对应的Ubuntu系统主机进行操作。例如L4T 36.2对应Ubuntu22.04的系统,最好选择装有Ubuntu22.04的X86架构的主机进行刷机操作。

搭建刷机环境

点击此链接,选择想要使用的L4T 版本,如下图,本文章以L4T 36.2版本为例说明
在这里插入图片描述
点击进去过后,可以看到具体的版本描述,这里不做过多的赘述。进入过后,在页面中找到如下图所示的位置,并将图示的Jetson Linux发行包和示例根文件系统包下载到前提条件的主机环境中。
在这里插入图片描述
除了页面点击下载,也可以邮件上图红框位置,再复制下载链接,到终端命令行使用wget命令获取。使用wget命令获取软件包时,因下载链接可能存在差异,故软件包名可能有所不同,目前已知32.7.x版本,使用wget命令获取时,Jetson Linux发行包和示例根文件系统包的文件名格式存在差异,需要重命名为<filename_name>.tbz2的文件格式,才可解压。也可以直接是在网页点击下载。

# 环境变量说明:
# ${L4T_RELEASE_PACKAGE} 是Jetson Linux发行包的文件名,常见形式为: Jetson_Linux_<version>_aarch64.tbz2
# ${SAMPLE_FS_PACKAGE} 是Jetson Linux 示例根文件系统包的文件名,常见形式为:Tegra_Linux_Sample-Root-Filesystem_<version>_aarch64.tbz2
# 例如 L4T 36.2版本
# 		发行包文件名为:Jetson_Linux_R36.2.0_aarch64.tbz2
# 		示例根文件系统包文件名为:Tegra_Linux_Sample-Root-Filesystem_R36.2.0_aarch64.tbz2
# 使用wget命令获取L4T 36.2版本时,
#		发行包文件名为:jetson_linux_r36.2.0_aarch64.tbz2 
#		示例根文件系统包文件名为:tegra_linux_sample-root-filesystem_r36.2.0_aarch64.tbz2
mkdir -p flash/${l4t_version}	# ${l4t_version}是您下载的对应的L4T版本,例如L4T 36.2版本,则表示mkdir -p flash/36.2 
cp ${download_path}/${L4T_RELEASE_PACKAGE} flash/${l4t_version}	# ${download_path}为下载的发行包和示例文件系统包的存放路径;
cp ${download_path}/${SAMPLE_FS_PACKAGE} flash/${l4t_version}
# 执行上述三个步骤的目的是为了确保 ${L4T_RELEASE_PACKAGE} 和 ${SAMPLE_FS_PACKAGE} 在同一绝对路径下。
tar -xf ${L4T_RELEASE_PACKAGE}
sudo tar -xpf ${SAMPLE_FS_PACKAGE} -C Linux_for_Tegra/rootfs/
cd Linux_for_Tegra/
sudo ./tools/l4t_flash_prerequisites.sh	#执行这一步时,请确保主机的apt软件源是Ubuntu系统默认的软件源。
sudo ./apply_binaries.sh

上述每个步骤执行顺序不可替换,依次执行成功过后,系统会出现如下提示,表示Jetson系统刷机环境搭建成功。

L4T BSP package installation completed!
Disabling NetworkManager-wait-online.service
Disable the ondemand service by changing the runlevels to ‘K’
Success!

刷机说明

Recovery模式

刷机首先使用使用Micro USB 或者USB Type C 转USB Type A的线缆,将Jetson设备与X86的Ubuntu主机相连接,然后需要使Jetson设备进入到Recovery模式,一般情况下,是通过短接Recovery引脚和GND引脚进入,或者通过按住Recovery按键,然后再上电,上电3-4秒后松开Recovery按键。如果不是上电自启动的设备,则是通电过后,先按住Recovery按键,然后再按下开机按键,设备上电指示灯亮3-4秒后松开按键即可。具体以Jetson设备厂家说明为准。

另外,可以正常进入系统设备,也可以通过命令,使Jetson设备进入到Recovery模式,命令如下:

$ sudo reboot --force --forced-recovery

判断设备是否进入Recovery

1、进入Recovery模式过后,Jetson设备调试串口不在持续输出信息,同时HDMI(或DP)显示接口无显示。
2、在主机端执行lsusb,能够看到NVIDIA Corp 或者NVIDIA Corp. APX的设备。

plink@plink-Vostro-3681:~/flash/35.3.1/test/Linux_for_Tegra$ lsusb
Bus 002 Device 004: ID 05e3:0749 Genesys Logic, Inc. SD Card Reader and Writer
Bus 002 Device 032: ID 05e3:0749 Genesys Logic, Inc. SD Card Reader and Writer
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 068: ID 0955:7e19 NVIDIA Corp. APX
Bus 001 Device 002: ID 8087:0a2a Intel Corp. Bluetooth wireless interface
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

也可以点击此链接,参考官方说明,判断设备是否进入Recovery模式。

刷机

确定设备进入Recovery模式过后,即可为Jetson设备刷写系统,这里列出常用的刷机命令:

# Jetson Orin Nano Developer Kit(NVME)
# Jetson Orin NX Module
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

# Jetson Orin Nano Developer Kit(USB)
# Jetson Orin NX Module
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device sda1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

# Jetson Orin Nano Developer Kit(SD Card)
# Jetson Orin NX Module
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk0p1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

# Jetson AGX Orin Developer Kit
# L4T 36.2 版本刷机命令如下:
$ sudo ./flash.sh jetson-agx-orin-devkit internal
# L4T 35.x和L4T 34.x版本刷机命令如下:
$ sudo ./flash.sh jetson-agx-orin-devkit mmcblk0p1

# Jetson AGX Orin Industrial Module
# L4T 36.2 版本刷机命令如下:
$ sudo ./flash.sh jetson-agx-orin-devkit-industrial internal
# L4T 35.x 版本刷机命令如下:
$ sudo ./flash.sh jetson-agx-orin-devkit-industrial mmcblk0p1

# Jetson AGX Xavier Module
$ sudo ./flash.sh jetson-xavier mmcblk0p1

#Jetson AGX Xavier Industrial Module
$ sudo ./flash.sh jetson-agx-xavier-industrial mmcblk0p1

# Jetson Xavier NX Developer Kit
$ sudo ./flash.sh jetson-xavier-nx-devkit mmcblk0p1

# Jetson Xavier NX Module
$ sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1

# Jetson Nano Developer Kit 
$ sudo ./flash.sh jetson-nano-devkit mmcblk0p1

# Jetson Nano Module
$ sudo ./flash.sh jetson-nano-devkit-emmc mmcblk0p1

# Jetson TX2 NX Module
$ sudo ./flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk0p1

# Jetson TX2 8GB Module
$ sudo ./flash.sh jetson-tx2 mmcblk0p1

# Jetson TX2i Module
$ sudo ./flash.sh jetson-tx2i mmcblk0p1

出现以下信息表示系统刷机成功。

[ 511.6865 ] Coldbooting the device
[ 511.6892 ] tegrarcm_v2 --ismb2
[ 511.6943 ] tegradevflash_v2 --reboot coldboot
[ 511.6946 ] Bootloader version 01.00.0000
*** The target t186ref has been flashed successfully. ***
Reset the board to boot from internal eMMC.
或者
[ 358]: l4t_flash_from_kernel: Successfully flash the external device
[ 358]: l4t_flash_from_kernel: Flashing success
[ 358]: l4t_flash_from_kernel: The device size indicated in the partition layout xml is smaller than the actual size. This utility will try to fix the GPT.
Flash is successful
Reboot device
Cleaning up…
Log is saved to Linux_for_Tegra/initrdlog/flash_1-3_0_20240423-152758.log

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsjldnh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值