一、下载刷机包
https://developer.nvidia.com/embedded/jetson-linux-archive
选择需要的版本,下载这两个包
|---|---|
| Driver Package (BSP) ||
| Sample Root Filesystem ||
二、解压缩刷机包
官方文档:https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/IN/QuickStart.html
bash
tar xf ${L4T_RELEASE_PACKAGE}
cd Linux_for_Tegra/rootfs/
sudo tar xpf ../../${SAMPLE_FS_PACKAGE}
cd ..
sudo ./apply_binaries.sh
这里 {L4T_RELEASE_PACKAGE}是BSP包的路径,{SAMPLE_FS_PACKAGE}是sample root filesystem路径。
三、刷机
将Jetson用usb口连接在电脑上,按抓recover按钮的同时,重启Jetson,这样Jetson就会进入Recover模式。
执行:
bash
sudo ./flash.sh ${BOARD} mmcblk0p1
这里${BOARD}选项:
| Module | Module type * | Carrier board | Configuration | Configuration notes |
|---|---|---|---|---|
| Jetson AGX Orin 32 GB (P3701-0000) | Development | Jetson AGX Orin reference carrier board (P3737-0000) | jetson-agx-orin-devkit |
Flashes QSPI-NOR and eMMC |
| Jetson Xavier NX (P3668-0000) | Development | Jetson Xavier NX reference carrier board (P3509-0000) | jetson-xavier-nx-devkit |
Flashes QSPI-NOR and microSD Card |
| Jetson Xavier NX 8 GB-DRAM (P3668-0001) & 16 GB-DRAM (P3668-0003) | Production | Jetson Xavier NX reference carrier board (P3509-0000) | jetson-xavier-nx-devkit-emmc |
Flashes QSPI-NOR and eMMC |
| Jetson AGX Xavier 16 GB-DRAM (P2888-0001), 32 GB-DRAM (P2888-0003), & 64 GB-DRAM (P2888-0005) | Development & production | Jetson AGX Xavier reference carrier board (P2822-0000) | jetson-agx-xavier-devkit |
Flashes internal eMMC |
| Jetson AGX Xavier Industrial (P2888-0008) | Production | Jetson AGX Xavier reference carrier board (P2822-0000) | jetson-agx-xavier-industrial |
Flashes eMMC |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | * |
注意:在刷机过程中可能会遇到 bootloader/tergrasign_v3.py的相关报错,原因是刷机包中的python脚本是用python2写的,我们电脑上可能用的是python3。修改bootloader/tergrasign_v3_util.py文件如下(注释掉原来的write_file函数):
python
'''
Write data to given file handle
'''
#def write_file(file_handle, data):
# try:
# if isinstance(data, str):
# file_handle.write(data.encode('utf-8'))
# else:
# file_handle.write(data)
# except IOError:
# info_print("Cannot write %s \n" %(file_name))
def write_file(file_handle, data):
# Handle different data types
if isinstance(data, bytearray):
# Bytearray - convert to bytes or string as needed
if hasattr(file_handle, 'mode') and 'b' in file_handle.mode:
file_handle.write(bytes(data))
else:
file_handle.write(data.decode('utf-8', errors='ignore'))
elif isinstance(data, bytes):
# Bytes object
if hasattr(file_handle, 'mode') and 'b' in file_handle.mode:
file_handle.write(data)
else:
file_handle.write(data.decode('utf-8', errors='ignore'))
elif isinstance(data, str):
# String object
if hasattr(file_handle, 'mode') and 'b' in file_handle.mode:
file_handle.write(data.encode('utf-8'))
else:
file_handle.write(data)
else:
# Try to convert to string as fallback
file_handle.write(str(data))
再执行
bash
sudo ./flash.sh ${BOARD} mmcblk0p1
等待烧录结束,重启,刷机完成。