Jetson AGX Xavier打实时补丁及内核编译烧录过程记录

2023-11-05

一、准备源码和交叉编译工具链

  1. 下载链接:Jetson Linux R32.6. Release Page | NVIDIA Developer

下载如下图所示的文件:

二、配置内核以及交叉编译环境

2. 解压源码:

2.1 解压“public_sources.tbz2”,生成Linux_for_Tegra文件夹

$ tar -xjf public_sources.tbz2

2.2 解压内核源码

$ cd Linux_for_Tegra/source/public

$ tar –xjf kernel_src.tbz2

2.3 解压“Jetson_Linux_R32.6.1_aarch64.tbz2”“Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64.tbz2”

将“Jetson_Linux_R32.6.1_aarch64.tbz”解压在Linux_for_Tegra目录内:

将“Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64.tbz2”解压在/Linux_for_Tegra/rootfs目录内

$ tar xf Jetson_Linux_R32.6.1_aarch64.tbz2

$ cd Linux_for_Tegra/rootfs/

$ sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64.tbz2

$ cd ..

$ sudo ./apply_binaries.sh

 2.4 解压gcc交叉编译工具链

$ tar xjf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz

3        构建NVIDIA kernel

3.1 必须下载内核源码,安装“utilities 

$ sudo apt install build-essential bc

3.2 在~/Linux_for_Tegra/source/public/kernel路径下新建output文件夹。

3.3 设置环境变量

需要在:~/Jetson_AGX_Xavier/Linux_for_Tegra/source/public/kernel/kernel-4.9/路径下执行

$ TEGRA_KERNEL_OUT=/home/idriver/Jetson_AGX_Xavier/Linux_for_Tegra/source/public/kernel/output/

如果在非Jetson 系统下,需要设置交叉编译链接

$ export CROSS_COMPILE=<cross_prefix>

$ export LOCALVERSION=-tegra

 3.4 执行以下命令创建.config文件

$ cd <kernel-4.9/>

$ mkdir -p $TEGRA_KERNEL_OUT

$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig

 3.5 执行脚本,向Linux kernel打入实时补丁

$ scripts/rt-patch.sh apply-patches

 3.6 执行以下命令来构建包含所有dtb和模块的内核

$ make mrproper      注:[首先清除所有的.o文件和依赖关系]

$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j<n>

执行以上命令后会出现如下选择,选择5,之后的所有选项都选择“Y”。

注意:如果需要修改内核配置时,需要指定好编译平台和交叉编译工具链:

$ make ARCH=64 CROSS_COMPILE=/home/idriver/Jetson_AGX_Xavier/gcc-linaro/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-  menuconfig

等待编译完成……

编译成功:

3.7 编译完成之后,替换两个文件

$ cd $TEGRA_AGX_KERNEL_OUT

$ cp arch/arm64/boot/Image /home/idriver/Jetson_AGX_Xavier/Linux_for_Tegra/kernel/Image

$ cp arch/arm64/boot/dts/*dtb /home/idriver/Jetson_AGX_Xavier/Linux_for_Tegra/kernel/dtb/

$ cp arch/arm64/boot/dts/*dtbo /home/idriver/Jetson_AGX_Xavier/Linux_for_Tegra/kernel/dtb/

$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig

3.8 执行以下命令,安装内核模块。

$ sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=/home/idriver/Jetson_AGX_Xavier/Linux_for_Tegra/rootfs/

 3.9 执行以下命令

$ cd Linux_for_Tegra/

$ sudo ./apply_binaries.sh

注意:如果报错,请安装” qemu-user-static”

$ sudo apt-get install qemu-user-static

4 进入强制恢复模式

4.1 关闭AGX所有电源

4.2 接好三个按键旁边的typeCPC

4.3 接上电源按住中间的recovery不放,按一下电源,灯亮。

4.4 输入lsusb,查看是否进入强制恢复模式,

        lsusb

        显示为nvidia corp设备即可,如果显示为L4T是正常连接,没有进入恢复模式

 4.5 输入以下命令

$ sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1

等待刷写完毕,刷写成功后,显示如下:

注意:如果系统启动失败,请从3.6章节开始重新操作直至4.5

三、测试带有实时补丁的系统

3.1 查看带有实时补丁的系统,有如下红框内信息的为成功打入实时补丁的系统

3.2 安装实时测试工具

sudo apt-get install rt-tests

3.2.1 运行测试程序,注:运行五个线程,线程优先级为50,无限循环

sudo cyclictest -t 10 -p 50 -n 

3.2.2 测试结果

​​​​​​​3.2.3 参数解释

T:    0 序号为0的线程

P:    0 线程优先级为0

C:    9397 计数器。线程的时间间隔每达到一次,计数器加1

I:    1000 时间间隔为1000微秒(us)

Min:  最小延时(us)

Act:  最近一次的延时(us)

Avg 平均延时(us)

Max 最大延时(us)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetson AGX Xavier打实时补丁及内核编译烧录过程记录 的相关文章

  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有
  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • 在嵌入式系统上将内核控制台发送到哪里?

    我正在开发一个嵌入式系统 该系统当前通过串行端口 1 上的控制台输出启动 Linux 使用启动加载程序中的控制台启动参数 然而 最终我们将使用这个串行端口 内核控制台输出的最佳解决方案是什么 dev null 能否以某种方式将其放在 pty
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 打印本周星期一的日期(在 bash 中)

    我想获取本周星期一的 YYYYMMdd 格式的日期 例如 今天是 20110627 从明天到周日 我仍然想打印周一 今天 的日期 然后下周重复这个过程 monday date dmonday Y m d last monday date d
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • BeagleBone Black 如何用作大容量存储设备?

    是否可以使用 BB 作为大容量存储设备 我希望将其连接到可以从 USB 连接 例如 USB 闪存驱动器 读取文件的音频播放器并充当包含一个特定文件夹的数据存储设备 及其子文件夹 从文件系统 如果可能 在连接到开发板的闪存驱动器上 正如设备规
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • X 按键/释放事件捕获,与焦点窗口无关

    我想记录所有传入的按键事件 无论哪个窗口处于焦点状态或指针位于何处 我编写了一个示例代码 它应该捕获当前焦点窗口的按键事件 include
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • “./somescript.sh”和“. ./somescript.sh”有什么区别

    今天我按照一些说明在 Linux 中安装软件 有一个需要首先运行的脚本 它设置一些环境变量 指令告诉我执行 setup sh 但是我执行时犯了一个错误 setup sh 所以环境没有设置 最后我注意到了这一点并继续进行 我想知道这两种调用脚
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你

随机推荐