在编译内核和设备树之前,首先默认已经安装了JetPack,如果没有安装,请参考其它资料进行安装。

1、首先需要下载编译内核需要用到的工具链,通过下面的链接下载。

https://developer.nvidia.com/embedded/dlc/l4t-gcc-toolchain-64-bit-28-2-ga

2、安装工具链,通过下面的命令来安装工具链。

sudo mkdir /opt/l4t-gcc-toolchain-64-bit-28-2.1
sudo chown $USER:$USER /opt/l4t-gcc-toolchain-64-bit-28-2.1
cd /opt/l4t-gcc-toolchain-64-bit-28-2.1

首先在文件系统的opt文件夹下创建一个l4t-gcc-toolchain-64-bit-28-2.1文件夹,接下来设置文件夹的拥有者,其中$USER为你的用户名。然后进入到l4t-gcc-toolchain-64-bit-28-2.1文件夹下。

然后通过下面的命令将下载的工具链复制到l4t-gcc-toolchain-64-bit-28-2.1文件夹下

mv ~/Downloads/gcc-4.8.5-aarch64.tgz ./

并用下面的命令解压工具链。

tar -xvf gcc-4.8.5-aarch64.tgz

3、下载内核源码,通过下面的链接下载。

https://developer.nvidia.com/embedded/dlc/sources-r2821#Getting_kernel

然后执行下面的命令。

tar -xf public_sources.tbz2
cd public_release/
cp kernel_src.tbz2 $HOME/JetPack-L4T-3.2.1/64_TX2/Linux_for_Tegra/sources
cd $HOME/JetPack-L4T-3.2.1/64_TX2/Linux_for_Tegra/sources
tar -xf kernel_src.tbz2

首先解压public_sources.tbz2,之后将kernel_src.tbz2复制到sources文件夹下,并解压kernel_src.tbz2,其中$HOME为JetPack的安装目录。

4、接下来就进入内核与设备树编译的主题,执行下面的命令。

export DEVDIR=$HOME/JetPack-L4T-3.2.1/64_TX2/Linux_for_Tegra
mkdir -p $DEVDIR/images/modules
mkdir -p $DEVDIR/images/packages
mkdir -p $DEVDIR/images/dtb
export CROSS_COMPILE=/opt/l4t-gcc-toolchain-64-bit-28-2.1/install/bin/aarch64-unknown-linux-gnu-
export KERNEL_MODULES_OUT=$DEVDIR/images/modules
export TEGRA_KERNEL_OUT=$DEVDIR/images
export ARCH=arm64

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

之后通过下面的命令清楚内核和配置

cd $DEVDIR/sources/kernel/kernel-4.4
make mrproper

接下来需要配置你的内核,执行下面的命令。

make O=$TEGRA_KERNEL_OUT tegra18_defconfig
make O=$TEGRA_KERNEL_OUT menuconfig

这两条命令会设置默认的配置,并打开一个设置菜单,你可以改变设置,如果不需要修改则直接退出。

注意:你需要使用ncurses才能使用上面的命令。如果有任何问题,请安装以下软件包。

sudo apt-get install libncurses5 libncurses5-dev

5、下面就是编译内核、设备树和模块,只想下面的命令。

make O=$TEGRA_KERNEL_OUT zImage
make O=$TEGRA_KERNEL_OUT dtbs
make O=$TEGRA_KERNEL_OUT modules
make O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=$KERNEL_MODULES_OUT

执行完上面的命令之后,内核的镜像在下面的文件夹下

$DEVDIR/images/arch/arm64/boot/Image

设备树在下面的文件夹下

$DEVDIR/images/arch/arm64/boot/dts/*.dtb

6、这一步需要创建JetPack需要的kernel_supplements.tbz2压缩包

首先执行下面的命令。

cd $DEVDIR/images/modules/lib/modules/
ls .

接下来定义下面的变量。

export KERNEL_MODULES_NAME=4.4.38+

然后执行下面的命令

cd $DEVDIR/images/modules/lib/modules/$KERNEL_MODULES_NAME
rm build source

最后创建压缩包

cd $DEVDIR/images/modules/
tar -cjf kernel_supplements.tbz2 *
mv kernel_supplements.tbz2 $DEVDIR/images/packages

7、除了上面的操作,还需要创建一个kernel_headers.tbz2文件,执行下面的命令

cd $DEVDIR/kernel
tar -xf kernel_headers.tbz2

然后查找头文件夹的名字,如下

ls | grep linux-headers
linux-headers-4.4.38-tegra

定义变量

export KERNEL_HEADERS_NAME=linux-headers-4.4.38-tegra

重定义文件夹

mv $KERNEL_HEADERS_NAME linux-headers-$KERNEL_MODULES_NAME
tar -cjf kernel_headers_custom.tbz2 linux-headers-$KERNEL_MODULES_NAME
mv kernel_headers_custom.tbz2 $DEVDIR/images/packages
rm -rf linux-headers-$KERNEL_MODULES_NAME

8、创建JetPack中文件的备份。

mkdir -p $DEVDIR/images/packages-backup cp -rf $DEVDIR/kernel/* $DEVDIR/images/packages-backup

9、复制设备树文件

cp $DEVDIR/images/arch/arm64/boot/dts/tegra186-quill-p3310-1000-c03-00-base.dtb $DEVDIR/kernel/dtb

10、覆盖掉JetPack中默认的镜像文件

cd $DEVDIR/images
cp -rf arch/arm64/boot/Image arch/arm64/boot/zImage packages/kernel_supplements.tbz2 $DEVDIR/kernel/
cp -rf packages/kernel_headers_custom.tbz2 $DEVDIR/kernel/kernel_headers.tbz2

11、执行applybinaries脚本来生成用来烧写的镜像文件

cd $DEVDIR/
sudo ./apply_binaries.sh

12、经过上面的步骤就编译生成了内核、模块和设备树的文件,下面就是向TX2烧写的过程了。

a. 首先进入recovery模式。

b. 复制dtb文件从Linux_for_Tegra/images/arch/arm64/boot/dts 文件夹到 Linux_for_Tegra/kernel/dtb文件夹。

c. 复制Linux_for_Tegra/images/arch/arm64/boot/ 文件夹下的ImagezImage Linux_for_Tegra/kernel 文件夹。

d. 复制模块从Linux_for_Tegra/images/modules/lib/modules/4.4.38文件夹到Linux_for_Tegra/rootfs/lib/modules/4.4.38 文件夹。

e. 进入$DEVDIR文件夹,并执行下面的命令。

sudo ./flash.sh -r -d kernel/dtb/tegra186-quill-p3310-1000-c03-00-base.dtb -K kernel/Image jetson-tx2 mmcblk0p1

f. 执行下面的命令来安装dtb文件。

cd $DEVDIR
sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk1p1

至此,我们完成了TX2上内核、模块和DTB的更新,重启TX2就行了。

如何为英伟达TX2编译内核和设备树相关推荐

  1. 英伟达首次开源内核、GitHub 强制用户身份验证、Google 悬赏 150 万美元找安卓漏洞 | 开源月报 Vol. 06...

    「WeOpen Insight」是腾源会推出的「开源趋势与开源洞见」内容专栏,不定期为读者呈现开源圈内的第一手快讯.优质工具盘点等,洞察开源技术发展的风向标,预见未来趋势. 1 开源企业新闻 1.NV ...

  2. 英伟达TX2烧录系统_英伟达的DPU,是想在数据中心奇袭英特尔?

    热点追踪 / 深度探讨 / 实地探访 / 商务合作 最近几年,经常关注科技圈的朋友们总会发现,每次遇到厂商有重大发布,就总能看到"颠覆"."极致"." ...

  3. 英伟达TX2烧录系统_99美元AI计算机:英伟达推出嵌入式电脑Jetson Nano

    3月19日,由英伟达举办的2019 GTC(GPU技术大会)在美国加州圣何塞举行,英伟达CEO黄仁勋发表主题演讲,正式发布了机器人开发者工具箱Jetson Nano,可以为机器人设计引入AI算力. 黄 ...

  4. Win10+Vmvare+Ubuntu16.04lts的主机为英伟达TX2重装Ubuntu18.04操作系统

    一开始只是随便看了下网上的教程,便开始刷机,一直刷机一直报错,然后谷歌找问题,发现均解决不了. 原因: 因为之前误以为是需要将我的虚拟机的系统移植到tx2,就饶了好大的圈.我的虚拟机是ubuntu18 ...

  5. 英伟达 TX2 蓝牙自动连接蓝牙 设备

    1. sudo apt-get install blueman bluez* 2. vi /etc/bluetooth/main.conf 去掉行[Policy]和AutoEnable前的注释,将Au ...

  6. 被Linux之父骂醒?英伟达破天荒开源GPU内核驱动,网友:活久见

    终于等到了这一天:英伟达开源了他们的 Linux GPU 内核驱动. 「英伟达是我们遇到的硬件厂商中最麻烦的一个.」这是 Linux 内核总设计师 Linus Torvalds 十年前说过的一句原话. ...

  7. 英伟达Nvidia TX1 TX2 串口通信方法

    Nvidia TX1 TX2 串口通信方法 英伟达TX2串口 串口硬件 板子串口描述 硬件连接方式 测试工具及方法 c++通信代码 英伟达TX2串口 使用英伟达嵌入式板进行 串口通信 . 串口硬件 串 ...

  8. 英伟达一大波硬件来袭:今日GTC发布专业GPU与DPU,为收购ARM将在英国建超算

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 英伟达今天在线上召开了2020年GPU技术大会(GTC).黄仁勋又一次在自家厨房发布了多款新硬件: 全新的数据数据处理单元(DPU).低价 ...

  9. 英特尔AI芯片首次商用交货!推理性能3.7倍于英伟达T4,年贡献245亿涨250%

    李根 发自 旧金山  量子位 报道 | 公众号 QbitAI AI豪赌出业绩,产品启动商用--性能"吊打"友商. 今天(11月13日)在年度AI峰会上,老牌芯片霸主英特尔,交上最新 ...

最新文章

  1. AS3中的序列化与反序列化
  2. LinkedHashMap 实现缓存(LRU、FIFO、weakhashMap)
  3. oracle数据库操作
  4. 全网最详细的Sentinel安装教程,没有之一!谁反对?(Linux+windows)
  5. 智能技术可以帮助解决人口老龄化问题吗?
  6. c#winform演练 ktv项目 在dataGridView中显示歌曲列表
  7. 如果使用Node.js不存在该如何创建目录?
  8. 安装 tensorflow 环境
  9. scara机器人用户坐标系标定与工具坐标(TCP)标定
  10. Git报错remote: error: hook declined to update refs/heads/feature/XXX
  11. BindingResult总结以及注意事项
  12. 服务器有时候显示美国,美国服务器不通的情况解决方法
  13. DL notes 05:深度学习相关的优化基础(入门级)
  14. 测试员如何面对30岁后的下坡路,伤不起的年龄,职业道路何去何从?
  15. 蓄水池采样算法的python实现_蓄水池抽样算法(Reservoir Sampling)
  16. 关于一些像是哲学的思考???
  17. python实现视频播放器_对目前的视频播放器不满意?教你用Python做一个视频播放器...
  18. PLM系统的技术现状和发展趋势
  19. 一套自动化无纸办公系统(OA+审批流)源码:带数据字典
  20. 取数组中最大值和最小值

热门文章

  1. 计算机408考研先导课---C语言难点2
  2. 2021.1.9每日复习 75.颜色分类(复习快速排序)+ 77.组合(回溯算法)
  3. 隆云通水质ORP传感器
  4. 张量网络系列(TT分解 MPS)
  5. 用Java写微信支付Jsp进行下单操作
  6. Genymotion下载安装及Android模拟器下载安装
  7. Python Altair统计图表快速入门
  8. ssm+Vue计算机毕业设计综合售楼系统(程序+LW文档)
  9. 广东工贸职业技术学院计算机系在哪个校区,广东工贸职业技术学院地址在哪里...
  10. 基于Python的实时聊天室开发