鼓捣了好几天终于完成实时补丁,官网有教程,但有些总进行不下去,在此记录我的过程,先上成品图。
1、在官网下载对应版本的Jetson Linux源文件,注意和自己机器的版本对应,我是35.3.1
2、解压文件:
tar -xjf public_sources.tbz2
tar -xjf Jetson_Linux_R35.3.1_aarch64.tbz2
# 解压缩内核源文件:
cd Linux_for_Tegra/source/public
tar -xjf kernel_src.tbz2
# 这会将内核源代码提取到子目录。kernel/
# 解压缩文件Tegra_Linux_Sample-Root-Filesystem_R35.3.1_aarch64.tbz2到Linux_for_Tegra/rootfs# # 文件夹中
Sudo tar -xjf Tegra_Linux_Sample-Root-Filesystem_R35.3.1_aarch64.tbz # 注意这个需要使用sudo解压
3、构建内核:
# 安装Jetson Linux构建实用程序
sudo apt install build-essential bc
4、解压交叉编译链:
# 在大文件夹下创建gcc文件夹
mkdir gcc
# 将<toolchain_archive>文件放入gcc文件夹中
tar xf <toolchain_archive>
5、设置环境变量、创建输出文件夹:
export CROSS_COMPILE=<gcc所在文件夹绝对地址>/gcc/bin/aarch64-buildroot-linux-gnu-
# terminal返回Linux_for_Tegra/source/public地址。
# 将 RT 补丁应用于内核:
./kernel/kernel-5.10/scripts/rt-patch.sh apply-patches
# 设置环境变量:
export CROSS_COMPILE_AARCH64_PATH=<toolchain-path> # 就是gcc的地址
export CROSS_COMPILE_AARCH64=<toolchain-path>/bin/aarch64-buildroot-linux-gnu-
# 创建文件夹kernel_out
mkdir kernel_out
6、编译内核:
./nvbuild.sh -o $PWD/kernel_out
# 报错先看文章末尾的解决方法,然后再自行解决
7、替换文件:
对于设备树,将Linux_for_Tegra/kernel/dtb/中的文件替换为kernel_out/arch/arm64/boot/dts/nvidia/中的文件
将Linux_for_Tegra/kernel/Image替换为kernel_out/arch/arm64/boot/Image
8、构建内核模块:
# 注意更改文件路径
cd kernel_out
sudo make ARCH=arm64 O=~/Desktop/a/Linux_for_Tegra/source/public/kernel_out modules_install INSTALL_MOD_PATH=~/Desktop/a/Linux_for_Tegra/rootfs/
cd Linux_for_Tegra/
sudo ./apply_binaries.sh
# 注意:如果报错,请安装“qemu-user-static”
sudo apt-get install qemu-user-static
9、电脑端准备工作完成,然后连接agx开始安装系统
进入强制恢复模式:
1 关闭AGX所有电源
2 接好三个按键旁边的typeC到PC上
3 接上电源按住中间的recovery不放,按一下电源,灯亮。
4 输入lsusb,查看是否进入强制恢复模式,显示为nvidia corp设备即可
10、给agx安装系统:
# 找到flash.sh文件的位置,然后输入命令
sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1
附:
安装完实时系统后,agx的实时效果并不好,如下图。
sudo apt-get install rt-tests
sudo cyclictest -t 10 -p 50 -n
这方面的资料很少,只知道需要修改内核参数,但不知道每个参数的含义,而且我修改完重启后又恢复成默认参数。请知道这部分操作的网友赐教!!
echo 100 > /sys/kernel/debug/tegra_mce/rt_window_us
echo 20 > /sys/kernel/debug/tegra_mce/rt_fwd_progress_us
echo 0x7f > /sys/kernel/debug/tegra_mce/rt_safe_mask
=================================分割线===================================
编译内核可能遇到的问题:
#1、出现关于make[2]: *** [scripts/Makefile.host:95: scripts/sign-file] Error 1问题时,安装#flex即可
sudo apt-get install flex
#2、出现关于openssl/opensslv.h: No such file or directory错误时,安装libssl-dev即可
sudo apt-get install libssl-dev