配置40引脚扩展接头
每个Jetson开发套件均包含40针扩展插头。许多引脚可以用作GPIO或“特殊功能IO口(SFIO)”,例如I2C,I2S等。40引脚接头连接器使您可以将Jetson开发人员工具包连接到现成的Raspberry Pi HAT(Hardware Attached on Top),例如Seeed Grove模块,SparkFun Qwiic产品等。
烧录系统时,Jetson开发套件上所有I / O的默认配置写入设备中。要更改L4T 32.3之前的40引脚扩展插头的引脚配置,您必须使用Pinmux电子表格为相应的平台更新引脚配置,然后将新配置烧录到开发者套件中。尽管这可能是更新生产系统的适当方法,但开发时仍需要一种更方便的方法来测试不同的引脚配置。
从L4T 32.3版开始,NVIDIA提供了Jetson-IO工具来简化40针扩展插头的I / O配置。Jetson‑IO
是基于Python的工具,可在开发人员工具包上运行并修改Device Tree Blob(DTB)固件,以便开发套件重新启动后使40针插头新配置生效。
启动Jetson‑IO
要启动Jetson-IO,请在开发人员工具包上输入以下命令:
$ sudo /opt/nvidia/jetson-io/jetson-io.py
注意
L4T版本32.3.1中的一个已知问题导致启动Jetson-IO时发生以下错误:
$ sudo /opt/nvidia/jetson-io/jetson-io.py
Traceback (most recent call last):
File "/opt/nvidia/jetson-io/jetson-io.py", line 25, in <module>
from Jetson import board
ImportError: cannot import name 'board'
To resolve this issue, enter the following command:
$ sudo find /opt/nvidia/jetson-io/ -mindepth 1 -maxdepth 1 -type d -exec touch {}/__init__.py \;
# 需要注意最后的'\;'和'__init__.py'之间有一个空格,此命令实际上是在当前每个文件夹下创建__init__.py文件,以使对应的pythen文件成为一个包
# 当前版本Jetson nano运行时会闪退,实际错误为:RuntimeError: No DTB found for NVIDIA Jetson Nano Developer Kit!
修复方法如下:
$ sudo mkdir /boot/dtb
$ sudo cp -v /boot/tegra210-p3448-0000-p3449-0000-[ab]0[012].dtb /boot/dtb/
主屏幕
启动Jetson‑IO时,将显示以下屏幕。此时主屏幕显示40针接头当前的配置,并为您提供两个用于配置I / O的选项:
为Jetson配置兼容硬件(Configure Jetson for compatible hardware):使您可以从可附加到40针扩展接头连接器的硬件模块的配置列表中进行选择。
配置40针扩展头(Configure 40‑pin expansion header):显示一个屏幕(在下方),您可以在其中指定要在40针扩展头上启用的功能。
兼容硬件屏幕
当您选择“配置兼容硬件(configure for compatible hardware)”选项时,Jetson‑IO将显示一些硬件模块的配置列表。
当前有两个硬件模块可供配置:
- Adafruit SPH0645LM4H(I2S MEMS麦克风)
- FE-PI Audio Z V2(SGTL5000 I2S音频编解码器)
选择配置后,Jetson-IO返回主屏幕,主屏幕显示为针对该配置更新后的40针扩展接头的图。
您可以选择以下操作:
- 保存并重新启动以重新配置引脚(Save and reboot to reconfigure pins):通过为配置应用设备树覆盖来创建新的DTB。然后,它将更新用于引导Linux的配置文件( /boot/extlinux/extlinux.conf)并重新引导开发人员工具包。
请注意,在更新配置文件之后,您仍然可以将开发人员工具包引导至先前的配置,因为Jetson ‑IO 通过为新配置添加新条目来更新extlinux.conf。先前的配置仍在文件中。引导目标时,引导加载程序使您可以选择配置(或文件中定义的任何其他配置)。
保存并退出而不重新引导(Save and exit without rebooting):创建一个新的DTB并更新 extlinux.conf,其方式与“保存并重新引导”相同,但不重新引导开发人员工具包。您可以通过选择一次重新启动来应用新配置。
放弃引脚更改(Discard pin changes):放弃更改并返回主屏幕。
退出(Exit):终止Jetson‑IO,而不进行任何更改。
40引脚扩展标题屏幕
当您在主屏幕上选择“配置40针扩展头”选项时,Jetson-IO将显示40针头I / O支持的特殊功能列表。它在括号中显示了与功能相关的引脚。
例如,在NVIDIA ®杰特森™纳米开发工具包,杰特森-IO显示的功能列表如下。
有关支持的功能的更多详细信息,请参阅开发人员套件中的Jetson SoC 技术参考手册。
您可以根据需要选择或取消选择功能。
要接受所选的功能集,请选择“返回”选项。Jetson‑IO返回主屏幕。它会重新显示在“ 兼容硬件屏幕 ”之后显示的主屏幕,并附加一个条目:
- 导出为设备树覆盖图:将40针扩展头的配置导出为新的设备树覆盖图。
命令行界面
如果您希望从命令行而不是从菜单配置40针扩展头,NVIDIA提供了一组命令行工具,它们提供相同的功能。以下各节介绍了这些实用程序。
按引脚名称查看40引脚接头连接器配置
名称
config-by-pin.py-显示40针扩展头的配置概要
config-by-pin.py [选项]
描述
显示40针扩展接头连接器的当前配置。以下选项指定要显示的配置。如果未使用任何选项,则显示整个配置。-h,--help
显示帮助信息并退出。-p,--pin = NUMBER
显示由NUMBER指定的引脚的当前配置,该配置必须在1到40之间。例子
# 显示全部引脚的功能
sudo /opt/nvidia/jetson-io/config-by-pin.py
# 显示指定引脚的功能
sudo /opt/nvidia/jetson-io/config-by-pin.py -p 5
通过特殊功能配置40针接头连接器
名称
config-by-function.py-为40针扩展头配置I / O功能概要
config-by-function.py [-l {all,enabled}]
config-by-function.py [-o {dtb,dtbo} function1 function2 ...]
描述
显示和配置40针扩展头上可用的I / O功能。-h,--help
显示帮助信息并退出。-l, --list={all,enabled}
all
:全部列出了40针扩展接头连接器支持的所有功能。enabled
: 仅列出当前已启用的功能。-o, --out={dtb,dtbo}
为提供的功能列表创建一个新的DTB或设备树覆盖(DTBO)。如果该命令创建了一个新的DTB文件,则将使用新选项更新Linux引导配置文件(/boot/extlinux/extlinux.conf)以使用该DTB进行引导。
例子
sudo /opt/nvidia/jetson-io/config-by-function.py -l all
sudo /opt/nvidia/jetson-io/config-by-function.py -l enabled
sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb spi1
sudo /opt/nvidia/jetson-io/config-by-function.py -o dtbo spi1
通过硬件模块配置40针接头连接器
名称
config-by-hardware.py-为硬件模块配置Jetson概要
config-by-hardware.py [-l]
config-by-hardware.py [-n NAME]
- 描述
显示Jetson支持的硬件模块配置列表,并为给定的硬件模块配置Jetson。
-h,--help
显示用法消息并退出。
-n,--name = NAME
为NAME指定的硬件模块配置Jetson。请注意,这将为硬件模块生成一个新的DTB文件,并使用新选项更新Linux引导配置文件/boot/extlinux/extlinux.conf以使用该DTB进行引导。
-l,--list
显示可用硬件模块配置的列表。
例子
sudo /opt/nvidia/jetson-io/config-by-hardware.py -l
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "Adafruit SPH0645LM4H"
添加对自定义硬件的支持
您可以通过为硬件模块创建设备树覆盖(Device Tree overlay)来使用Jetson‑IO支持自定义硬件模块。以下各节描述了此过程。
设备树覆盖(Device Tree Overlays)
要添加对自定义硬件的支持到Jetson‑IO,您必须了解Jetson‑IO如何管理附加硬件。对硬件模块的支持由设备树覆盖文件(.dtbo文件)处理。
硬件模块的设备树覆盖必须定义:
一个覆盖名称属性
overlay-name
,用于指定硬件模块的名称兼容属性
compatible
,指示Jetson模块和覆盖支撑件,其组合40针扩展接头上需要的特殊功能IO(如果有)
模块上任何设备的节点和/或属性,例如,外部集成电路,例如音频编解码器
该叠加名称属性必须是唯一的名称,从别人的覆盖区别。该兼容属性必须有一个或多个以下的,这取决于Jetson平台的支持。
Jetson Platform | Compatible String |
---|---|
Jetson Nano (A02) | nvidia,p3449-0000-a02+p3448-0000-a02 |
Jetson Nano (B0x) | nvidia,p3449-0000-b00+p3448-0000-b00 |
Jetson TX2 | nvidia,p2597-0000+p3310-1000 |
Jetson AGX Xavier | nvidia,p2822-0000+p2888-0001 |
Jetson TX1 | nvidia,p2597-0000+p2180-1000 |
用户可以通过输入以下命令来获取适用于其Jetson平台的正确兼容字符串。如果您有Jetson Nano开发人员工具包,此命令还将标识PCB版本。
$ cat /sys/firmware/devicetree/base/compatible
例如,请考虑FE-PI Audio Z V2模块。目标的/ boot目录中是名称与模式匹配的覆盖文件:
- -fe-pi-audio-z-v2.dtbo
您可以使用fdtdump实用工具检查覆盖文件的内容,并查看覆盖名称(overlay-name
)和兼容属性(compatible
)。例如,在Jetson Nano开发人员工具包上,您可以通过输入以下命令来显示这些属性:
$ fdtdump /boot/tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio-z-v2.dtbo
创建一个简单的设备树覆盖层
要创建简单的设备树覆盖图以为Jetson Nano(带有A02载板和A02模块)开发人员工具包添加新的自定义属性,请在目标平台上创建一个名为my-overlay.dts的文件,内容如下:
/dts-v1/;
/plugin/;
/ {
overlay-name = "My Jetson Overlay";
compatible = "nvidia,p3449-0000-a02+p3448-0000-a02";
fragment@0 {
target-path = "/";
__overlay__ {
my-custom-property = "This Is My Overlay";
};
};
};
输入以下命令以将DTS源文件编译为覆盖文件:
$ dtc -O dtb -o my-overlay.dtbo -@ my-overlay.dts
将新的覆盖文件复制到/ boot目录之后,Jetson‑IO会找到该覆盖文件并允许您应用它:
$ sudo cp my-overlay.dtbo /boot
$ sudo /opt/nvidia/jetson-io/config-by-hardware.py -l
The following hardware configurations are available:
1. Adafruit SPH0645LM4H
2. FE-PI Audio Z V2
3. My Jetson Overlay
$ sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "My Jetson Overlay"
为40针接头连接器创建自定义设备覆盖层
如果要为连接到40针扩展接头连接器的自定义硬件模块创建覆盖文件,则最简单的方法是使用Jetson-IO根据需要配置40针接头连接器并将配置导出为覆盖。您可以使用面向菜单的Jetson-IO脚本或关联的·config-by -...·命令行工具来执行此操作。
例如,要为启用I2S接口的Jetson Nano(A02)创建覆盖,请输入以下命令:
$ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtbo i2s4
# Configuration saved to /boot/tegra210-p3448-0000-p3449-0000-a02-user-custom.dtbo.
然后,您可以通过输入此命令将覆盖图转换为设备树源文件。
$ dtc -I dtb -O dts -o my-overlay.dts /boot/tegra210-p3448-0000-p3449-0000-a02-user-custom.dtbo
您可以根据需要为定制硬件修改生成的设备树源,并添加硬件模块所需的任何其他节点和/或属性。然后,您可以重新编译设备树源并将其放置在/ boot /目录中,以供Jetson‑IO使用:
$ dtc -O dtb -o my-overlay.dtbo -@ my-overlay.dts
$ sudo cp my-overlay.dtbo /boot