当前位置:   article > 正文

TX1-AUVIDEA-J130 刷驱动_gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.

gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz在哪里下载

资源下载:

下载auvidea-j130 L4T (linux for Tegra)源码:

https://github.com/InES-HPMM/linux-l4t/tree/hdmi2csi/l4t-r24-2.1-auvideaj130

JetPack 包:

https://developer.nvidia.com/embedded/dlc/jetpack-l4t-3_0

toolchain 交叉编译工具,包含aarch64-Linux-gnuarm-linux-gnueabihf两个编译器,在linaro官网可以下载:

https://www.linaro.org/downloads/

在下面地址有历史版本的工具:

https://releases.linaro.org/components/toolchain/binaries/

这里下载了gcc-linaro-5.4.1-2017.05 版本,如下:

v硬件准备:

1. 装有Ubuntu14.04 的64位系统的PC电脑(或虚拟机里安装)

2. Jetson TX1 嵌入板

3. micro-usb 主机和嵌入板子连接线

编译Jetson Tagra X1源码

1. 创建工作目录

在家目录下创建JetPack-L4T-3.0文件夹

mkdir -p /home/$USER/JetPack-L4T-3.0

并将下载的JetPack包移动到上面创建的目录里:

mv JetPack-L4T-3.0-linux-x64.run /home/$USER/JetPack-L4T-3.0/

设置 DEVDIR路径:

export DEVDIR=/home/$USER/JetPack-L4T-3.0

2. 利用JetPack包下载文件系统和操作系统及驱动

设置JetPack文件权限并保证能够执行:

cd /home/$USER/JetPack-L4T-3.0

chmod +x JetPack-L4T-3.0-linux-x64.run

安装 Jetpack,下载内核镜像和驱动,这一步不执行刷机

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

下载完成后会在$DEVDIR目录下生成如下文件及文件夹(画红框部分)

其中最重要的部分是在64_TX1/Linux_for_tegra_64_tx1下, 包括bootloader、kernel文件夹(kernel里的文件可以用已经预编译的文件替换,下面的操作过程主要就是编译新的kernel文件,也及适合J130的包含HDMI2CSI驱动的内核文件,并替换旧kernel文件,使系统有HDMI驱动)

3. 准备auvidea-j130编译源码

解压适用于auvidea-j130的内核源码:

这里我的源码路径为:

/home/$USER/JetTX1/linux-l4t-hdmi2csi-l4t-r24-2.1-auvideaj130

设置源码路径:

export KERNEL_SOURCE=/home/$USER/JetTX1/linux-l4t-hdmi2csi-l4t-r24-2.1-auvideaj130

4. 安装toolchain交叉编译工具

这里两个toolchain编译工具在/home/$USER/JetTX1 目录下(如上图),cd到/home/$USER/JetTX1目录,执行下面命令。

sudo mkdir /opt/linaro

sudo chmod -R 775 /opt/linaro

sudo chown -R $USER /opt/linaro

cp gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz /opt/linaro

cp gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz /opt/linaro

cd /opt/linaro/

tar -xf gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

tar -xf gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz

 

5. 设置编译auvidea-j130的内核的编译环境(以下命令应都在一个终端下完成,如此可保证export 设置的路径及变量有效)

将目录切换到源码路径下:

cd $KERNEL_SOURCE

mkdir -p $DEVDIR/images/modules mkdir -p $DEVDIR/images/packages export CROSS_COMPILE=/opt/linaro/gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux- gnu/bin/aarch64-linux-gnu- export CROSS32CC=/opt/linaro/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc export KERNEL_MODULES_OUT=$DEVDIR/images/modules export ARCH=arm64

6. 清理内核和配置:

make mrproper

7. 配置内核编译条件:

make tegra21_defconfig(编译HDMI2CSI模块要使用 make tegra21_hdmi2csi_defconfig)

8. 编译内核(kernel)、设备树(device tree)和模块(modules)

make zImage

make dtbs

make modules (编译tc358840.ko,HDMI2CSI模块的驱动文件)

make modules_install INSTALL_MOD_PATH=$KERNEL_MODULES_OUT

9. 将编译好的文件拷贝

拷贝image文件

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

拷贝dtb文件

mkdir -p $DEVDIR/images/dtb

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

拷贝 设备树(Device Tree文件,DTC)

cp scripts/dtc/dtc $DEVDIR/images/dtc

 

10.创建 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

压缩模块到kernel_supplements.tbz2 压缩包

cd $DEVDIR/images/modules/

tar -cjf kernel_supplements.tbz2 *

移动 kernel_supplements.tbz2压缩包到 $DEVDIR/images/packages目录

mv kernel_supplements.tbz2 $DEVDIR/images/packages

 

11. 创建kernel_headers.tbz2压缩包,这个也是Jetpack需要的。

cd $DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/kernel

目前当前目录下文件如下:

解压原有kernel_headers.tbz2

tar -xf kernel_headers.tbz2

压缩成kernel_headers_custom.tbz2文件

tar -cjf kernel_headers_custom.tbz2 linux-headers-$KERNEL_MODULES_NAME-tegra

mv kernel_headers_custom.tbz2 $DEVDIR/images/packages

rm -rf linux-headers-$KERNEL_MODULES_NAME-tegra

12. 备份之前利用Jetpack下载的镜像和内核包

mkdir -p $DEVDIR/images/packages-backup

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

 

13. 将新的kernel文件覆盖原有文件,以Jetpack刷机

cd $DEVDIR/images

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

cp -rf Image zImage packages/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

14. 运行apply_binaries.sh,生成镜像用于刷机

cd $DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/

sudo ./apply_binaries.sh

执行成功如下:

用Jetpack刷机

You can flash your image with Jetpack now instead of using the scripts directly, however this takes time (around 10min) because we will need jetpack generating the system.img again

1. Backup your system.img

cd $DEVDIR/64_TX1/Linux_for_Tegra_64_tx1/bootloader/

mv system.img.raw system.img $DEVDIR/images/packages-backup/(如果没有就不用删除)

 

2. Just run Jetpack as the first time that you install it:

 

cd $DEVDIR(~/JetPack-L4T-3.0)

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

 

 

 

 

 

 

 

 

 

 

 

 

 

测试命令:

加载驱动:

sudo modprobe tc358840

捕捉1080p60 视频

gst-launch-1.0 v4l2src ! 'video/x-raw, width=1920, height=1080, framerate=60/1, format=UYVY' ! nvvidconv ! 'video/x-raw(memory:NVMM), width=1920, height=1080, framerate=60/1, format=I420' ! nvoverlaysink sync=false

 

 

错误集锦:

1. 解压时文件损坏

在make image时:

在make zImage时:

在make modules时:

 

参考:

1. https://github.com/InES-HPMM/linux-l4t/wiki/auvideaJ130

2. https://github.com/InES-HPMM/linux-l4t/wiki/customKernelCompilation

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

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/475431
推荐阅读
相关标签
  

闽ICP备14008679号