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

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

  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)

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值