Difference between revisions of "How to upgrade the Jetson system to support VEYE cameras/zh"

From wiki_veye
Jump to navigation Jump to search
(Created page with "English")
 
Line 1: Line 1:
 
[[How to upgrade the Jetson system to support VEYE cameras|English]]
 
[[How to upgrade the Jetson system to support VEYE cameras|English]]
 +
===更新Jetson Nano,TX2,Xavier和Orin系统===
 +
====概述====
 +
本章节描述怎样更新Jetson系统以支持我们的摄像头模组。
 +
 +
*Jetpack4.x版本
 +
 +
要支持我们的摄像头模组,需要更新Jetson系统的L4T(Linux for Tegra)的两个部分,Image和dtb。
 +
 +
Image部分,我们增加了摄像头驱动,dtb部分则指明了使用的摄像头型号。一般情况下,只需使用我们已编译好的Image和dtb,非必要情况下,无需根据代码进行编译。
 +
 +
*Jetpack5.0以后的版本
 +
 +
驱动不再编译进Image,而是以独立module的形式加载到系统中。dtb我们现在依然是采用整体编译到一起的方式以方便进行替换。
 +
 +
dtb也可以以overlay形式动态加载,详情参考nVidia官方的NVIDIA® Jetson™ Linux开发者指南。
 +
 +
*MV系列模组
 +
 +
MV系列模组,为了支持扩展数据类型和外触发模式,我们在Image中增加了相关功能。因此无论Jetpack版本如何,都需要更新Image。是否需要更新modules,取决于Jetpack版本。
 +
====BSP包介绍:====
 +
=====路径=====
 +
https://github.com/veyeimaging/nvidia_jetson_veye_bsp
 +
=====bsp包包括以下主要内容:=====
 +
 +
*预编译好的不同平台下的dtb
 +
*driver源码
 +
*dts源码
 +
*i2c通信工具集
 +
 +
在项目release包中还包括:
 +
 +
*预编译好的linux kernel:Image
 +
*预编译好的摄像机驱动
 +
 +
====DTB文件名称与板卡对应关系====
 +
=====Nano A02=====
 +
<code>tegra210-p3448-0000-p3449-0000-a02.dtb</code>
 +
=====Nano B01 Devkit=====
 +
<code>tegra210-p3448-0000-p3449-0000-b00.dtb</code>
 +
=====Nano B01 4G emmc=====
 +
<code>tegra210-p3448-0002-p3449-0000-b00.dtb</code>
 +
=====Nano 2GB=====
 +
<code>tegra210-p3448-0003-p3542-0000.dtb</code>
 +
=====TX2 Devkit=====
 +
<code>tegra186-quill-p3310-1000-c03-00-base.dtb</code>
 +
=====TX2 NX(p3509-0000 carrier board)=====
 +
use the same carrier board with XAVIER NX Devkit
 +
 +
<code>tegra186-p3636-0001-p3509-0000-a01.dtb</code>
 +
=====AGX XAVIER=====
 +
<code>tegra194-p2888-0001-p2822-0000.dtb</code>
 +
=====XAVIER NX Devkit=====
 +
<code>tegra194-p3668-all-p3509-0000.dtb</code>
 +
 +
特别的,对于Jetpack5.x:
 +
 +
*Jetson Xavier NX (P3668-0000) For developer kit only:
 +
 +
<code>tegra194-p3668-0000-p3509-0000.dtb</code>
 +
 +
*Jetson Xavier NX (P3668-0001) Commercial module:
 +
 +
<code>tegra194-p3668-0001-p3509-0000.dtb</code>
 +
=====AGX Orin=====
 +
<code>tegra234-p3701-0000-p3737-0000.dtb</code>
 +
=====Orin NX=====
 +
 +
*Jetson Orin NX 16G(P3767-0000):
 +
 +
<code>tegra234-p3767-0000-p3768-0000-a0.dtb</code>
 +
 +
*Jetson Orin NX 8G (P3767-0001):
 +
 +
<code>tegra234-p3767-0001-p3768-0000-a0.dtb</code>
 +
=====Orin Nano=====
 +
 +
*Jetson Orin Nano 8G(P3767-0003) and Jetson Orin Nano Devkit(P3767-0005):
 +
 +
<code>tegra234-p3767-0003-p3768-0000-a0.dtb</code>
 +
 +
*Jetson Orin Nano 4G (P3767-0004):
 +
 +
<code>tegra234-p3767-0004-p3768-0000-a0.dtb</code>
 +
====DTB文件名称与摄像头对应关系====
 +
每个主板的dtb目录下,存放了对应摄像头型号的目录,一般可以直接通过目录名称知道对应的摄像头型号。
 +
 +
特别的:
 +
 +
1、VEYE-MIPI-CAM2M 是新版本的VEYE系列dtb,支持所有VEYE 200W系列产品,包括VEYE-MIPI-327E、VEYE-MIPI-IMX327S、VEYE-MIPI-IMX462、VEYE-MIPI-IMX385。
 +
 +
2、以fpdlink为后缀的,对应fpdlink同轴型号模组。
 +
 +
3、MV-MIPI-MVCAM是所有MV系列和RAW系列摄像机通用的dtb(RAW-MIPI-AR0234M和RAW-MIPI-IMX462M除外)。
 +
====Jetson板上直接升级的方法====
 +
适用型号:Jetson Nano、Xavier和Orin。
 +
 +
注:AGX Xavier在Jetpack4.4以后的版本,建议可以使用此方法。以前版本我们未作验证,不建议使用。
 +
=====查看当前L4T版本=====
 +
首先查看当前L4T版本,尽量使用同一版本进行替换。
 +
 +
<code>cat /etc/nv_tegra_release</code>
 +
 +
如显示:
 +
 +
<code># R32 (release), REVISION: 4.3......</code>
 +
 +
则表示当前L4T版本为32.4.3。
 +
=====关于L4T 32.7.2的说明=====
 +
L4T32.7.2版本的Image和dts与L4T32.7.1版本完全一致,所以直接使用L4T32.7.1相关目录下内容即可。
 +
 +
此外,升级需要更新cboot,请参考常见问题章节。
 +
=====下载bsp包到Jetson板子=====
 +
在Jetson 板子上面,执行:
 +
 +
<code>wget <nowiki>https://github.com/veyeimaging/nvidia_jetson_veye_bsp/releases/latest/download/nvidia_jetson_veye_bsp.tar.gz</nowiki></code>
 +
 +
或者在浏览器地址栏中输入<code><nowiki>https://github.com/veyeimaging/nvidia_jetson_veye_bsp/releases/latest/</nowiki></code>
 +
 +
下载发布版本。
 +
 +
<code>tar -xzvf nvidia_jetson_veye_bsp.tar.gz</code>
 +
=====升级Image(适用所有使用MV系列摄像头,或者Jetpack4.x 的版本 )=====
 +
备份原来的Image
 +
 +
<code>cp /boot/Image /boot/Image.backup</code>
 +
 +
<code>cp /boot/Image.sig /boot/Image.sig.backup</code>
 +
 +
在bsp包目录下,找到对应版本的Image压缩包,解压,然后执行:
 +
 +
<code>sudo cp <path to your Image dir>/Image /boot/Image -f</code>
 +
 +
特别的,对于xavier和Orin需要使用签名后的文件(比如Image_l4t_r32.*.*_veyecam_signed_4_xavier目录下),把新的Image和Image.sig拷贝到/boot/目录下。
 +
 +
<code>sudo cp <path to your Image dir>/Image* /boot/-f</code>
 +
 +
重启后生效。
 +
=====安装modules(适用于Jetpack5.x)=====
 +
查看系统linux版本
 +
 +
<code>uname -r</code>
 +
 +
在<code>nvidia_jetson_veye_bsp/ko</code>目录下找到对应的驱动版本目录,
 +
 +
<code>sudo cp nvidia_jetson_veye_bsp/ko/$(uname -r)/* /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ -f</code>
 +
 +
'''特别的,对于Jetpack5.1版本:'''
 +
 +
<code>sudo cp nvidia_jetson_veye_bsp/ko/5.10.104-tegra-l4t35.2.1/* /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ -f</code>
 +
 +
'''特别的,对于Jetpack5.1.1版本:'''
 +
 +
<code>sudo cp nvidia_jetson_veye_bsp/ko/5.10.104-tegra-l4t35.3.1/* /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ -f</code>
 +
======一般情况======
 +
执行如下命令,将modules注册到系统:
 +
 +
<code>sudo depmod</code>
 +
======特别的======
 +
如果使用fpdlink接口的摄像机模组。必须手动控制加载顺序,保证ds90ub954.ko的加载早于摄像头驱动的加载。
 +
 +
系统启动后,手动按照顺序插入驱动,如:
 +
 +
<code>sudo insmod ds90ub954.ko</code>
 +
 +
<code>sudo insmod cs_imx307.ko</code>
 +
 +
可将驱动加载的命令添加到启动脚本中。
 +
=====升级dtb=====
 +
在bsp包目录下,找到您对应的摄像头模组型号和L4T版本号的dtb文件。
 +
 +
将新的dtb拷贝的系统目录
 +
 +
<code>sudo mkdir /boot/veyecam/</code>
 +
 +
<code>sudo cp <path to your dtb dir>/<DTB file name> /boot/veyecam -f</code>
 +
 +
备份extlinux.conf文件。
 +
 +
<code>cp /boot/extlinux/extlinux.conf  /boot/extlinux/extlinux.conf.back</code>
 +
 +
然后,编辑 /boot/extlinux/extlinux.conf文件,在最下面增加如下一行。
 +
 +
<code>FDT /boot/veyecam/<DTB file name></code>
 +
 +
注意:<DTB file name>应当替换为主板对应的dtb名称,确保FDT一行所指明的文件确实正确存在。
 +
 +
重启后生效。
 +
====通过HOST PC烧写Jetson主板进行升级的方法====
 +
本节提供第二种升级系统的方法。这个方法与上一节的方法的目标相同,二选一即可。本方法比较复杂,对于Nano,Xavier,Orin不建议使用。
 +
 +
特别的,对于TX2系统,只能采取本节的方法升级。
 +
=====烧写标准版本镜像=====
 +
'''''注意:如您的Jetson板子已经正确烧写了标准版本的镜像,此步骤可以跳过。'''''
 +
 +
可以使用SDK Manager直接烧写标准镜像,也可以按照如下步骤手动烧写。
 +
 +
*配置环境变量
 +
 +
以下步骤假设SDK安装目录为<TOPDIR>。
 +
 +
<code>export TOP_DIR=<absolute path to top dir accroding to your jetpack version and board name;for example /home/xumm/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_XAVIER_NX_DEVKIT/></code>
 +
 +
- 通用部分
 +
 +
<code>export L4T_DIR=$TOP_DIR/Linux_for_Tegra</code>
 +
 +
*生成默认版本烧写镜像,烧写默认镜像到板子,准备好L4T环境
 +
 +
<code>cd $L4T_DIR</code>
 +
 +
<code>sudo ./apply_binaries.sh</code>  
 +
 +
进入recovery mode并烧写标准版本镜像。
 +
 +
- Nano
 +
 +
<code>sudo ./flash.sh jetson-nano-devkit mmcblk0p1</code>
 +
 +
<code>sudo ./flash.sh jetson-nano-2gb-devkit mmcblk0p1</code>
 +
 +
''- TX2''
 +
 +
<code>sudo ./flash.sh jetson-tx2 mmcblk0p1</code>
 +
 +
''- TX2 NX(p3509-0000 carrier board)''
 +
 +
<code>sudo ./flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk0p1</code>
 +
 +
''- AGX Xavier''
 +
 +
<code>sudo ./flash.sh jetson-xavier mmcblk0p1</code>
 +
 +
''- Xavier NX Devkit''
 +
 +
<code>sudo ./flash.sh jetson-xavier-nx-devkit mmcblk0p1</code>
 +
=====下载我们的bsp包=====
 +
<code>cd $L4T_DIR</code>
 +
 +
<code>wget <nowiki>https://github.com/veyeimaging/nvidia_jetson_veye_bsp/releases/latest/download/nvidia_jetson_veye_bsp.tar.gz</nowiki></code>
 +
 +
<code>tar -xzvf nvidia_jetson_veye_bsp.tar.gz</code>
 +
 +
<code>export RELEASE_PACK_DIR=$L4T_DIR/nvidia_jetson_veye_bsp</code>
 +
=====升级Image和DTB=====
 +
解压开下载到的nvidia_jetson_veye_bsp.tar.gz,找到对应版本的Image。
 +
 +
*升级Image文件
 +
 +
无论是使用预编译好的程序还是使用自行编译出的Image:
 +
 +
''-  Nano 和 TX2''
 +
 +
把新的Image拷贝的Nano和TX2的/boot/目录下。
 +
 +
在Jetson TX2板子上执行
 +
 +
<code>sudo cp <path to your Image dir>/Image  /boot/Image -f</code>
 +
 +
''- Xavier 和Orin''
 +
 +
需要使用签名后的文件(比如Image_l4t_r32.*.*_veyecam_signed_4_xavier目录下),把新的Image和Image.sig拷贝的XAVIER的/boot/目录下。
 +
 +
<code>sudo cp <path to your Image dir>/Image  /boot/Image -f</code>
 +
 +
<code>sudo cp <path to your Image dir>/Image.sig  /boot/Image.sig -f</code>
 +
 +
<s>在Host PC执行</s>
 +
 +
<code><s>cd $L4T_DIR</s></code>
 +
 +
<code><s>sudo ./flash.sh -k kernel jetson-xavier mmcblk0p1</s></code>
 +
 +
''<s>- Xavier NX</s>''
 +
 +
<s>在Host PC执行</s>
 +
 +
<code><s>cd $L4T_DIR</s></code>
 +
 +
<code><s>sudo ./flash.sh -k kernel jetson-xavier-nx-devkit mmcblk0p1</s></code>
 +
 +
*烧写DTS分区,进入烧写模式,在Host PC执行
 +
 +
<code>cp <path to your dtb dir>/dtbfilename $L4T_DIR/kernel/dtb/ -f</code>
 +
 +
<code>cd $L4T_DIR</code>
 +
 +
- ''Nano''
 +
 +
<code><s>sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1</s></code>
 +
 +
<code>sudo ./flash.sh -r -k DTB  jetson-nano-devkit mmcblk0p1</code>
 +
 +
<code>sudo ./flash.sh -r -k DTB  jetson-nano-2gb-devkit mmcblk0p1</code>
 +
 +
''- TX2''
 +
 +
<code>sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1</code>
 +
 +
''- TX2 NX(p3509-0000 carrier board)''
 +
 +
<code>sudo ./flash.sh -r -k kernel-dtb jetson-xavier-nx-devkit-tx2-nx mmcblk0p1</code>
 +
 +
''- AGX Xavier''
 +
 +
<code>sudo ./flash.sh -r -k kernel-dtb jetson-xavier mmcblk0p1</code>
 +
 +
''- Xavier NX''
 +
 +
<code>sudo ./flash.sh -r -k kernel-dtb jetson-xavier-nx-devkit mmcblk0p1</code>
 +
 +
烧写完成后,断电重启。
 +
====Image和DTB更新成功了吗?====
 +
完成Image和DTB的更新后,可以使用以下步骤检查操作是否成功。
 +
=====对于DTB=====
 +
DTB在不同的平台和不同的摄像头模组都会有所不同。
 +
 +
- Nano A02/ Nano 2G
 +
 +
<code>ls /proc/device-tree/host1x/i2c@546c0000/</code>
 +
 +
- Nano B01
 +
 +
<code>ls /proc/device-tree/cam_i2cmux/i2c@*</code>
 +
 +
- TX2 Devkit
 +
 +
<code>ls /proc/device-tree/i2c@3180000/tca9548@70/i2c@*</code>
 +
 +
or
 +
 +
<code>ls /proc/device-tree/i2c@3180000/tca9548@77/i2c@*</code>
 +
 +
- AGX Xavier和AGX Orin
 +
 +
<code>ls /proc/device-tree/i2c@3180000/tca9548@70/i2c@*</code>
 +
 +
or
 +
 +
<code>ls /proc/device-tree/i2c@3180000/tca9548@77/i2c@*</code>
 +
 +
- Xavier NX  and TX2 NX(p3509-0000 carrier board)
 +
 +
<code>ls /proc/device-tree/cam_i2cmux/i2c@*</code>
 +
 +
应当可以发现摄像头型号。
 +
=====对于Image或者ko=====
 +
<code>ls /sys/bus/i2c/drivers/</code>
 +
 +
正确安装摄像头时,摄像头的相关目录应当存在,如 veyecam csx307 cssc132 mvcam等。
 +
====防止被升级所覆盖====
 +
确定Image和dtb成功更新之后,请执行以下命令,防止kernel和dtb被升级覆盖。
 +
 +
<code>sudo apt-mark hold nvidia-l4t-kernel nvidia-l4t-kernel-dtbs</code>
 +
====使用源码进行编译====
 +
请参考:[[VEYE CS Camera source for Jetson/zh|英伟达Jetson平台上VEYE摄像头驱动源码编译指南]]
 +
 +
kernel和DTS编译完成后,可以按照上面的步骤升级Image和DTB。

Revision as of 16:31, 6 August 2024

English

1 更新Jetson Nano,TX2,Xavier和Orin系统

1.1 概述

本章节描述怎样更新Jetson系统以支持我们的摄像头模组。

  • Jetpack4.x版本

要支持我们的摄像头模组,需要更新Jetson系统的L4T(Linux for Tegra)的两个部分,Image和dtb。

Image部分,我们增加了摄像头驱动,dtb部分则指明了使用的摄像头型号。一般情况下,只需使用我们已编译好的Image和dtb,非必要情况下,无需根据代码进行编译。

  • Jetpack5.0以后的版本

驱动不再编译进Image,而是以独立module的形式加载到系统中。dtb我们现在依然是采用整体编译到一起的方式以方便进行替换。

dtb也可以以overlay形式动态加载,详情参考nVidia官方的NVIDIA® Jetson™ Linux开发者指南。

  • MV系列模组

MV系列模组,为了支持扩展数据类型和外触发模式,我们在Image中增加了相关功能。因此无论Jetpack版本如何,都需要更新Image。是否需要更新modules,取决于Jetpack版本。

1.2 BSP包介绍:

1.2.1 路径

https://github.com/veyeimaging/nvidia_jetson_veye_bsp

1.2.2 bsp包包括以下主要内容:
  • 预编译好的不同平台下的dtb
  • driver源码
  • dts源码
  • i2c通信工具集

在项目release包中还包括:

  • 预编译好的linux kernel:Image
  • 预编译好的摄像机驱动

1.3 DTB文件名称与板卡对应关系

1.3.1 Nano A02

tegra210-p3448-0000-p3449-0000-a02.dtb

1.3.2 Nano B01 Devkit

tegra210-p3448-0000-p3449-0000-b00.dtb

1.3.3 Nano B01 4G emmc

tegra210-p3448-0002-p3449-0000-b00.dtb

1.3.4 Nano 2GB

tegra210-p3448-0003-p3542-0000.dtb

1.3.5 TX2 Devkit

tegra186-quill-p3310-1000-c03-00-base.dtb

1.3.6 TX2 NX(p3509-0000 carrier board)

use the same carrier board with XAVIER NX Devkit

tegra186-p3636-0001-p3509-0000-a01.dtb

1.3.7 AGX XAVIER

tegra194-p2888-0001-p2822-0000.dtb

1.3.8 XAVIER NX Devkit

tegra194-p3668-all-p3509-0000.dtb

特别的,对于Jetpack5.x:

  • Jetson Xavier NX (P3668-0000) For developer kit only:

tegra194-p3668-0000-p3509-0000.dtb

  • Jetson Xavier NX (P3668-0001) Commercial module:

tegra194-p3668-0001-p3509-0000.dtb

1.3.9 AGX Orin

tegra234-p3701-0000-p3737-0000.dtb

1.3.10 Orin NX
  • Jetson Orin NX 16G(P3767-0000):

tegra234-p3767-0000-p3768-0000-a0.dtb

  • Jetson Orin NX 8G (P3767-0001):

tegra234-p3767-0001-p3768-0000-a0.dtb

1.3.11 Orin Nano
  • Jetson Orin Nano 8G(P3767-0003) and Jetson Orin Nano Devkit(P3767-0005):

tegra234-p3767-0003-p3768-0000-a0.dtb

  • Jetson Orin Nano 4G (P3767-0004):

tegra234-p3767-0004-p3768-0000-a0.dtb

1.4 DTB文件名称与摄像头对应关系

每个主板的dtb目录下,存放了对应摄像头型号的目录,一般可以直接通过目录名称知道对应的摄像头型号。

特别的:

1、VEYE-MIPI-CAM2M 是新版本的VEYE系列dtb,支持所有VEYE 200W系列产品,包括VEYE-MIPI-327E、VEYE-MIPI-IMX327S、VEYE-MIPI-IMX462、VEYE-MIPI-IMX385。

2、以fpdlink为后缀的,对应fpdlink同轴型号模组。

3、MV-MIPI-MVCAM是所有MV系列和RAW系列摄像机通用的dtb(RAW-MIPI-AR0234M和RAW-MIPI-IMX462M除外)。

1.5 Jetson板上直接升级的方法

适用型号:Jetson Nano、Xavier和Orin。

注:AGX Xavier在Jetpack4.4以后的版本,建议可以使用此方法。以前版本我们未作验证,不建议使用。

1.5.1 查看当前L4T版本

首先查看当前L4T版本,尽量使用同一版本进行替换。

cat /etc/nv_tegra_release

如显示:

# R32 (release), REVISION: 4.3......

则表示当前L4T版本为32.4.3。

1.5.2 关于L4T 32.7.2的说明

L4T32.7.2版本的Image和dts与L4T32.7.1版本完全一致,所以直接使用L4T32.7.1相关目录下内容即可。

此外,升级需要更新cboot,请参考常见问题章节。

1.5.3 下载bsp包到Jetson板子

在Jetson 板子上面,执行:

wget https://github.com/veyeimaging/nvidia_jetson_veye_bsp/releases/latest/download/nvidia_jetson_veye_bsp.tar.gz

或者在浏览器地址栏中输入https://github.com/veyeimaging/nvidia_jetson_veye_bsp/releases/latest/

下载发布版本。

tar -xzvf nvidia_jetson_veye_bsp.tar.gz

1.5.4 升级Image(适用所有使用MV系列摄像头,或者Jetpack4.x 的版本 )

备份原来的Image

cp /boot/Image /boot/Image.backup

cp /boot/Image.sig /boot/Image.sig.backup

在bsp包目录下,找到对应版本的Image压缩包,解压,然后执行:

sudo cp <path to your Image dir>/Image /boot/Image -f

特别的,对于xavier和Orin需要使用签名后的文件(比如Image_l4t_r32.*.*_veyecam_signed_4_xavier目录下),把新的Image和Image.sig拷贝到/boot/目录下。

sudo cp <path to your Image dir>/Image* /boot/-f

重启后生效。

1.5.5 安装modules(适用于Jetpack5.x)

查看系统linux版本

uname -r

nvidia_jetson_veye_bsp/ko目录下找到对应的驱动版本目录,

sudo cp nvidia_jetson_veye_bsp/ko/$(uname -r)/* /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ -f

特别的,对于Jetpack5.1版本:

sudo cp nvidia_jetson_veye_bsp/ko/5.10.104-tegra-l4t35.2.1/* /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ -f

特别的,对于Jetpack5.1.1版本:

sudo cp nvidia_jetson_veye_bsp/ko/5.10.104-tegra-l4t35.3.1/* /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ -f

1.5.5.1 一般情况

执行如下命令,将modules注册到系统:

sudo depmod

1.5.5.2 特别的

如果使用fpdlink接口的摄像机模组。必须手动控制加载顺序,保证ds90ub954.ko的加载早于摄像头驱动的加载。

系统启动后,手动按照顺序插入驱动,如:

sudo insmod ds90ub954.ko

sudo insmod cs_imx307.ko

可将驱动加载的命令添加到启动脚本中。

1.5.6 升级dtb

在bsp包目录下,找到您对应的摄像头模组型号和L4T版本号的dtb文件。

将新的dtb拷贝的系统目录

sudo mkdir /boot/veyecam/

sudo cp <path to your dtb dir>/<DTB file name> /boot/veyecam -f

备份extlinux.conf文件。

cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.back

然后,编辑 /boot/extlinux/extlinux.conf文件,在最下面增加如下一行。

FDT /boot/veyecam/<DTB file name>

注意:<DTB file name>应当替换为主板对应的dtb名称,确保FDT一行所指明的文件确实正确存在。

重启后生效。

1.6 通过HOST PC烧写Jetson主板进行升级的方法

本节提供第二种升级系统的方法。这个方法与上一节的方法的目标相同,二选一即可。本方法比较复杂,对于Nano,Xavier,Orin不建议使用。

特别的,对于TX2系统,只能采取本节的方法升级。

1.6.1 烧写标准版本镜像

注意:如您的Jetson板子已经正确烧写了标准版本的镜像,此步骤可以跳过。

可以使用SDK Manager直接烧写标准镜像,也可以按照如下步骤手动烧写。

  • 配置环境变量

以下步骤假设SDK安装目录为<TOPDIR>。

export TOP_DIR=<absolute path to top dir accroding to your jetpack version and board name;for example /home/xumm/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_XAVIER_NX_DEVKIT/>

- 通用部分

export L4T_DIR=$TOP_DIR/Linux_for_Tegra

  • 生成默认版本烧写镜像,烧写默认镜像到板子,准备好L4T环境

cd $L4T_DIR

sudo ./apply_binaries.sh  

进入recovery mode并烧写标准版本镜像。

- Nano

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

sudo ./flash.sh jetson-nano-2gb-devkit mmcblk0p1

- TX2

sudo ./flash.sh jetson-tx2 mmcblk0p1

- TX2 NX(p3509-0000 carrier board)

sudo ./flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk0p1

- AGX Xavier

sudo ./flash.sh jetson-xavier mmcblk0p1

- Xavier NX Devkit

sudo ./flash.sh jetson-xavier-nx-devkit mmcblk0p1

1.6.2 下载我们的bsp包

cd $L4T_DIR

wget https://github.com/veyeimaging/nvidia_jetson_veye_bsp/releases/latest/download/nvidia_jetson_veye_bsp.tar.gz

tar -xzvf nvidia_jetson_veye_bsp.tar.gz

export RELEASE_PACK_DIR=$L4T_DIR/nvidia_jetson_veye_bsp

1.6.3 升级Image和DTB

解压开下载到的nvidia_jetson_veye_bsp.tar.gz,找到对应版本的Image。

  • 升级Image文件

无论是使用预编译好的程序还是使用自行编译出的Image:

- Nano 和 TX2

把新的Image拷贝的Nano和TX2的/boot/目录下。

在Jetson TX2板子上执行

sudo cp <path to your Image dir>/Image /boot/Image -f

- Xavier 和Orin

需要使用签名后的文件(比如Image_l4t_r32.*.*_veyecam_signed_4_xavier目录下),把新的Image和Image.sig拷贝的XAVIER的/boot/目录下。

sudo cp <path to your Image dir>/Image /boot/Image -f

sudo cp <path to your Image dir>/Image.sig /boot/Image.sig -f

在Host PC执行

cd $L4T_DIR

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

- Xavier NX

在Host PC执行

cd $L4T_DIR

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

  • 烧写DTS分区,进入烧写模式,在Host PC执行

cp <path to your dtb dir>/dtbfilename $L4T_DIR/kernel/dtb/ -f

cd $L4T_DIR

- Nano

sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1

sudo ./flash.sh -r -k DTB jetson-nano-devkit mmcblk0p1

sudo ./flash.sh -r -k DTB jetson-nano-2gb-devkit mmcblk0p1

- TX2

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

- TX2 NX(p3509-0000 carrier board)

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

- AGX Xavier

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

- Xavier NX

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

烧写完成后,断电重启。

1.7 Image和DTB更新成功了吗?

完成Image和DTB的更新后,可以使用以下步骤检查操作是否成功。

1.7.1 对于DTB

DTB在不同的平台和不同的摄像头模组都会有所不同。

- Nano A02/ Nano 2G

ls /proc/device-tree/host1x/i2c@546c0000/

- Nano B01

ls /proc/device-tree/cam_i2cmux/i2c@*

- TX2 Devkit

ls /proc/device-tree/i2c@3180000/tca9548@70/i2c@*

or

ls /proc/device-tree/i2c@3180000/tca9548@77/i2c@*

- AGX Xavier和AGX Orin

ls /proc/device-tree/i2c@3180000/tca9548@70/i2c@*

or

ls /proc/device-tree/i2c@3180000/tca9548@77/i2c@*

- Xavier NX and TX2 NX(p3509-0000 carrier board)

ls /proc/device-tree/cam_i2cmux/i2c@*

应当可以发现摄像头型号。

1.7.2 对于Image或者ko

ls /sys/bus/i2c/drivers/

正确安装摄像头时,摄像头的相关目录应当存在,如 veyecam csx307 cssc132 mvcam等。

1.8 防止被升级所覆盖

确定Image和dtb成功更新之后,请执行以下命令,防止kernel和dtb被升级覆盖。

sudo apt-mark hold nvidia-l4t-kernel nvidia-l4t-kernel-dtbs

1.9 使用源码进行编译

请参考:英伟达Jetson平台上VEYE摄像头驱动源码编译指南

kernel和DTS编译完成后,可以按照上面的步骤升级Image和DTB。