Jetson TX1内核kernel编译与烧写

2023-05-16

Data: 2017.09.13

Author: cjh

Theme: Jetson TX1内核kernel编译与烧写

PS   :本人用的JetPack版本为3.0

 

1.      Getting bootloader and kernel

本文内核kernel源码是通过JetPack进行安装的,如果没安装的请首先下载JetPack。

通过运行以下命令可获得源码

cd/home/$USER/JetPack-L4T-3.0/64_TX1/Linux_for_Tegra_64_tx1

./source_sync.sh

 

下载源码需要时间

Use: source_sync.sh [options]

Available general options are,

    -h     :     help

    -e     : exit on sync error

    -d DIR : root of source is DIR

默认情况下会下载所有的源码

如果用到了一个或多个以下选项,则仅下载指定的源。

 

    -k [TAG]: Download kernel source and optionally sync to TAG

    -u [TAG]: Download u-boot source and optionally sync to TAG

 

PS:DEVDIR为JetPack的安装目录,可用export DEVDIR = /    添加临时环境变量

 

cd $ DEVDIR / 64_TX1 /Linux_for_Tegra_64_tx1 / sources / kernel_source

git branch -a

git checkout l4t / l4t-r24.2

 

cd $ DEVDIR / 64_TX1 /Linux_for_Tegra_64_tx1 / sources / u-boot_source

git branch -a

git checkout l4t / l4t-r24.2

 

此时源码下载完成

 

2.      安装Toolchain

下载:

5.3-2016.02 for 64bits PC - 64bits ARM

5.3-2016.02 for 64bits PC - 32bits ARM

 

安装:

sudo mkdir /opt/linaro

sudo chmod -R 775 /opt/linaro

sudo chown -R $USER /opt/linaro

cpgcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz /opt/linaro

cpgcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz /opt/linaro

cd /opt/linaro/

tar -xfgcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz

tar -xfgcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz

 

PS:USER为当前用户

 

3.      内核编译

1) 指定工具链的路径:

mkdir -p $DEVDIR/images/modules

mkdir -p $DEVDIR/images/packages

export CROSS_COMPILE=/opt/linaro/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

exportCROSS32CC=/opt/linaro/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

exportKERNEL_MODULES_OUT=$DEVDIR/images/modules

export ARCH=arm64

 

2) 清理内核和配置

cd$DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/sources/kernel_source/

make mrproper

 

PS:为避免错误

    error: r7 cannot beused in asm here

error: logical not is only applied to the left hand side ofcomparison

分别修改一下代码:

 

目录:kernel_source/arch/arm64/kernel/vdso32/Makefile

 

GCOV_PROFILE := n

 

注释:ccflags-y := -shared -fPIC-fno-common -fno-builtin -march=armv7-a

增加:ccflags-y := -shared -fPIC-fomit-frame-pointer -fno-common -fno-builtin -march=armv7-a

 ccflags-y += -nostdlib -Wl,-soname=linux-vdso32.so.1\

                $(call cc-ldoption,-Wl$(comma)--hash-style=sysv)

 asflags-y := -D__VDSO32__ -s

 

目录:kernel_source/drivers/platform/tegra/tegra21_clocks.c

 

static void tegra21_cpu_clk_init(struct clk*c)

 {

注释:       c->state = (!is_lp_cluster() ==(c->u.cpu.mode == MODE_G)) ? ON : OFF;

增加:       c->state = ((!is_lp_cluster()) ==(c->u.cpu.mode == MODE_G)) ? ON : OFF;

 }

 

 static int tegra21_cpu_clk_enable(struct clk*c)

 

3) 配置你的内核

make tegra21_defconfig

make menuconfig

 

PS:错误解决

*** Unable to find thencurses libraries or the

*** required headerfiles.

*** 'make menuconfig'requires the ncurses libraries.

***

*** Install ncurses(ncurses-devel) and try again.

方法:sudo apt-get installlibncurses5-dev

 

4) 编译内核,设备树和模块

make zImage

make dtbs

make modules

make modules_installINSTALL_MOD_PATH=$KERNEL_MODULES_OUT

 

PS:错误解决

GEN   config-host.h

     LEX convert-dtsv0-lexer.lex.c

make[1]: flex:命令未找到

     BISON dtc-parser.tab.c

make[1]: bison:命令未找到

     LEX dtc-lexer.lex.c

make[1]: flex:命令未找到

CHK version_gen.h

方法:sudo apt-get install flex

     sudo apt-get install bison

 

5) 后期准备,修改JetPack

将您的二进制文件保存在images目录中

cp arch/arm64/boot/Imagearch/arm64/boot/zImage $DEVDIR/images/

用kernel模块创建kernel_supplements.tbz2,Jetpack需要这个包

cd $DEVDIR/images/modules/lib/modules/

ls .

使用modules目录的名称定义一个变量

export KERNEL_MODULES_NAME=3.10.96+

修复内核模块目录上的符号链接

cd$DEVDIR/images/modules/lib/modules/$KERNEL_MODULES_NAME

rm build source

创建tarball

cd $DEVDIR/images/modules/

tar -cjf kernel_supplements.tbz2 *

mv kernel_supplements.tbz2$DEVDIR/images/packages

除了创建模块和内核映像之外,还需要再次创建您的kernel_headers.tbz2文件(Jetpack需要)。 默认情况下,当您修补内核代码时,您不会检查内核中的更改将为发行版本添加一个后缀(例如,检查ls $ DEVDIR / images / modules / lib / modules /)。因为这个特定的原因,你需要生成你的头文件tarball再次更改它的版本。

cd $DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/kernel

tar -xf kernel_headers.tbz2

tar -cjf kernel_headers_custom.tbz2linux-headers-$KERNEL_MODULES_NAME

mv kernel_headers_custom.tbz2$DEVDIR/images/packages

rm -rf linux-headers-$KERNEL_MODULES_NAME

 

PS:KERNEL_MODULES_NAME这个后缀大家见机修改

 

创建dtb目录

mkdir -p $DEVDIR/images/dtb

cp$DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/sources/kernel_source/arch/arm64/boot/dts/*.dtb$DEVDIR/images/dtb/

 

复制设备树编译器(DTC)

cp$DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/sources/kernel_source/scripts/dtc/dtc$DEVDIR/images/dtc

 

创建Jetpack中包含的图像和软件包的备份

mkdir -p $DEVDIR/images/packages-backup

cp -rf$DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/kernel/* $DEVDIR/images/packages-backup

 

最后使用自己的图像覆盖默认图像,以使用jetpack安装和引导它们

cd $ DEVDIR / images

cd $DEVDIR/images

rm -rf $DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/kernel/dtb

cp -rf Image zImagepackages/kernel_supplements.tbz2 dtb/ dtc$DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/kernel/

cp -rf packages/kernel_headers_custom.tbz2$DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/kernel/kernel_headers.tbz2

 

运行应用程序脚本以生成要闪存的映像

cd $DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/

sudo ./apply_binaries.sh

 

输出:

Using rootfs directory of:/home/dsoto/devdirs/tegra/Jetpack/TX1/Linux_for_Tegra_tx1/rootfs

Extracting the NVIDIA user space componentsto /home/dsoto/devdirs/tegra/Jetpack/TX1/Linux_for_Tegra_tx1/rootfs

Extracting the BSP test tools to/home/dsoto/devdirs/tegra/Jetpack/TX1/Linux_for_Tegra_tx1/rootfs

Extracting the NVIDIA gst test applicationsto /home/dsoto/devdirs/tegra/Jetpack/TX1/Linux_for_Tegra_tx1/rootfs

Extracting the configuration files for thesupplied root filesystem to/home/dsoto/devdirs/tegra/Jetpack/TX1/Linux_for_Tegra_tx1/rootfs

Creating a symbolic link nvgstplayerpointing to nvgstplayer-0.10

Creating a symbolic link nvgstcapturepointing to nvgstcapture-0.10

Adding symlink libcuda.so -->libcuda.so.1.1 in target rootfs

Adding symlink libGL.so --> libGL.so.1in target rootfs

Adding symlink libcuda.so -->tegra/libcuda.so in target rootfs

Adding symlink libEGL.so --> libEGL.so.1in target rootfs

Extracting the firmwares and kernel modulesto /home/dsoto/devdirs/tegra/Jetpack/TX1/Linux_for_Tegra_tx1/rootfs

Extracting the kernel headers to /usr/srcin target rootfs

Installing zImage into /boot in targetrootfs

Installing Image into /boot in targetrootfs

Installing the board *.dtb files into /bootin target rootfs

Success!

 

6) 从新刷机,修改TX1的kernel

您可以使用Jetpack直接刷新您的图像,而不是直接使用脚本,但这需要时间(约10分钟),因为我们将需要jetpack再次生成system.img

备份你的system.img

cd$DEVDIR/64_TX1/Linux_for_Tegra_tx1/bootloader/

mv system.img.raw system.img$DEVDIR/images/packages-backup/

 

只需运行Jetpack作为您首次安装它:

cd $DEVDIR

./JetPack-L4T-2.1-linux-x64.run

具体操作可详见刷机教程

 

PS:kernel是否更改可查看串口打印信息,Jetson TX1串口调试。

    Linuxversion 3.10.96-tegra (buildbrain@mobile-u64-1072) (gcc version 4.8.2 (GCC) )#1 SMP PREEMPT Wed Nov 9 19:42:57 PST 2016日期是否被修改


参考:

http://blog.csdn.net/mantis_1984/article/details/61616541

https://developer.ridgerun.com/wiki/index.php?title=Compiling_Tegra_X1_source_code

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetson TX1内核kernel编译与烧写 的相关文章

  • “undefined reference to“ 问题汇总及解决方法 ------非常非常好的一篇文章

    在实际编译代码的过程中 xff0c 我们经常会遇到 34 undefined reference to 34 的问题 xff0c 简单的可以轻易地解决 xff0c 但有些却隐藏得很深 xff0c 需要花费大量的时间去排查 工作中遇到了各色各
  • 为什么能抓到网站https传输的明文密码?------顺便说说“知乎”和“支付宝”的安全性对比

    在多数人看来 xff0c https是安全的 xff0c 因为https和secure http嘛 xff0c 真的是这样吗 xff1f 一些人认为 xff0c https是加密传输 xff0c 所以抓到包也没有用 xff0c 是密文的 真
  • VMware Ubuntu安装详细过程(非常靠谱)

    不是每一个程序员都必须玩过linux xff0c 只是博主觉得现在的很多服务器都是linux系统的 xff0c 而自己属于那种前端也搞 xff0c 后台也搞 xff0c 对框架搭建也感兴趣 xff0c 但是很多生产上的框架和工具都是安装在服
  • linux命令行无故换行的恼人问题

    在敲linux命令时 xff0c 明明本行远远没有满 xff0c 就自动换行了 xff0c 而且还覆盖 xff0c 颇为恼人 在网上找了很多地方 xff0c 也没有比较好的解决方法 xff0c 勉强忍受了一段时间 最近 xff0c 偶然看到
  • ZeroMQ“发布/订阅”模型的C++代码

    ZeroMQ环境的搭建就不说了 xff0c 之前已经说过 来看ZeroMQ的 发布 订阅 模型的C 43 43 代码 xff1a pub cpp代码为 xff1a include lt stdio h gt include lt stdli
  • CentOS7启动vncserver命令

    在CentOS7上 xff0c 使用yum安装vncserver xff0c 默认会安装tigerVNC xff0c 安装配置完成后 xff0c 启动vncserver的命令如下 xff08 通过systemctl启动 xff09 xff1
  • ubuntu安装cuda8.0+tensorflow+pytorch

    Data 2017 7 23 Author cjh 1 下载cuda8 0 https developer nvidia com cuda downloads 本人选择的是deb local xff0c 网上很多教程都是根据runfile
  • 【神经网络并行训练(上)】基于MapReduce的并行算法的实现

    前言 最近看了一些基于MapReduce的神经网络并行训练方面的论文 xff0c 老师让我自己去实现一下 xff0c 更深入的体会其中的原理 MapReduce是基于java语言的框架 xff0c 于是一开始想用java写深度学习代码 但是
  • dicom文件与bmp和jpg文件的相互转化

    前面工作需要 xff0c 将dicom医学文件转化为普通图像 xff0c 如bmp xff0c jpg等 xff0c 中间应用到了CxImage x64和dcmtk包 实现过程中 xff0c 遇到了不少麻烦 xff0c 现将相关过程分享如下
  • Caffe 安装OpenCV-2.4.13

    有一段时间没写博客了 xff0c 主要是有一段时间没弄Ubuntu的Caffe配置了 最近NVIDIA把驱动啥的都升级到了CUDA 8 0版本 xff0c 安装OpenCV的时候会出现版本不兼容的问题 相信大家的OpenCV安装包都是Git
  • Nginx配置 https 证书

    1 阿里云创建免费SSL证书 2 证书申请 3 填写相关信息执行下一步 4 云服务器ECS安全组开放443端口 安全 5 下载证书 这里选择的是Nginx 6 证书上传服务器 1 把证书存放在指定目录得到两个文件后缀为 key 一个是 pe
  • ubuntu16.04 装机3:安装xrdp, 远程界面化操作

    前言 xff1a 本文教程自己试过多次 xff0c 在ubuntu16 04上都安装成功了 但是有可能在ubuntu18上会有些问题 经同学推荐 xff0c 在ubuntu18上安装xrdp xff0c 可以参考 xff1a Ubuntu1
  • 对 pretext tasks 的理解

    在读一些自监督学习算法的时候 xff0c 遇到了pretext tasks这个术语 xff0c 所以对这个术语的含义做了下了解 pretext tasks 通常被翻译作 前置任务 或 代理任务 xff0c 有时也用 surrogate ta
  • ubuntu下中文文件名乱码

    windows下的中文文件名拷贝到ubuntu下面以后 xff0c 文件名直接变成乱码 xff0c 原因为windows下的文件名以GBK编码 xff0c 而Ubuntu下的文件 名为utf span class hljs subst sp
  • 树莓派3B+的基础配置

    一 文章背景 本文写于北京时间2019年11月13日 我前两天刚到杭州导师的实验室 xff0c 很多事情都还是一窍不通 方向是物联网相关 xff0c 最近在结合 物联网应用快速开发 从创意到原型 学习一些物联网的基础知识 xff0c 书中的
  • Centos在vm中设置网络环境、防火墙设置

    本次实践采用Centos 7 的操作系统 新建虚拟机选择安装文件这里就不多说了 xff0c 从选择好配置之后 xff0c 启动安装之前说起 1 添加网卡 在系统安装之前一定要设置下虚拟机的硬件配置 xff0c 在硬件设置中添加网卡 xff0
  • webpack优化打包速度(thread-loader)

    文档地址thread loader webpack 中文文档 v4 15 1 可配选项 use loader 34 thread loader 34 有同样配置的 loader 会共享一个 worker 池 worker pool opti
  • ubuntu14.04如何安装英伟达显卡驱动

    Data 2017 07 23 Author cjh 1 驱动下载 http www geforce cn drivers 手动选择对应的驱动进行下载 2 xff0e 安装 将下载好的驱动放到 home user目录下 xff0c 添加驱动
  • 推荐三大文献检索下载网站,超级实用!重点是免费

    据说 xff0c 科研院校每年因购买数据库就要花掉几百万 xff0c 而且现在价格越来越贵 xff0c 于是很多高校开始不再购买部分数据库 xff0c 这可真苦了研究生们 下面推荐三个中外文献免费的网站 xff0c 觉得有用就拿走吧 1 掌
  • NLP大神推荐的机器学习入门书单(附大量百度网盘电子书)

    https blog csdn net surgent777 article details 53895048 biz id 61 102 amp utm term 61 python E8 87 AA E7 84 B6 E8 AF AD

随机推荐

  • softmax(a,axis=0)的用法理解 总结

    对于3维度数组 总结axis 61 0 1 2 axis 61 0 沿着 axis 61 0方向 可以认为是时间的方向 取每个单元对应元素进行计算softmax 通俗理解就是今天8点钟的对应行对应列的元素a 2 0 0 与昨天8点钟的对应行
  • No module named ‘tensorflow_hub‘

    发现先导入pip install tensorflow datasets 再执行pip installl tensorflow hub就可以了 https blog csdn net qq 37051669 article details
  • 莫烦老师的tensorflow降级方法

    tf2 0以上版本的 xff0c 开始加两行 import tensorflow compat v1 as tf tf disable v2 behavior https blog csdn net AI future article de
  • tensorflow对应的python版本清单

    https tensorflow google cn install source windows cpu
  • RandomForestClassifier参数min_samples_leaf和min_samples_split理解

    而min samples split限定 xff0c 个结点必须要包含 少min samples split个训练样本 xff0c 这个结点才允许 被分 xff0c 否则分 就不会发 min samples leaf限定 xff0c 个结点
  • UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb0 in position 0: invalid start byte

    UnicodeDecodeError utf 8 codec can t decode byte 0xb0 in position 0 invalid start byte
  • ubuntu18.04子网掩码 - 255.255.255.0 -判断网络是否在同一网段

    ubuntu18 04子网掩码 255 255 255 0 优选网
  • 两个电脑面对面ping 不通,都是用的wifi网络,执行traceroute报错 !H 主机不可达

    traceroute 192 168 106 81 traceroute to 192 168 106 81 192 168 106 81 64 hops max 1 192 168 106 101 53 267ms H 0 004ms H
  • 2018届校招提前批大华面经

    大华提前批面试 xff1a 一共三面 xff0c 一面技术面 xff0c 二面技术面 xff0c 三面HR面 面试岗位 xff1a 算法优化 一面 xff1a 本人这次人品比较棒 xff0c 一面两个人聊得很high xff0c 主要聊了简
  • SVN commit,update用法

    您是否有過這樣子的經驗 在編修檔案的過程中 尤其是在撰寫程式檔 突然改爛了 而想說 如果我有辦法知道剛才改了什麼地方有多好 或是在一份大作業或者是專案的情況下 須要多個人一同改一份檔案 總須事先說好誰要改哪個檔案 改的時候別人都不能動 以免
  • ORACLE EXP命令

    本文对Oracle数据的导入导出 imp exp 两个命令进行了介绍 并对其相应的参数进行了说明 然后通过一些示例进行演练 加深理解 文章最后对运用这两个命令可能出现的问题 如权限不够 不同oracle版本 进行了探讨 并提出了相应的解决方
  • unzip命令用法

    我使用过的Linux 命令之unzip 解压zip 文件 本文链接 xff1a http codingstandards javaeye com blog 792040 xff08 转载请注明出处 xff09 用途说明 zip 文件是一种常
  • System.in.read()的用法

    System in read 的用法 2007 10 25 22 00 24 分类 xff1a 默认分类 标签 xff1a 字号 大 中 小 订阅 用读取键盘输入必须构建 1 输入流 System in 2 字符输入流 InputStrea
  • django中的models的常用字段及属性

    django 模型models 常用字段 1 models AutoField 自增列 61 int 11 如果没有的话 xff0c 默认会生成一个名称为 id 的列 如果要显式的自定义一个自增列 xff0c 必须设置primary key
  • Ubuntu 20.04本地源使用(用apt-get 安装本地包)

    系统版本 xff1a Ubuntu 20 04 一 新建一个文件夹 xff0c 用于存放下载的某个 deb包 xff08 例 xff1a 2048 xff09 Tips 相关命令 xff1a mkdir 文件名 二 把本地的 deb包移动至
  • C++程序员经常问的11个问题

    下面的这些要点是对所有的C 43 43 程序员都适用的 我之所以说它们是最重要的 xff0c 是因为这些要点中提到的是你通常在C 43 43 书中或网站上无法找到的 如 xff1a 指向成员的指针 xff0c 这是许多资料中都不愿提到的地方
  • Ubuntu配置任意版本的apt-get镜像

    我们知道 xff0c 迄今为止 xff0c Ubuntu已有多个发行版 xff0c 如11 04 11 10 xff0c 以至于现在最新的16 而我们平常通过apt get来安装软件 xff0c 如果OS版本不同 xff0c 那么镜像源的配
  • 在APK中获取鸿蒙应用Ability信息

    Android开发工具箱大概在版本2 2 0 xff08 2021 06 10 xff09 就已经支持查看鸿蒙系统信息以及鸿蒙应用信息了 这里我讲一下Android开发工具箱是如何在Android应用中 xff08 APK xff09 获取
  • Maven

    Maven Maven 翻译为 34 专家 34 内行 Maven 是一个项目管理工具 xff0c 可以对 Java 项目进行构建 依赖管理 它包含了一个项目对象模型 POM Project Object Model 一组标准集合 xff0
  • Jetson TX1内核kernel编译与烧写

    Data 2017 09 13 Author cjh Theme Jetson TX1内核kernel编译与烧写 PS xff1a 本人用的JetPack版本为3 0 1 Getting bootloader and kernel 本文内核