基于NVIDA-JETSON 平台MIPI-CSI2摄像头驱动开发手册

JETSON 平台驱动开发手册

以NX-devkit-R32.4.3为例

  1. 开发环境搭建

本章节主要介绍如何烧录设备,编译代码。

    1. 介绍用到的文件

  1. gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz

交叉编译工具

  1. public_sources.tbz2

源码:解压后可以得到kenel内核代码以及hardware设备树文件和.sh编译脚本

(暂时没有使用nvidia的脚步编译,下面会提到现在用的编译方法)

  1. Tegra_Linux_Sample-Root-Filesystem_R32.4.3_aarch64.tbz2

和Tegra186_Linux_R32.4.3_aarch64.tbz2

文件系统和刷机包

  1. sdkmanager_1.2.0-6733_amd64.deb

Nvidia的刷机工具

    1. 刷机

刷机时需要连接usb线并进入recover模式,按住recover键并按一下reset键就能进入该模式。

      1. 通过sdkmanager进行刷机

在终端输入命令“sudo dpkg -i sdkmanager_1.2.0-6733_amd64.deb”安装sdkmanager程序。输入完成后输入sdkmanager就能打开该程序。

输入nVidia官网注册的用户名和密码:

选择对应的硬件下载,下载完成后系统会自动刷机。完成刷机后你会在”Target HWimage folder”路径下生产“Linux_for_Tegra”文件夹(后面会用到,就是通过运行该文件下的flash.sh脚本进行刷机的,修改驱动和设备树后生产的文件,也是替换到这个文件夹的对应目录下)

      1. 通过文件系统和刷机包来刷机

参考这个quick_start_guide文档

    1. 源码编译
      1. 准备相关文件

把1.1章节中提到的编译工具和源码解压到工作目录中,(例如:可以在home目录下新建“NX-R32.4.3”的目录,在后面称其为root目录)

并在该目录下新建一个“out_kernel”的目录(用来存放编译生成的文件)

并且把这个.sh文件复制到root目录

      1. Git管理

Git管理有一下几个好处:

  1. 便于生产patch文件
  2. 便于在驱动开发过程中管理代码修改
  3. 由于编译代码时间较长,而且tx2、Xavier、NX等平台源码是通用的。用git管理后,如果要做新的驱动,直接回退到源码版本就可以了

Git命令:

  1. git init
  2. git config --global user.email email
  3. git config --global user.name “name”
  4. git add .
  5. git commit --signoff
  6. git format-patch -1
      1. 设置环境变量

打开终端,执行命令:source jetson.sh

注意:

      1. 要修改对应的路径:编译器的路径和kernel编译生成文件的路径
      2. 每次在新的终端编译时,要重新执行该命令

      1. 开始编译

在<root>/kernel/kernel-4.9的目录下执行以下命令

编译设备树: make O=$TEGRA_KERNEL_OUT dtbs

编译kernel: make O=$TEGRA_KERNEL_OUT zImage

make O=$TEGRA_KERNEL_OUT tegra_defconfig

    make O=$TEGRA_KERNEL_OUT zImage

    make O=$TEGRA_KERNEL_OUT dtbs

我们会用到的文件是

<root>/out_kernel/arch/arm64/boot/dts/tegra186…….dtb(不同平台是不同文件)

<root>/out_kernel/arch/arm64/boot/Image

      1. 烧录生成的文件到设备中
  1. dtb文件:

进入recover模式然后输入以下命令:(不同的设备需要修改参数)

sudo ./flash.sh -r -k kernel-dtb jetson-xavier-nx-devkit-emmc mmcblk0p1

(NX-devkit板子  “tegra194-p3668-all-p3509-0000.dtb”)

sudo ./flash.sh -r -k kernel-dtb jetson-xavier mmcblk0p1

(Xavier板子 “tegra194-p2888-0001-p2822-0000.dtb”)

sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1

(TX板子 “tegra186-quill-p3310-1000-c03-00-base.dtb”)

  1. Image文件:

Copy到机器的“/boot/“目录下,可以先用scp命令copy到机器的home目录,命令如下:(注意修改对应的ip和主机名)

scp Image nx@192.168.0.156:~/

    1. 如何单独编译.c 生产.ko文件

当你修改.c文件的时候,整个编译Image的时候比较花时间,而且有时候会开不了机,所以编译.ko的方式可以节省很多时间。

      1. 准备文件

建立一个driver_build的文件夹,把驱动.c 和 table.h和jetson.sh复制到文件夹里。

把Makefile文件也复制到文件夹内,注意修改驱动名字

      1. 编译

在终端内cd 到该文件夹内,执行make命令生成ko文件

可以通过scp命令或者mount命令把该文件夹放到设备上。

通过insmod命令加载该驱动

  1. 驱动开发

本章节主要介绍如何修改驱动和设备树

修改记录

  1. 如何使能mode selection(基于r32.4.3,太老的修改方式会不同)

在DTB里面添加如下code

use_sensor_mode_id = "true";

在dirver的ctrl_cid_list结构体添加

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿达前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值