之前一篇文章介绍了正常的烧录过程,使用的是默认内核,实际工作中需要对内核打补丁升级为实时内核,并对其重编译。
一、准备内容官网大法好
官方内核下载链接
官方交叉编译器下载链接
官方文档
ubuntu主机一台
根据官网选择下载对应的文件,
1、L4TDriver Package (BSP) source
jetson内核文件。
2、官方交叉编译器
因为我们不是在jetson上直接编译,而jetson是arm平台,所以要进行交叉编译。
二、使用步骤 1.解压 内核tar -xjf public_sources.tbz2 cd Linux_for_Tegra/source/public tar –xjf kernel_src.tbz2
经过两次解压后内核解压完成,在kernel/kernel-4.9/中存放的就是内核的相关内容。
2. 解压交叉编译器sudo apt install build-essential bc sudo tar -xvf gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz -C /opt
这里将文件解压在/opt里面。其实解压到哪里都可以,后续会指明路径。
3、配置环境变量export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/:$PATH
在.bashrc里面设置上述环境变量,也就是指明交叉编译器的路径,放在这里面的目的是为了以后使用方便,不用再去找路径。
source ~/.bashrc
source一下使得立即生效不用重启terminal.
export LOCALVERSION=-tegra export CROSS_COMPILE=aarch64-linux-gnu-
在当前terminal设置下环境变量,只在当前terminal生效。
注意:官网上在设置环境变量的时候,没有修改bashrc而是在设置CROSS_COMPILE时直接指明了绝对路径,其实道理是一样的。还有一点这里没有指定编译后文件存取的地方,使用的是默认路径,如果修改要参考官网。
如果需要实时补丁,可在此时进行更新, 执行完后自动更新
scripts/rt-patch.sh apply-patches4、编译内核
make ARCH=arm64 tegra_defconfig make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j8
在kernel-4.9目录下执行第一条命令会生成一个config文件,第二条命令是进行编译 TEGRA_KERNEL_OUT我们没指定所以代表的是默认生成路径 -j8 要根据自己电脑的核数。
结束后会在图中路径生成新内核,到这里内核就已经重新编译完成,并更新了实时补丁。
5. 内核更新接下来就要将新内核更新到我们的烧录驱动中,也就是上一篇文章中使用的烧录驱动。
将生成的image替换到烧录驱动的kernel文件夹下,
将dts文件中的内容替换到烧录驱动的kernel/dtb文件夹下。
sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install
INSTALL_MOD_PATH=/home/ldl/jetson/Linux_for_Tegra/rootfs/
这里是将新内核模块安装到文件系统中。之后再执行正常的烧录步骤就可以了,参考上文最后的烧录。



