赞
踩
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烧录镜像,
- 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
同上下载 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文件即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。