1.交叉编译工具链
下载gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
下载地址:Jetson Linux R32.7.2 Release Page | NVIDIA Developer
1)解压
安装位置为/opt
主机开发环境:Ubuntu 18.04.6 LTS
sudo tar -xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz -C /opt
2)修改启动脚本
vim ~/.bashrc
添加:
export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH
3)脚本生效
source ~/.bashrc
4)查看aarch64-linux-gnu-gcc版本
aarch64-linux-gnu-gcc -v
显示gcc相应的版本号,说明安装成功
注意:若想安装其他版本的交叉编译器,可前往:Linaro Releases
下载对应平台的编译好的工具链,并按上述方法操作。
2.u-boot编译
下载public_sources.tbz
下载地址:L4T Driver Package (BSP) Sources
1)解压
tar -jvxf public_sources.tbz2
cd Linux_for_Tegra/source/public
mkdir u-boot
tar -jvxf u-boot_src.tbz2 -C u-boot
cd u-boot/u-boot
2)导出环境变量
export CROSS_COMPILE=aarch64-linux-gnu-
3)清除原生成的文件
make distclean
4)配置
make p3450-0000_defconfig
5)编译
make
编译结果为当前目录下的u-boot.bin文件
拷贝u-boot.bin文件到Linux_for_Tegra/bootloader/t210ref/p3450-0000/下即可
Linux_for_Tegra目录为Jetson-210_Linux_R32.7.2_aarch64.tbz2解压后的目录,BSP下载地址:L4T Driver Package (BSP)
3.kernel编译
1)必要工具安装
sudo apt install build-essential bc
sudo apt-get install libncurses5-dev
2)解压kernel
cd <top>/Linux_for_Tegra/source/public
mkdir kernel
tar -jvxf kernel_src.tbz2 -C kernel
cd kernel/kernel-4.9
3)查询make版本
make -v
如果为:GNU Make 4.3则修改:kernel目录下scripts/Kbuild.include
the-space :=
the-space +=
改成:
E =
the-space = $E $E
4)编译内核
a)定义输出目录名称
TEGRA_KERNEL_OUT=<outdir>
<outdir>为编译输出的目录名称
b)配置环境变量
export CROSS_COMPILE=aarch64-linux-gnu-
export LOCALVERSION=-tegra
c)生成.config文件
mkdir -p $TEGRA_KERNEL_OUT
make O=$TEGRA_KERNEL_OUT distclean
make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig
d)编译
make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j<n>
<n>为多线程编译的数量
若需要定制内核,可以在c)操作后面增加:
make ARCH=arm64 O=$TEGRA_KERNEL_OUT menuconfig
选择/移除相应的模块
编译生成内核和dts在:TEGRA_KERNEL_OUT/arch/arm64/boot
e)替换Linux_for_Tegra/kernel/Image
用:
TEGRA_KERNEL_OUT/arch/arm64/boot/Image
f)替换Linux_for_Tegra/kernel/dtb/
用:
TEGRA_KERNEL_OUT/arch/arm64/boot/dts/
只用拷贝dts目录下的*.dtb文件即可
SD卡版:tegra210-p3448-0000-p3449-0000-b00.dtb
eMMC版:tegra210-p3448-0002-p3449-0000-b00.dtb
g)安装内核模块
sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=<top>/Linux_for_Tegra/rootfs/
<top>为Linux_for_Tegra的上级目录
注意:“export LOCALVERSION=-tegra”生成的modules和内核携带相关信息,可查看“/lib/modules/4.9.253-tegra”后面有一个"-tegra",如果不使用“export LOCALVERSION=-tegra”的话,采用sdkmanager更新的系统,替换内核会无法启动,因为生成的是不带"-tegra"的。
4.rootfs编译
这里直接使用官方制作好的根文件系统。
1)解压BSP目录
BSP目录下载地址见u-boot章节。
tar -jvxf Jetson-210_Linux_R32.7.2_aarch64.tbz2
2)下载制作好的rootfs
3)将文件系统解压到BSP的rootfs目录
sudo tar -jxpf Tegra_Linux_Sample-Root-Filesystem_R32.7.2_aarch64.tbz2 -C <top>/Linux_for_Tegra/rootfs
注意:这里必须用sudo
4)安装应用程序
cd <top>/Linux_for_Tegra
sudo ./apply_binaries.sh
至此Jetson Nano基础开发环境搭建完成。