NVIDIA Tegra
DRIVE 5.0 Linux 开源软件

构建指南
5.0.10.3 版本


 
编译内核 (NVIDIA DRIVE Linux)
本主题包含在您的 Linux PDK 产品中编译 Linux 内核源代码的说明。
先决条件
您已解压缩内核源代码
bash drive-t186ref-linux-*-oss-src.run
bash drive-t186ref-foundation-*-toolchain.run
此脚本创建以下目录
drive-oss-src
顶层目录布局如下所示
hardware
toolchains
drive-oss-src
drive-t186ref-foundation
drive-t186ref-foundation_src
drive-t186ref-linux
drive-t186ref-linux_src
编译内核
1. 设置环境变量宏:LOCAL_VERSION 环境变量将 -tegra 附加到内核版本和模块。
export ARCH=arm64
export CROSS_COMPILE=<top>/toolchains/tegra-4.9-nv/usr/bin/aarch64-gnu-linux/aarch64-gnu-linux-
export CROSS32CC=<top>/toolchains/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc
export LOCALVERSION="-tegra"
2. 将内核源代码目录设置为当前工作目录
cd <top>/drive-oss-src
3. 输入以下命令以应用 rt-patches。
bash kernel/scripts/rt-patch.sh apply-patches
4. 创建一个输出目录,然后为开发板配置内核
mkdir out-t186ref-linux
make -C kernel O=${PWD}/out-t186ref-linux clean
5. 添加以下命令
make -C kernel O=${PWD}/out-t186ref-linux tegra_gnu_linux_defconfig
6. 构建内核
make -j3 -C kernel O=${PWD}/out-t186ref-linux
 
注意
如果上述命令失败,请输入不带 j<number> 选项的 make 命令。
7. 要刷写构建的镜像,请使用以下命令将压缩 (zImage) 和未压缩 (Image) 内核镜像复制到内核顶层目录
cp ${PWD}/out-t186ref-linux/arch/arm64/boot/zImage <top>/drive-t186ref-linux/kernel-rt_patches
cp ${PWD}/out-t186ref-linux/arch/arm64/boot/Image <top>/drive-t186ref-linux/kernel-rt_patches
注意:在复制新的内核镜像之前,请创建提供的默认内核的备份。
8. 使用以下命令将构建的内核模块整合到构建目录中
export INSTALL_MOD_PATH=${PWD}/out-t186ref-linux
make -C kernel O=${PWD}/out-t186ref-linux modules_install
9. 适用于: Ubuntu targetfs)使用以下命令将构建的模块复制到根文件系统路径
sudo cp -a ${PWD}/out-t186ref-linux/lib/modules/* <top>/drive-t186ref-linux/targetfs/lib/modules
 
注意
为确保加载所有模块,请在目标端执行以下命令
depmod-a
sync
sync 命令必须以超级用户身份执行。从下次启动开始,内核模块将在启动时自动加载。
10. 如果设备树源文件发生更改,请复制新生成的 DTB 文件
cp <top>/drive-oss-src/out-t186ref-linux/arch/arm64/boot/dts/<dtb_file> <top>/drive-t186ref-linux/kernel
其中 <dtb_file> 是以下文件之一,具体取决于平台(如下所示)。
 
对于 DRIVE PX 2 (P3407)
tegra186-vcm31-p3407-0000-a0<x>-00-base-vm.dtb
对于 DRIVE PX 2 (P2379)
对于 Tegra-A
tegra186-vcm31-p2379-0000-c0<x>-00-base-a-safety-vm.dtb
 
tegra186-vcm31-p2379-0000-c0<x>-00-base-a-air-cooled-safety-vm.dtb
对于 Tegra-B
tegra186-vcm31-p2379-0000-c0<x>-00-base-b-safety-vm.dtb
 
tegra186-vcm31-p2379-0000-c0<x>-00-base-b-air-cooled-safety-vm.dtb
其中 <x> 是您的实际板号,如《发行说明》中所述。