都说边缘计算是下一次信息技术的变革,英伟达Jetson系列的产品将其推到一个新的高度,如何定制一款符合自己需要的高性能边缘计算单元,下面我们开启英伟达Jetson Nano系统移植第一步——内核编译。

wx_article_20200715140509_ZN9lI4.jpg

技术指标

wx_article_20200715140510_NYMQgf.jpg

L4T 组件说明

wx_article_20200715140510_iL3o9J.jpg

每个模块的组件说明如下:

wx_article_20200715140510_QGL4Pw.jpg

wx_article_20200715140510_iqbxmU.jpg

wx_article_20200715140510_LNIF0G.jpg

L4T 介绍

wx_article_20200715140511_UE0flX.jpg

在ubuntu主机交叉编译L4T软件包

1.下载L4T源码

点击

https://developer.nvidia.com/embedded/dlc/r32-3-1_Release_v1.0/Sources/T210/public_sources.tbz2,

下载L4T Driver Package (BSP) Sources解压和提取内核目录

lhy@lhy-desktop:~/Downloads$ tar -xjf public_sources.tbz2

lhy@lhy-desktop:~/Downloads$ cd /Linux_for_Tegra/source/public

lhy@lhy-desktop:~/Downloads/Linux_for_Tegra/source/public$ tar -xjf kernel_src.tbz2

2.构建NVIDIA内核

l 安装预装软件

sudo apt install build-essential bc

安装L4T工具链

http://releases.linaro.org/components/toolchain/binaries/latest-7/

l 工具链包含以下组件:

- GCC版本:7.5.0

- Binutils版本:2.28

- Glibc版本:2.25

# 下载和解压工具链

wget http://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86-64_aarch64-linux-gnu.tar.xz

sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86-64_aarch64-linux-gnu.tar.xz -C /opt

# 修改环境变量

vim  ~/.bashrc

export PATH=/opt/gcc-linaro-7.5.0-2019.12-x86-64_aarch64-linux-gnu/bin/:$PATH

source ~/.bashrc

导出相关环境变量

# 仅当前终端有效

export LOCALVERSION=-tegra

export CROSS_COMPILE=aarch64-linux-gnu-

其中export命令用来定义环境变量。上面的操作主要用来配置交叉编译环境。

创建.config 文件,配置你的内核,执行下面的命令。

cd kernel/kernel-4.9

make ARCH=arm64 tegra_defconfig

3. 编译内核

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8

071a4896c21e66979064250ec6006913.png

编译得到的内核为arch/arm64/boot/Image

wx_article_20200715140511_tQYocd.jpg

wx_article_20200715140511_b18rpY.jpg

4. 安装Linux_for_Tegra

烧录内核

1.下载L4T Driver Package (BSP)

l 点击

https://developer.nvidia.com/embedded/dlc/r32-3-1_Release_v1.0/t210ref_release_aarch64/Tegra210_Linux_R32.3.1_aarch64.tbz2

下载L4T Driver Package (BSP)

l 解压文件

lhy@lhy-desktop:~/Downloads$ sudo tar -xjf Tegra_Linux_Sample-Root-Filesystem_R32.2.1_aarch64.tbz2 -C Linux_for_Tegra/rootfs

lhy@lhy-desktop:~/Downloads$ cd Linux_for_Tegra/

lhy@lhy-desktop:~/Downloads/Linux_for_Tegra$ sudo ./apply_binaries.sh

2. 将BSP软件烧录到jetson nano module主板

使jetson nano module进入recovery模式,接上usb到ubuntu 主机

lsusb

Bus 001 Device 057: ID 0955:7f21 NVidia Corp.

根据board执行烧录命令

sudo ./flash.sh jetson-nano-emmc mmcblk0p1

每一块板对应的配置文件

wx_article_20200715140512_GNSBH0.jpg

3. 覆盖L4T Driver Package (BSP) Sources编译结果

cd kernel/kernel-4.9/

# 内核

cp kernel/kernel-4.9/arch/arm64/boot/Image Linux_for_Tegra/kernel/Image

# 设备树

cp arch/arm64/boot/Image ../../../Linux_for_Tegra/kernel/Image

# 内核模块

sudo make ARCH=arm64 modules_install INSTALL_MOD_PATH=../../../Linux_for_Tegra/rootfs/

在Jetson Nano上直接编译内核

将public_sources.tbz2复制到nano板上并解压。

1.编译内核

$ cd ~/kernel/kernel-4.9

$ zcat /proc/config.gz > .config

# Prepare the kernel build

$ make prepare

$ make modules_prepare

# Compile kernel image and kernel modules

$ time make -j5 Image

$ time make -j5 modules

2.安装内核与内核模块

# Install modules and kernel image

$ sudo make modules_install

$ sudo cp arch/arm64/boot/Image /boot/Image

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐