配置40引腳擴(kuò)展接頭
每個(gè)Jetson開(kāi)發(fā)套件均包含40針擴(kuò)展插頭烦粒。許多引腳可以用作GPIO或“特殊功能IO口(SFIO)”休溶,例如I2C,I2S等扰她。40引腳接頭連接器使您可以將Jetson開(kāi)發(fā)人員工具包連接到現(xiàn)成的Raspberry Pi HAT(Hardware Attached on Top)兽掰,例如Seeed Grove模塊,SparkFun Qwiic產(chǎn)品等徒役。
燒錄系統(tǒng)時(shí)孽尽,Jetson開(kāi)發(fā)套件上所有I / O的默認(rèn)配置寫(xiě)入設(shè)備中。要更改L4T 32.3之前的40引腳擴(kuò)展插頭的引腳配置忧勿,您必須使用Pinmux電子表格為相應(yīng)的平臺(tái)更新引腳配置杉女,然后將新配置燒錄到開(kāi)發(fā)者套件中。盡管這可能是更新生產(chǎn)系統(tǒng)的適當(dāng)方法鸳吸,但開(kāi)發(fā)時(shí)仍需要一種更方便的方法來(lái)測(cè)試不同的引腳配置熏挎。
從L4T 32.3版開(kāi)始,NVIDIA提供了Jetson-IO工具來(lái)簡(jiǎn)化40針擴(kuò)展插頭的I / O配置晌砾。Jetson?IO
是基于Python的工具坎拐,可在開(kāi)發(fā)人員工具包上運(yùn)行并修改Device Tree Blob(DTB)固件,以便開(kāi)發(fā)套件重新啟動(dòng)后使40針插頭新配置生效贡羔。
啟動(dòng)Jetson?IO
要啟動(dòng)Jetson-IO廉白,請(qǐng)?jiān)陂_(kāi)發(fā)人員工具包上輸入以下命令:
$ sudo /opt/nvidia/jetson-io/jetson-io.py
注意
L4T版本32.3.1中的一個(gè)已知問(wèn)題導(dǎo)致啟動(dòng)Jetson-IO時(shí)發(fā)生以下錯(cuò)誤:
$ 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'之間有一個(gè)空格个初,此命令實(shí)際上是在當(dāng)前每個(gè)文件夾下創(chuàng)建__init__.py文件乖寒,以使對(duì)應(yīng)的pythen文件成為一個(gè)包
# 當(dāng)前版本Jetson nano運(yùn)行時(shí)會(huì)閃退,實(shí)際錯(cuò)誤為:RuntimeError: No DTB found for NVIDIA Jetson Nano Developer Kit!
修復(fù)方法如下:
$ sudo mkdir /boot/dtb
$ sudo cp -v /boot/tegra210-p3448-0000-p3449-0000-[ab]0[012].dtb /boot/dtb/
主屏幕
啟動(dòng)Jetson?IO時(shí)院溺,將顯示以下屏幕楣嘁。此時(shí)主屏幕顯示40針接頭當(dāng)前的配置,并為您提供兩個(gè)用于配置I / O的選項(xiàng):
為Jetson配置兼容硬件(Configure Jetson for compatible hardware):使您可以從可附加到40針擴(kuò)展接頭連接器的硬件模塊的配置列表中進(jìn)行選擇。
配置40針擴(kuò)展頭(Configure 40?pin expansion header):顯示一個(gè)屏幕(在下方)逐虚,您可以在其中指定要在40針擴(kuò)展頭上啟用的功能聋溜。
兼容硬件屏幕
當(dāng)您選擇“配置兼容硬件(configure for compatible hardware)”選項(xiàng)時(shí),Jetson?IO將顯示一些硬件模塊的配置列表叭爱。
當(dāng)前有兩個(gè)硬件模塊可供配置:
- Adafruit SPH0645LM4H(I2S MEMS麥克風(fēng))
- FE-PI Audio Z V2(SGTL5000 I2S音頻編解碼器)
選擇配置后撮躁,Jetson-IO返回主屏幕,主屏幕顯示為針對(duì)該配置更新后的40針擴(kuò)展接頭的圖买雾。
您可以選擇以下操作:
- 保存并重新啟動(dòng)以重新配置引腳(Save and reboot to reconfigure pins):通過(guò)為配置應(yīng)用設(shè)備樹(shù)覆蓋來(lái)創(chuàng)建新的DTB衔沼。然后苔埋,它將更新用于引導(dǎo)Linux的配置文件( /boot/extlinux/extlinux.conf)并重新引導(dǎo)開(kāi)發(fā)人員工具包。
請(qǐng)注意,在更新配置文件之后瞧哟,您仍然可以將開(kāi)發(fā)人員工具包引導(dǎo)至先前的配置,因?yàn)镴etson ?IO 通過(guò)為新配置添加新條目來(lái)更新extlinux.conf毛肋。先前的配置仍在文件中梨水。引導(dǎo)目標(biāo)時(shí),引導(dǎo)加載程序使您可以選擇配置(或文件中定義的任何其他配置)僚饭。
保存并退出而不重新引導(dǎo)(Save and exit without rebooting):創(chuàng)建一個(gè)新的DTB并更新 extlinux.conf震叮,其方式與“保存并重新引導(dǎo)”相同,但不重新引導(dǎo)開(kāi)發(fā)人員工具包浪慌。您可以通過(guò)選擇一次重新啟動(dòng)來(lái)應(yīng)用新配置冤荆。
放棄引腳更改(Discard pin changes):放棄更改并返回主屏幕。
退出(Exit):終止Jetson?IO权纤,而不進(jìn)行任何更改钓简。
40引腳擴(kuò)展標(biāo)題屏幕
當(dāng)您在主屏幕上選擇“配置40針擴(kuò)展頭”選項(xiàng)時(shí),Jetson-IO將顯示40針頭I / O支持的特殊功能列表汹想。它在括號(hào)中顯示了與功能相關(guān)的引腳外邓。
例如,在NVIDIA ?杰特森?納米開(kāi)發(fā)工具包古掏,杰特森-IO顯示的功能列表如下损话。
有關(guān)支持的功能的更多詳細(xì)信息,請(qǐng)參閱開(kāi)發(fā)人員套件中的Jetson SoC 技術(shù)參考手冊(cè)槽唾。
您可以根據(jù)需要選擇或取消選擇功能丧枪。
要接受所選的功能集,請(qǐng)選擇“返回”選項(xiàng)庞萍。Jetson?IO返回主屏幕拧烦。它會(huì)重新顯示在“ 兼容硬件屏幕 ”之后顯示的主屏幕,并附加一個(gè)條目:
- 導(dǎo)出為設(shè)備樹(shù)覆蓋圖:將40針擴(kuò)展頭的配置導(dǎo)出為新的設(shè)備樹(shù)覆蓋圖钝计。
命令行界面
如果您希望從命令行而不是從菜單配置40針擴(kuò)展頭恋博,NVIDIA提供了一組命令行工具齐佳,它們提供相同的功能。以下各節(jié)介紹了這些實(shí)用程序债沮。
按引腳名稱(chēng)查看40引腳接頭連接器配置
名稱(chēng)
config-by-pin.py-顯示40針擴(kuò)展頭的配置概要
config-by-pin.py [選項(xiàng)]
描述
顯示40針擴(kuò)展接頭連接器的當(dāng)前配置炼吴。以下選項(xiàng)指定要顯示的配置。如果未使用任何選項(xiàng)疫衩,則顯示整個(gè)配置硅蹦。-h,--help
顯示幫助信息并退出闷煤。-p提针,--pin = NUM??BER
顯示由NUMBER指定的引腳的當(dāng)前配置,該配置必須在1到40之間曹傀。例子
# 顯示全部引腳的功能
sudo /opt/nvidia/jetson-io/config-by-pin.py
# 顯示指定引腳的功能
sudo /opt/nvidia/jetson-io/config-by-pin.py -p 5
通過(guò)特殊功能配置40針接頭連接器
名稱(chēng)
config-by-function.py-為40針擴(kuò)展頭配置I / O功能概要
config-by-function.py [-l {all辐脖,enabled}]
config-by-function.py [-o {dtb,dtbo} function1 function2 ...]
描述
顯示和配置40針擴(kuò)展頭上可用的I / O功能皆愉。-h嗜价,--help
顯示幫助信息并退出。-l, --list={all,enabled}
all
:全部列出了40針擴(kuò)展接頭連接器支持的所有功能幕庐。enabled
: 僅列出當(dāng)前已啟用的功能久锥。-o, --out={dtb,dtbo}
為提供的功能列表創(chuàng)建一個(gè)新的DTB或設(shè)備樹(shù)覆蓋(DTBO)。如果該命令創(chuàng)建了一個(gè)新的DTB文件异剥,則將使用新選項(xiàng)更新Linux引導(dǎo)配置文件(/boot/extlinux/extlinux.conf)以使用該DTB進(jìn)行引導(dǎo)瑟由。
例子
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
通過(guò)硬件模塊配置40針接頭連接器
名稱(chēng)
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殴瘦。請(qǐng)注意,這將為硬件模塊生成一個(gè)新的DTB文件号杠,并使用新選項(xiàng)更新Linux引導(dǎo)配置文件/boot/extlinux/extlinux.conf以使用該DTB進(jìn)行引導(dǎo)蚪腋。
-l,--list
顯示可用硬件模塊配置的列表姨蟋。
例子
sudo /opt/nvidia/jetson-io/config-by-hardware.py -l
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "Adafruit SPH0645LM4H"
添加對(duì)自定義硬件的支持
您可以通過(guò)為硬件模塊創(chuàng)建設(shè)備樹(shù)覆蓋(Device Tree overlay)來(lái)使用Jetson?IO支持自定義硬件模塊屉凯。以下各節(jié)描述了此過(guò)程。
設(shè)備樹(shù)覆蓋(Device Tree Overlays)
要添加對(duì)自定義硬件的支持到Jetson?IO眼溶,您必須了解Jetson?IO如何管理附加硬件悠砚。對(duì)硬件模塊的支持由設(shè)備樹(shù)覆蓋文件(.dtbo文件)處理。
硬件模塊的設(shè)備樹(shù)覆蓋必須定義:
一個(gè)覆蓋名稱(chēng)屬性
overlay-name
偷仿,用于指定硬件模塊的名稱(chēng)兼容屬性
compatible
哩簿,指示Jetson模塊和覆蓋支撐件,其組合40針擴(kuò)展接頭上需要的特殊功能IO(如果有)
模塊上任何設(shè)備的節(jié)點(diǎn)和/或?qū)傩栽途玻缃诎瘢獠考呻娐罚缫纛l編解碼器
該疊加名稱(chēng)屬性必須是唯一的名稱(chēng)别智,從別人的覆蓋區(qū)別宗苍。該兼容屬性必須有一個(gè)或多個(gè)以下的,這取決于Jetson平臺(tái)的支持薄榛。
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 |
用戶(hù)可以通過(guò)輸入以下命令來(lái)獲取適用于其Jetson平臺(tái)的正確兼容字符串讳窟。如果您有Jetson Nano開(kāi)發(fā)人員工具包,此命令還將標(biāo)識(shí)PCB版本敞恋。
$ cat /sys/firmware/devicetree/base/compatible
例如丽啡,請(qǐng)考慮FE-PI Audio Z V2模塊。目標(biāo)的/ boot目錄中是名稱(chēng)與模式匹配的覆蓋文件:
- -fe-pi-audio-z-v2.dtbo
您可以使用fdtdump實(shí)用工具檢查覆蓋文件的內(nèi)容硬猫,并查看覆蓋名稱(chēng)(overlay-name
)和兼容屬性(compatible
)补箍。例如,在Jetson Nano開(kāi)發(fā)人員工具包上啸蜜,您可以通過(guò)輸入以下命令來(lái)顯示這些屬性:
$ fdtdump /boot/tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio-z-v2.dtbo
創(chuàng)建一個(gè)簡(jiǎn)單的設(shè)備樹(shù)覆蓋層
要?jiǎng)?chuàng)建簡(jiǎn)單的設(shè)備樹(shù)覆蓋圖以為Jetson Nano(帶有A02載板和A02模塊)開(kāi)發(fā)人員工具包添加新的自定義屬性坑雅,請(qǐng)?jiān)谀繕?biāo)平臺(tái)上創(chuàng)建一個(gè)名為my-overlay.dts的文件,內(nèi)容如下:
/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
將新的覆蓋文件復(fù)制到/ boot目錄之后衬横,Jetson?IO會(huì)找到該覆蓋文件并允許您應(yīng)用它:
$ 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針接頭連接器創(chuàng)建自定義設(shè)備覆蓋層
如果要為連接到40針擴(kuò)展接頭連接器的自定義硬件模塊創(chuàng)建覆蓋文件裹粤,則最簡(jiǎn)單的方法是使用Jetson-IO根據(jù)需要配置40針接頭連接器并將配置導(dǎo)出為覆蓋。您可以使用面向菜單的Jetson-IO腳本或關(guān)聯(lián)的·config-by -...·命令行工具來(lái)執(zhí)行此操作蜂林。
例如遥诉,要為啟用I2S接口的Jetson Nano(A02)創(chuàng)建覆蓋,請(qǐng)輸入以下命令:
$ 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.
然后噪叙,您可以通過(guò)輸入此命令將覆蓋圖轉(zhuǎn)換為設(shè)備樹(shù)源文件突那。
$ dtc -I dtb -O dts -o my-overlay.dts /boot/tegra210-p3448-0000-p3449-0000-a02-user-custom.dtbo
您可以根據(jù)需要為定制硬件修改生成的設(shè)備樹(shù)源,并添加硬件模塊所需的任何其他節(jié)點(diǎn)和/或?qū)傩怨姑小H缓筱的眩梢灾匦戮幾g設(shè)備樹(shù)源并將其放置在/ boot /目錄中,以供Jetson?IO使用:
$ dtc -O dtb -o my-overlay.dtbo -@ my-overlay.dts
$ sudo cp my-overlay.dtbo /boot