【NVIDIA Jetpack6.0】Jetson AGX Orin内核、设备树更新指南

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G/6G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解



2024年5月4号,nvidia正式发布了Jetpack6.0版本,这个版本带来了很多功能,包括:

  • 新的cude、tensorrt等库,可以大幅提升AI推理性能(亲测提升很明显,所以才考虑从Jetpack5.1升级到最新版本);
  • 可以使用UpStreaming Linux内核版本,并且提供了实时内核;
  • 根文件系统升级到了Ubuntu2204;

【NVIDIA Jetpack5.x】Jetson AGX Orin内核、设备树更新指南

Jetson AGX Orin内核、设备树更新指南

       这篇文章主要介绍如何手动更新内核和设备树文件,不会再介绍如何使用sdkmanage工具刷机,如果需要可以参考 【NVIDIA Jetpack5.x】Jetson AGX Orin内核、设备树更新指南如果不知道如何下载最新的BSP代码、内核代码和工具链也请参考上面的链接,不再赘述。

一、下载工具包和内核源码

请参考 【NVIDIA Jetpack5.x】Jetson AGX Orin内核、设备树更新指南

二、准备编译环境

请参考 【NVIDIA Jetpack5.x】Jetson AGX Orin内核、设备树更新指南

三、编译内核

3.1 修改内核参数

       上一版本中需要手动修改tegra_defconfig文件,新版本中不需要手动修改了,NVIDIA提供了一个脚本,可以方便的开启或者关闭某个Feature,相关命令如下所示:

cd path/to/Linux_for_Tegra/source

./kernel/kernel-jammy-src/scripts/config --file "./kernel/kernel-jammy-src/arch/arm64/config/defconfig" --enable CONFIG_NO_HZ_FULL

./kernel/kernel-jammy-src/scripts/config --file "./kernel/kernel-jammy-src/arch/arm64/config/defconfig" --disable CONFIG_NO_HZ_FULL

解释一下上面的命令,

  1. 进入下载的内核文件夹中;
  2. 执行./kernel/kernel-jammy-src/scripts/config脚本,其中--file指定使用的内核配置文件,--enabledisable指定要开启或者关闭的Feature;

3.2 修改设备树文件

       上一版本中我们修改了默认的设备树文件,这样不太优雅。这次我们自定义一个设备树文件。

首先,我们以NVIDIA提供的设备树文件作为base,

cd path/to/Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/nv-platform

cp tegra234-p3737-0000+p3701-0005-nv.dts tegra234-p3737-0000+p3701-0005-csrs.dts

编译tegra234-p3737-0000+p3701-0005-csrs.dts文件,关闭PCIe的IOMMU功能,

cat <<EOF > tegra234-p3737-0000+p3701-0005-csrs.dts

#include "tegra234-p3737-0000+p3701-0005-nv.dts"
/*C5 X8 rp*/
pcie@141a0000{
	/delete-property/ iommus;
	/delete-property/ iommu-map;
	/delete-property/ dma-coherent;
	/delete-property/ iommu-map-mask;
	/delete-property/ vpcie3v3-supply;
};

/*C5 X8 ep*/
pcie-ep@141a0000{
	/delete-property/ iommus;
	/delete-property/ iommu-map;
	/delete-property/ dma-coherent;
	/delete-property/ iommu-map-mask;
	/delete-property/ vpcie3v3-supply;
};
EOF

修改当前目录下的Makefile文件,增加编译选项,

vim Makefile

#add

dtb-y += tegra234-p3737-0000+p3701-0005-csrs.dtb

之后不需要我们手动编译,在编译内核的时候会自动编译,编译后的文件就在kernel_output/nvidia-oot/device-tree/platform/generic-dts/dtbs

3.3 编译内核及外部模块

       首先需要定义交叉编译工具链的地址,

export CROSS_COMPILE=path/to/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-

然后定义内核的编译输出路径

export kernel_output=$HOME/kernel_output

运行NVIDIA提供的脚本开始编译内核,

cd path/to/Linux_for_Tegra/source

./nvbuild -o ${kernel_output}

3.4 安装内核及外部模块

       首先需要定义安装路径,

export INSTALL_MOD_PATH=$HOME/jetson_update

运行NVIDIA提供的脚本开始安装内核和模块,

cd path/to/Linux_for_Tegra/source

./nvbuild -i -o ${kernel_output}

3.5 切换实时内核

       运行下面的命令会自动打上RT Patch,并开始编译RT内核,

cd path/to/Linux_for_Tegra/source

./nvbuild -r -o ${kernel_output}

四、编译NVIDIA驱动

       不需要手动操作了,在通过NVIDIA提供的nvbuild.sh脚本编译内核的时候,会自动编译Out of Tree模块。然后在安装内核和模块的时候,会自动复制到正确的位置,也不需要我们手动复制了。

五、更新内核和设备树文件

5.1 使用官方flash.sh脚本刷新系统

请参考 【NVIDIA Jetpack5.x】Jetson AGX Orin内核、设备树更新指南

5.2 只更新内核和设备树(非刷机方式)

  1. 修改Jetson设备中的/boot/extlinux/extlinux.conf文件

    TIMEOUT 100
    DEFAULT primary
    
    MENU TITLE L4T boot options
    
    LABEL primary
          MENU LABEL primary kernel
          LINUX /boot/Image
          FDT /boot/dtb/tegra234-p3737-0000+p3701-0005-csrs.dtb
          INITRD /boot/initrd
          APPEND ${cbootargs} root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 
    
    LABEL backup
          MENU LABEL primary kernel
          LINUX /boot/Image.backup
          FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0005-csrs-nv.dtb
          INITRD /boot/initrd
          APPEND ${cbootargs} root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 
    
    
  2. 将生成的${jetson_update}/boot/Image文件替换Jetson设备中的/boot/Image文件

  3. 将生成的设备树文件${jetson_update}/boot/dtb/tegra234-p3737-0000+p3701-0005-csrs.dtb放到Jetson设备中的/boot/dtb/文件夹

  4. 将生成的${jetson_update}/lib/modules下的整个文件夹,拷贝到Jetson设备的/lib/modules文件夹下

  5. 将内核的符号表文件${kernel_output}/kernel/kernel-jammy-src/Module.symvers拷贝到Jetson设备的/usr/src/linux-headers-5.15.136-tegra-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source/Module.symvers

  6. 在Jetson设备上运行sudo nv-update-initrd,更新initrdfs

  7. 重启Jetson设备

  8. 重启后修改jetson设备中/lib/modules/`uname -r`的软链接,

    sudo ln -snf /usr/src/linux-headers-5.15.136-tegra-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source /lib/modules/`uname -r`/build
    

这里不需要再执行sudo depmod -a,这个bug已经修复了



在这里插入图片描述

### NVIDIA JetPack 6.2 版本说明 NVIDIA JetPack 6.2 是针对 NVIDIA Jetson 平台的重要更新,特别为 Jetson Orin Nano 和 Jetson Orin NX 模块引入了超级模式[^1]。这一新模式显著提升了设备的计算能力和性能表现。 #### 超级模式带来的性能提升 表 8 展示了在 JetPack 6.2 下,Jetson Orin Nano 8GB 上 VLM 性能在不同模型下的具体改进情况: | Model | Orin NX 16GB(原版) | Orin NX 16GB(超级模式) | 性能提升倍数 | |---------------|----------------------|--------------------------|--------------| | VILA 1.5 3B | 0.7 | 1.1 | 1.51 | | VILA 1.5 8B | 0.6 | 0.8 | 1.45 | | LLAVA 1.6 7B | 0.4 | 0.6 | 1.38 | | Qwen2 VL 2B | 2.8 | 4.4 | 1.57 | | InternVL2.5 4B| 2.5 | 5.1 | 2.04 | | PaliGemma2 3B | 13.7 | 21.6 | 1.58 | | SmolVLM 2B | 8.1 | 12.9 | 1.59 | 这些数据显示,在启用超级模式之后,多个大型语言模型和视觉处理任务的速度都有明显提高[^3]。 #### 安装与配置指南 为了充分利用 JetPack 6.2 的新特性,建议按照以下步骤操作: - 使用 `jtop` 工具查看当前系统的状态信息,通过按数字键 '6' 可以访问到关于已安装软件包的具体版本号等详情页面[^2]。 - 对于开发环境准备方面,则需先确保系统中已经包含了必要的构建工具链和支持库文件,比如 busybox、automake 等基础组件以及 GPIO 控制所需的 libgpiod 库[^4]。 ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install busybox automake autoconf libtool libgpiod-dev ``` 以上命令可以帮助完成初步设置工作,使得后续的应用程序编译更加顺利。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

从善若水

原创不易,感谢支持

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

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

打赏作者

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

抵扣说明:

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

余额充值