AGX orin在OTA的时候升级失败

我在下载bsp文件后按照手册指示的进行解压
tar xpf jetson_linux_<版本>_aarch64.tbz2

sudo tar xpf tegra_linux_sample-root-filesystem_<版本>_aarch64.tbz2 -C l4t/rootfs/

sudo ./apply_binaries.sh
然后在该bsp的目录下进行ota工具的解压
同时声明了升级的信息
export BASE_BSP=/home/username/R32.7.3/Linux_for_Tegra
export TARGET_BSP=/home/username/R35.4.1/Linux_for_Tegra
然后通过 sudo./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-agx-orin-devkit R35-4执行OTA包的生成但是在生成的时候我这边并没有成功

上面 export BASE_BSP 中的版本要与 /etc/nv_tegra_release 输出的版本结果一致。

这些我都设置了,最后发现是python的软连接的问题,另外我想问一下如何将public里编译出来的image和device-tree跑的那个dtb进行替换然后一起打包进ota包里呢?是将rootfs目录下的image和kerne_xxx_xxx.dtb进行替换吗?

把源码里编译的 ”Image“ ".dtb" 替换 $TARGET_BSP/kernel/Image $TARGET_BSP/kernel/dtb/*.dtb , 然后执行 sudo./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-agx-orin-devkit R35-4
这样就可以打包到ota payload里面。

1 个赞

你好,我想问下为什么生成的OTA包在板子上进行升级的时候会提示我的版本不匹配呢?

可以参考这篇文章

这里以 Orin Nano 为例,升级当前的 JetPack 5.1.3 到 6.0版本。

其思路是先生成分别生成原版本的完整系统镜像,再去生成OTA包(根据旧/新系统镜像生成增量升级包)。l4t_generate_ota_package.sh 需要知道当前,和目标版本,才能计算出差异生成包 ota_payload_package.tar.gz。

对于你的当前的Jetson 要确定是 Xavier 系列还是 Orin 系列,查看 JetPack Archive | NVIDIA Developer, 找到对应的 JetPack 版本,BASE_BSP 和要升级到的目标 JetPack版本。要确定 Jetson是否支持某个系列,如 Orin 系列不支持 JetPack 4.x (其中包含 L4T 32.x)。

我目前的话是将5.1.2升级到5.1.4的版本,后续会将5.1.4的升级到6.x系列的是否不需要按照上述的流程来进行,另外https://developer.nvidia.com/embedded/jetpack-archive,找到对应的这个网站我这边无法打开

另外我使用的是jetson AGX ORIN 在资料中并没有该设备的一些参数

这篇文档的步骤可以从 AGX Orin 上从 5.1.2 升级到 5.1.4;注意文档中

https://docs.nvidia.com/jetson/archives/r35.6.0/DeveloperGuide/SD/SoftwarePackagesAndTheUpdateMechanism.html#steps-performed-on-the-host-machine

R32.7.3 只是一个示例,要查看/etc/nv_tegra_release 输出,如

# R35 (release), REVISION: 4.1, GCID: 33958178, BOARD: t186ref, EABI: aarch64, DATE: Tue Aug 1 19:57:35 UTC 2023

export BASE_BSP=/home/username/R35.4.1/Linux_for_Tegra
export TARGET_BSP=/home/username/R35.6.0/Linux_for_Tegra #对应 JetPack 5.1.4

打开 JetPack Archive | NVIDIA Developer

是的,我目前正在按照这个文档中的步骤进行,目前还没有构建完成,如果后续构建有问题我会向你提问,另外我想问下如果ota去升级的话能否进行AB差分升级?如果可以的话我想查看一下官方的手册或者官方给的一些技术支持,感谢你的回答

你好我按照这个步骤进行的ota升级从5.1.2>5.1.4的升级为什么输出的内核版本并没有发生更改

看一下这个命令的输出是否为 R35 (release), REVISION: 6.0
也可以用这个命令查看 dpkg -l | grep nvidia-l4t-kernel 是不是 35.6.x-


是的,输出的结果是35.6.x,但是为什么我对一些外设的更改同时打包进来的没有发生改变呢


经过查看我发现boot/dtb里面有两个dtb,为什么会发生这样的事情呢?

如果我要替换的是目标载板boot/dtb下的那个dtb应该替换那里然后进行打包进ota

你可以用 ``` 开始/结束 把输出格式化 (粘贴截图无法复制其中的文本)。这样方便我们检查。如下

代码格式化

修改的是 TARGET_BSP 里 rootfs 的 /boot/dtb/xxx.dtb

  • 在目标板上看 /boot/extlinux/extlinux.conf ,确认 FDT 行指向的文件,比如:FDT /boot/dtb/kernel_tegra234-p3701-0004-p3737-0000.dtb

  • OTA 之后要保证这个路径在新 rootfs 里同样存在,并且是你替换后的 dtb 文件。

在 TARGET_BSP 中替换 dtb 的位置

  1. 在 PC 上解压/准备好 Linux_for_Tegra 目录,并把 target rootfs(5.1.4)同步好(即文档里的 ${TARGET_BSP} 环境)。

  2. 将你编译好的新 dtb 覆盖到 TARGET 根文件系统里的 /boot/dtb/ ,路径与目标板一致,例如:${TARGET_BSP}/rootfs/boot/dtb/kernel_tegra234-p3701-0004-p3737-0000.dtb

  3. 如果你也需要更新 /boot 下的同名 dtb(有的版本会从 /boot 自身再拷贝到 /boot/dtb ),可以同时在 ${TARGET_BSP}/rootfs/boot/ 下放一份同名 dtb。

这样生成 OTA 时,这个新的 dtb 就会随着 rootfs 分区一起打包进 OTA payload

生成并应用 OTA 包

在完成 dtb 替换后,按文档运行:

  • sudo -E ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh <target_board> <bsp_version> 生成 ota_payload_package.tar.gz

  • 把这个包放到目标板(例如 /ota/ ),用 nv_ota_start.sh /ota/ota_payload_package.tar.gz 触发 OTA。

  • OTA 完成重启后,再次检查 /boot/dtb//boot/extlinux/extlinux.conf,确认 FDT 指向的就是你替换后的 dtb。

你的意思是否是将在/home/user/public/Linux_for_Tegra/source/public/kernel_out/arch/arm64/boot/dts/nvidia里编译出来的tegra234-p3701-0004-p3737-0000.dtb和image替换为BSP下L4T/rootfs/dtb/下的kernel_tegra234-p3701-0004-p3737-0000.dtb与image呢?

是的。注意路径要和 extlinux 里的一致,如
FDT /boot/dtb/kernel_tegra234-p3701-0004-p3737-0000.dtb

拷贝到 TARGET_BSP 的 rootfs

Image 覆盖到:
${L4T}/rootfs/boot/Image

DTB 覆盖到:
${L4T}/rootfs/boot/dtb/kernel_tegra234-p3701-0004-p3737-0000.dtb

要是 /boot 目录下也有同名的 dtb 也可以更新一份
${L4T}/rootfs/boot/kernel_tegra234-p3701-0004-p3737-0000.dtb

然后用替换的 Image 和 DTB 的 ${L4T} 去生成 OTA 包,目标板 OTA 升级后 /boot 和 /boot/dtb 就会更新成这套新的 Image + dtb。

请问如果是从5.1.2或者5.1.4升级到6.1.2这种跨大版本制作OTA包是否也可以按照这个 https://docs.nvidia.com/jetson/archives/r35.6.0/DeveloperGuide/SD/SoftwarePackagesAndTheUpdateMechanism.html#steps-performed-on-the-host-machine 文档流程来执行?来进行跨大版本之间的更新