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

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

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


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

文章目录

  • Jetson AGX Orin内核、设备树更新指南
    • 一、下载工具包和内核源码
    • 二、准备编译环境
    • 三、编译内核
      • 3.1 修改内核参数
      • 3.2 修改设备树文件
      • 3.3 编译内核及外部模块
      • 3.4 安装内核及外部模块
      • 3.5 切换实时内核
    • 四、编译NVIDIA驱动
    • 五、更新内核和设备树文件
      • 5.1 使用官方flash.sh脚本刷新系统
      • 5.2 只更新内核和设备树(非刷机方式)



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-platformcp 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#adddtb-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 primaryMENU TITLE L4T boot optionsLABEL primaryMENU LABEL primary kernelLINUX /boot/ImageFDT /boot/dtb/tegra234-p3737-0000+p3701-0005-csrs.dtbINITRD /boot/initrdAPPEND ${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 backupMENU LABEL primary kernelLINUX /boot/Image.backupFDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0005-csrs-nv.dtbINITRD /boot/initrdAPPEND ${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已经修复了



在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/325313.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

anconda创建虚拟环境,使用虚拟环境(基于win平台)

假设已经安装了anconda&#xff0c;打开anaconda的 shell。 查看已存在的虚拟环境&#xff0c;base是默认的&#xff0c;不用理会&#xff0c;后面的yolov5就是用户创建的 #查看有那些虚拟环境 (base) PS C:\Users\x> conda info -e # conda environments: # base …

【江科大STM32学习笔记】新建工程

1.建立工程文件夹&#xff0c;Keil中新建工程&#xff0c;选择型号 2.工程文件夹里建立Start、Library、User等文件夹&#xff0c;复制固件库里面的文件到工程文件夹 为添加工程文件准备&#xff0c;建文件夹是因为文件比较多需要分类管理&#xff0c;需要用到的文件一定要复…

wordpress主题 7B2 PRO主题5.4.2免授权直接安装

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 WordPress 资讯、资源、社交、商城、圈子、导航等多功能商用主题&#xff1a;B2 PRO 其设计风格专业且时尚&#xff0c;功能十分强大&#xff0c;包括多栏布局、自定义页面、强大的主…

faad2交叉编译——aac解码为pcm,解决faad单通道转双通道问题

FAAD是比较成熟高效的开源AAC解码库&#xff0c;这里用于解码AAC生成PCM数据&#xff0c;用于音频播放。这里因为faad库&#xff0c;会将单通道转化为双通道踩了些坑&#xff0c;所以记录一下。 我使用的是2.11.0版本&#xff0c;貌似往前的版本没有使用CMake&#xff0c;需要c…

网络应用层

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.使用协议和序列化1.1.自定义协议&#xff0c;自定义序列化1.2.自…

综合性练习(验证码案例)

目录 一、需求 二、准备工作 三、约定前后端交互接口 1、需求分析 2、接口定义 四、Hutool工具介绍 1、引入依赖 2、测试使用Hutool生成验证码 五、实现服务器端代码 代码解读&#xff1a; 六、调整前端页面代码 七、运行测试 随着安全性的要求越来越高&#xff0c…

Cloudflare国内IP地址使用教程

Cloudflare国内IP地址使用教程 加速网站&#xff1a; 首先我们添加一个 A 记录解析&#xff0c;解析 IP 就是我们服务器真实 IP&#xff1a; 然后侧边栏 SSL/TLS - 自定义主机名&#xff1a; 回退源这里填写你刚刚解析的域名&#xff0c;保存后回退源状态为有效再来接下的操作…

WEB后端复习——JSP、EL、JSTL

JSP:Java Serve Pages(Java服务器页面) 运行在服务器的脚本、在静态网页HTML代码中嵌入java 优势特点 1.被编译后可以多次直接运行&#xff0c;代码执行效率高&#xff08;一次加载、多次可用&#xff09; 2.动态代码封装&#xff0c;组件可重用性高&#xff08;JavaBean EJ…

Spring Boot 调用外部接口的几种方式

Spring Boot 调用外部接口的几种方式 在微服务架构中&#xff0c;服务间的调用是不可或缺的环节。Spring Boot 为开发者提供了多种方式来实现这一任务&#xff0c;这个文章将为你详细介绍这些方式。 一、使用RestTemplate RestTemplate是 Spring Boot 早期版本中常用的 REST 客…

如何安全可控地进行内外网跨网络传输文件?

跨网络传输文件通常指的是在不同的网络环境之间移动数据&#xff0c;这在现代企业运营中非常常见。随着网络技术的高速发展&#xff0c;为了有效地保护内部的核心数据资产&#xff0c;企业一般会采用内外网隔离的策略。在进行内外网跨网络传输文件时&#xff0c;需要考虑多种因…

基于SSM+Vue的物流管理系统

运行截图 获取方式 Gitee仓库

【Java orm 框架比较】十一 新增 原生jdbc对比

迁移到&#xff08;https://gitee.com/wujiawei1207537021/spring-orm-integration-compare&#xff09; orm框架使用性能比较 比较mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、dbvisitor、beetlsql、dream_orm、wood、hammer_sql_db、原生jdbc…

类型注解-Python

师从黑马程序员 类型注解的语法 类型注释的限制 import json import randomvar_1 : int10 var_2 : str"itheima" var_3 : boolTrueclass Student:pass stu :StudentStudent()my_list:list [1,2,3] my_tuple:tuple(1,2,3) my_dict:dict{"itheima":666}my_l…

小学拼音弄一下

import re from xpinyin import Pinyindef remove_middle_characters(text):# 仅保留汉字chinese_chars re.findall(r[\u4e00-\u9fff], text)cleaned_text .join(chinese_chars)# 如果字符数为偶数&#xff0c;则在中间添加空格if len(cleaned_text) % 2 0:middle_index le…

【优选算法】——Leetcode——LCR 179. 查找总价格为目标值的两个商品

1.题目 2. 解法⼀&#xff08;暴⼒解法&#xff0c;会超时&#xff09;&#xff1a; 1.算法思路&#xff1a; 2.图解 3. 代码实现 3. 解法⼆&#xff08;双指针-对撞指针&#xff09;&#xff1a; 1.算法思路&#xff1a; 2.图解 3.代码实现 1.C语言 2…

基于Nios-II的流水灯

基于Nios-II的流水灯 一、Qsys设计&#xff08;一&#xff09;新建项目&#xff08;二&#xff09;Platfrom Designer&#xff08;三&#xff09;设置时钟主频&#xff08;四&#xff09;添加Nios-II Processor并设置&#xff08;五&#xff09;添加JTAG并配置&#xff08;六&a…

day11-StreamFile

1.Stream流 1.1 体验Stream流 需求&#xff1a;按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 把集合中所有以"杨"开头的元素存储到一个新的集合 把"杨"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得到…

linux 安装 mangodb 并设置服务开机自启

1、下载 wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz 2、解压 tar -zxvf mosquitto-1.6.8.tar.gz 3、编译安装cd mosquitto-1.6.8 make sudo make install4、在当前目录。进入mosquitto服务文件存放的文件夹 cd service/systemd可以看到3个文件 点击read…

动态规划----股票买卖问题(详解)

目录 一.买卖股票的最佳时机&#xff1a; 二.买卖股票的最佳时机含冷冻期&#xff1a; 三.买卖股票的最佳时期含⼿续费&#xff1a; 四.买卖股票的最佳时机III: 五.买卖股票的最佳时机IV: 买卖股票的最佳时机问题介绍&#xff1a;动态规划买卖股票的最佳时机是一个经典的…

如何使用多协议视频汇聚/视频安防系统EasyCVR搭建智慧园区视频管理平台?

智慧园区作为现代化城市发展的重要组成部分&#xff0c;不仅承载着产业升级的使命&#xff0c;更是智慧城市建设的重要体现。随着产业园区竞争的逐渐白热化&#xff0c;将项目打造成完善的智慧园区是越来越多用户关注的内容。 然而我们往往在规划前期就开始面临众多难题&#…