Jetson_Nano编译SDK
1. 1 下载Jetson nano的源码包和交叉编译器,并解压到对应目录,选择自己相应的版本,
以32.7.1版本:
unbuntu虚拟机或者主机打开终端,新建文件夹。将资源包移到文件夹,并解压(实际操作的时候,请尽量用tab按键自动补齐指令)。
sudo mkdir sources_nano
cd sources_nano
sudo mv ~/Downloads/Jetson-210_Linux_R32.7.2_aarch64.tbz2 ~/sources_nano/
sudo mv ~/Downloads/Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 ~/sources_nano/
1.2 配置环境变量
export PATH=~/jetson_nano/opt/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH
source ~/.bashrc
export LOCALVERSION=-tegra
使用命令 aarch64-linux-gnu-gcc -v 如果可以看到编译器版本信息,说明环境变量配置正确。
使用命令 sudo apt-get install libxml2-utils 安装编译工具链
使用命令 sudo apt-get install qemu-user-static 安装组件
解压资源(需要sudo 权限执行)
sudo tar -xjf Jetson-210_Linux_R32.7.2_aarch64.tbz2
cd Linux_for_Tegra/rootfs/
sudo tar -xjf ../../Tegra_Linux_Sample-Root-Filesystem_R32.7.2_aarch64.tbz2
cd ../
sudo ./apply_binaries.sh (若出现报错按提示操作,再重新输入该指令)
编译成功会提示,并在相应目录生成系统镜像和dtb文件
EMMC烧录镜像,
- 用跳帽或者杜邦线短接FC REC和GND引脚,位于核心板底下。
- 连接DC电源到圆形供电口, 稍等片刻。进入recovery模式。
- 用USB线(注意要是数据线)连接Jetson Nano的Micro USB接口到Ubuntu主机。
cd ~/sources_nano/Linux_for_Tegra
sudo ./flash.sh jetson-nano-emmc mmcblk0p1
烧录完成之后,去掉底板的跳帽,接入显示器,重新上电,按照提示进行开机配置(如果是设置的pre-config, 上电后直接进入系统)。
如果想不通过SDK-Manager方式配置上电后直接进入系统,可在SDK目录Linux_for_Tegra目录下执行以下命令,l4t_create_default_user.sh脚本生成自动登录配置。(账号密码均为nvidia)
然后重新烧录系统即可。
sudo ./tools/l4t_create_default_user.sh -u nvidia -p nvidia -a
Jetson_Nano编译内核
同上下载 L4T Driver Package(BSP)Sources
下载public_sources.tbz 使用32.7.1版本(具体根据自己需要)
下载地址:L4T Driver Package (BSP) Sources
1)解压
tar -jvxf public_sources.tbz2
cd Linux_for_Tegra/source/public
kernel编译
1)必要工具安装
sudo apt install build-essential bc
sudo apt-get install libncurses5-dev
2)解压kernel 到自己的目录
找到kernel 压缩包位置
Linux_for_Tegra/source/public/kernel_src.tbz2
复制内核压缩包到目标目录并解压,例如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>
mkdir -p $TEGRA_KERNEL_OUT
<outdir>为编译输出的目录名称
b)配置环境变量
export CROSS_COMPILE=aarch64-linux-gnu-
export LOCALVERSION=-tegra
c)生成.config文件
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文件即可