Jetson Nano 配置40引腳擴(kuò)展接頭

配置40引腳擴(kuò)展接頭

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fhw_setup_jetson_io.html%23

每個Jetson開發(fā)套件均包含40針擴(kuò)展插頭。許多引腳可以用作GPIO或“特殊功能IO口(SFIO)”,例如I2C,I2S等。40引腳接頭連接器使您可以將Jetson開發(fā)人員工具包連接到現(xiàn)成的Raspberry Pi HAT(Hardware Attached on Top),例如Seeed Grove模塊,SparkFun Qwiic產(chǎn)品等。

燒錄系統(tǒng)時,Jetson開發(fā)套件上所有I / O的默認(rèn)配置寫入設(shè)備中。要更改L4T 32.3之前的40引腳擴(kuò)展插頭的引腳配置,您必須使用Pinmux電子表格為相應(yīng)的平臺更新引腳配置,然后將新配置燒錄到開發(fā)者套件中。盡管這可能是更新生產(chǎn)系統(tǒng)的適當(dāng)方法,但開發(fā)時仍需要一種更方便的方法來測試不同的引腳配置。

從L4T 32.3版開始,NVIDIA提供了Jetson-IO工具來簡化40針擴(kuò)展插頭的I / O配置。Jetson?IO是基于Python的工具,可在開發(fā)人員工具包上運(yùn)行并修改Device Tree Blob(DTB)固件,以便開發(fā)套件重新啟動后使40針插頭新配置生效。

啟動Jetson?IO

要啟動Jetson-IO,請在開發(fā)人員工具包上輸入以下命令:

$ sudo /opt/nvidia/jetson-io/jetson-io.py

注意
L4T版本32.3.1中的一個已知問題導(dǎo)致啟動Jetson-IO時發(fā)生以下錯誤:
$ 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'之間有一個空格,此命令實際上是在當(dāng)前每個文件夾下創(chuàng)建__init__.py文件,以使對應(yīng)的pythen文件成為一個包
# 當(dāng)前版本Jetson nano運(yùn)行時會閃退,實際錯誤為: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/

主屏幕

啟動Jetson?IO時,將顯示以下屏幕。此時主屏幕顯示40針接頭當(dāng)前的配置,并為您提供兩個用于配置I / O的選項:

  • 為Jetson配置兼容硬件(Configure Jetson for compatible hardware):使您可以從可附加到40針擴(kuò)展接頭連接器的硬件模塊的配置列表中進(jìn)行選擇。

  • 配置40針擴(kuò)展頭(Configure 40?pin expansion header):顯示一個屏幕(在下方),您可以在其中指定要在40針擴(kuò)展頭上啟用的功能。

兼容硬件屏幕

當(dāng)您選擇“配置兼容硬件(configure for compatible hardware)”選項時,Jetson?IO將顯示一些硬件模塊的配置列表。

當(dāng)前有兩個硬件模塊可供配置:

  • Adafruit SPH0645LM4H(I2S MEMS麥克風(fēng))
  • FE-PI Audio Z V2(SGTL5000 I2S音頻編解碼器)

選擇配置后,Jetson-IO返回主屏幕,主屏幕顯示為針對該配置更新后的40針擴(kuò)展接頭的圖。

您可以選擇以下操作:

  • 保存并重新啟動以重新配置引腳(Save and reboot to reconfigure pins):通過為配置應(yīng)用設(shè)備樹覆蓋來創(chuàng)建新的DTB。然后,它將更新用于引導(dǎo)Linux的配置文件( /boot/extlinux/extlinux.conf)并重新引導(dǎo)開發(fā)人員工具包。

請注意,在更新配置文件之后,您仍然可以將開發(fā)人員工具包引導(dǎo)至先前的配置,因為Jetson ?IO 通過為新配置添加新條目來更新extlinux.conf。先前的配置仍在文件中。引導(dǎo)目標(biāo)時,引導(dǎo)加載程序使您可以選擇配置(或文件中定義的任何其他配置)。

  • 保存并退出而不重新引導(dǎo)(Save and exit without rebooting):創(chuàng)建一個新的DTB并更新 extlinux.conf,其方式與“保存并重新引導(dǎo)”相同,但不重新引導(dǎo)開發(fā)人員工具包。您可以通過選擇一次重新啟動來應(yīng)用新配置。

  • 放棄引腳更改(Discard pin changes):放棄更改并返回主屏幕。

  • 退出(Exit):終止Jetson?IO,而不進(jìn)行任何更改。

40引腳擴(kuò)展標(biāo)題屏幕

當(dāng)您在主屏幕上選擇“配置40針擴(kuò)展頭”選項時,Jetson-IO將顯示40針頭I / O支持的特殊功能列表。它在括號中顯示了與功能相關(guān)的引腳。

例如,在NVIDIA ?杰特森?納米開發(fā)工具包,杰特森-IO顯示的功能列表如下。

image

有關(guān)支持的功能的更多詳細(xì)信息,請參閱開發(fā)人員套件中的Jetson SoC 技術(shù)參考手冊。

您可以根據(jù)需要選擇或取消選擇功能。

要接受所選的功能集,請選擇“返回”選項。Jetson?IO返回主屏幕。它會重新顯示在“ 兼容硬件屏幕 ”之后顯示的主屏幕,并附加一個條目:

  • 導(dǎo)出為設(shè)備樹覆蓋圖:將40針擴(kuò)展頭的配置導(dǎo)出為新的設(shè)備樹覆蓋圖。

命令行界面

如果您希望從命令行而不是從菜單配置40針擴(kuò)展頭,NVIDIA提供了一組命令行工具,它們提供相同的功能。以下各節(jié)介紹了這些實用程序。

按引腳名稱查看40引腳接頭連接器配置

  • 名稱
    config-by-pin.py-顯示40針擴(kuò)展頭的配置

  • 概要

config-by-pin.py [選項]

  • 描述
    顯示40針擴(kuò)展接頭連接器的當(dāng)前配置。以下選項指定要顯示的配置。如果未使用任何選項,則顯示整個配置。

  • -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

通過特殊功能配置40針接頭連接器

  • 名稱
    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)建一個新的DTB或設(shè)備樹覆蓋(DTBO)。如果該命令創(chuàng)建了一個新的DTB文件,則將使用新選項更新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

通過硬件模塊配置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引導(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"

添加對自定義硬件的支持

您可以通過為硬件模塊創(chuàng)建設(shè)備樹覆蓋(Device Tree overlay)來使用Jetson?IO支持自定義硬件模塊。以下各節(jié)描述了此過程。

設(shè)備樹覆蓋(Device Tree Overlays)

要添加對自定義硬件的支持到Jetson?IO,您必須了解Jetson?IO如何管理附加硬件。對硬件模塊的支持由設(shè)備樹覆蓋文件(.dtbo文件)處理。

硬件模塊的設(shè)備樹覆蓋必須定義:

  • 一個覆蓋名稱屬性overlay-name,用于指定硬件模塊的名稱

  • 兼容屬性compatible,指示Jetson模塊和覆蓋支撐件,其組合

  • 40針擴(kuò)展接頭上需要的特殊功能IO(如果有)

  • 模塊上任何設(shè)備的節(jié)點(diǎn)和/或?qū)傩?,例如,外部集成電路,例如音頻編解碼器

該疊加名稱屬性必須是唯一的名稱,從別人的覆蓋區(qū)別。該兼容屬性必須有一個或多個以下的,這取決于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開發(fā)人員工具包,此命令還將標(biāo)識PCB版本。

$ cat /sys/firmware/devicetree/base/compatible

例如,請考慮FE-PI Audio Z V2模塊。目標(biāo)的/ boot目錄中是名稱與模式匹配的覆蓋文件:

  • -fe-pi-audio-z-v2.dtbo

您可以使用fdtdump實用工具檢查覆蓋文件的內(nèi)容,并查看覆蓋名稱(overlay-name)和兼容屬性(compatible)。例如,在Jetson Nano開發(fā)人員工具包上,您可以通過輸入以下命令來顯示這些屬性:

$ fdtdump /boot/tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio-z-v2.dtbo

創(chuàng)建一個簡單的設(shè)備樹覆蓋層

要創(chuàng)建簡單的設(shè)備樹覆蓋圖以為Jetson Nano(帶有A02載板和A02模塊)開發(fā)人員工具包添加新的自定義屬性,請在目標(biāo)平臺上創(chuàng)建一個名為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會找到該覆蓋文件并允許您應(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)建覆蓋文件,則最簡單的方法是使用Jetson-IO根據(jù)需要配置40針接頭連接器并將配置導(dǎo)出為覆蓋。您可以使用面向菜單的Jetson-IO腳本或關(guān)聯(lián)的·config-by -...·命令行工具來執(zhí)行此操作。

例如,要為啟用I2S接口的Jetson Nano(A02)創(chuà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.

然后,您可以通過輸入此命令將覆蓋圖轉(zhuǎn)換為設(shè)備樹源文件。

$ dtc -I dtb -O dts -o my-overlay.dts /boot/tegra210-p3448-0000-p3449-0000-a02-user-custom.dtbo

您可以根據(jù)需要為定制硬件修改生成的設(shè)備樹源,并添加硬件模塊所需的任何其他節(jié)點(diǎn)和/或?qū)傩?。然后,您可以重新編譯設(shè)備樹源并將其放置在/ boot /目錄中,以供Jetson?IO使用:

$ dtc -O dtb -o my-overlay.dtbo -@ my-overlay.dts
$ sudo cp my-overlay.dtbo /boot
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容