快速瀏覽

替代心跳 LED



測試環境

硬件核心
C23.14.79-117
C44.9.113+
N24.9.216+

您可以將藍色心跳 LED 重新映射到另一個引腳。


...
        leds: gpio_leds {
                compatible = "gpio-leds";

		pinctrl-names = "led_pins";
		pinctrl-0 = <&led_pins>;

                /* Blue LED */
                heartbeat {
                        label = "blue:heartbeat";
                        gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
                        linux,default-trigger = "heartbeat";
                };
        };
...

或者

sudo find /proc/device-tree/ -name *led*
...
/proc/device-tree/gpio-leds
...

還有就是心跳節點GPIO-LED的結點,而個GPIO財產GPIO-LED的節點

如果您像在 c2 上找到的那樣在另一個板上查找與“led”相關的節點,結果是:

硬件節點財產
C2/gpio-leds/心跳GPIO
C4/leds/blueledGPIO
N2/leds/blueledGPIO

所述的GPIO屬性有3個參數,&gpio_ao,GPIOAO_13,GPIO_ACTIVE_LOW在C2。

  • &gpio_ao表示將要使用的引腳的引腳庫。
  • GPIOAO_13表示心跳 LED 的引腳。
  • GPIO_ACTIVE_LOW是 GPIO 引腳何時處於活動狀態的標誌。如果在 GPIO_ACTIVE_LOW 中,當輸出信號為 0 時,該 GPIO 引腳處於活動狀態。

GPIOAO_13與C2 上的藍色LED 相連,以便在C2 運行時LED 心跳。

因此,如果您想使用其他 GPIO 引腳,請更改引腳組和編號。

一個工具,device-tree-compiler,可以讓你更容易地做到這一點。


通過以下命令 安裝device-tree-compiler。

sudo apt install device-tree-compiler

現在您可以使用fdtgetfdtput命令,這使我們無需構建新內核即可編輯 DTS。

fdtget <dtb file path> /<node>/.../<node> <property>
fdtput [-t <type>] <dtb file path> /<node>/.../<node> <property> <value> [<value> ...]

* 查找 dtb 文件。* 找出您想要的gpios屬性設置值。* 設置值。

查找 dtb 文件

通常,.dtb 文件在`/media/boot` 中。

sudo find / -name .dtb
...
/media/boot/meson64_odroidc2.dtb
...
找出設置值
找出設置值
硬件GPIO 組GPIO AO 組
C29637
C41917
N21924
密碼
引腳活動狀態
  • GPIO_ACTIVE_HIGH:0
  • GPIO_ACTIVE_LOW : 1

如果 LED 的正極(+)端通過寄存器連接到 3.3V,LED 的負極(-)端連接到您設置的 GPIO 引腳,則應使用GPIO_ACTIVE_HIGH
或者,如果 LED 的正極 (+) 側連接到您通過寄存器設置的 GPIO 引腳,而 LED 的負極 (-) 側接地,則應使用GPIO_ACTIVE_LOW
其實這取決於你的系統,根據你所處的環境選擇合適的。

選擇值

如果您想在物理位置使用引腳 13(C2 上的 GPIOX_11)並且 LED 活動狀態為高電平,請選擇 GPIO bank(96)、GPIOX_11(103) 和 GPIO_ACTIVE_HIGH(0) 以獲取 `gpios` 屬性的值。


為了進行測試,我已將我們的Tinkering Kit連接到我的 C2。
我用一個寄存器和一個 LED 設置了測試環境,該 LED 的正(+)側通過 330Ω 寄存器連接到 GPIO 引腳 #13,而 LED 的負(-)側是接地。
請看下面的圖片。 在 C2 上,它只需輸入正確的命令即可。 由於我已將引腳連接到 GPIO 引腳 #13(GPIOX_11),因此我將輸入96(pin bank) 103(pin number)作為前兩個參數。 我需要添加一個參數0(GPIO_ACTIVE_LOW)來正確顯示心跳。

在 C2 上,它只需輸入正確的命令即可。
由於我已將引腳連接到 GPIO 引腳 #13(GPIOX_11),因此我將輸入 96(pin bank) 103(pin number) 作為前兩個參數。
我需要添加一個參數 0(GPIO_ACTIVE_LOW) 來正確顯示心跳。

不要忘記您應該重新啟動才能生效。

root@odroid64:~# fdtput /media/boot/meson64_odroidc2.dtb /gpio_leds/heartbeat gpios 96 103 0
root@odroid64:~# reboot

重新啟動後,LED 心跳就像之前板上的藍色 LED。

您可以檢查設備樹中寫入的更改是否良好。

root@odroid64:~# fdtget /media/boot/meson64_odroidc2.dtb /gpio_leds/heartbeat gpios
96 103 0

要恢復默認設置,請輸入以下命令。

root@odroid64:~# fdtput /media/boot/meson64_odroidc2.dtb /gpio_leds/heartbeat gpios 37 13 1
root@odroid64:~# reboot

當然,您可以按照本指南使用您想要的其他引腳。


快速瀏覽

ODROID-C4

四核ARM CORTEX-A55 |4GB RAM |4 USB3 PORTS