
我在 SAMA5D27 嵌入式板上使用 Linux。我還使用 libgpiod 來操作主機板的 GPIO 配置。首先,我可以使用指令列出指定 gpiochip 的所有行、它們的名稱、消費者、方向、活動狀態gpioinfo
,這向我顯示:
gpiochip0 - 128 lines:
line 0: "PA0" unused input active-high
line 1: "PA1" unused input active-high
line 2: "PA2" unused input active-high
line 3: "PA3" unused input active-high
line 4: "PA4" unused input active-high
line 5: "PA5" unused input active-high
line 6: "PA6" unused input active-high
line 7: "PA7" unused input active-high
line 8: "PA8" unused input active-high
line 9: "PA9" unused input active-high
line 10: "PA10" "red" output active-high [used]
line 11: "PA11" unused input active-high
...
對於我的工作,我想為個人保留“PA10”;,該引腳指的是紅色LED。但無論使用什麼指令來操作這個 GPIO 引腳,它都會向我展示:
error setting the GPIO line values: Device or resource busy
我認為這是因為它顯示為[used]
.
有辦法讓它不被使用嗎?讓它自由以便我可以操縱它?
答案1
標記used
和Device or resource busy
表示該 I/O 引腳已被驅動程式宣告為獨佔使用。
有幾種方法可以深入了解可能使用該引腳的內容:
- 檢查
/sys/class/gpio/gpio*/
(現已棄用,但仍經常使用) - 檢查
/sys/kernel/debug/gpio
(如果有debugfs
可用且已安裝) - 檢查活動設備樹,查看引腳是否與裝置或驅動程式關聯
它red
在這裡命名,並且您提到它是一個 LED,因此它可以在 下暴露/sys/class/leds/*
,可能帶有預設觸發器?如果是這樣,您可以透過修改觸發器來重新調整它的用途,或者如果您想更直接/使用libgpiod 手動控制引腳,則可以將其取消註冊為LED...編輯裝置樹可能是使變更永久化的方法。
答案2
“使用”表示該引腳連接到外圍設備或匯流排。您可以從核心設備樹 dts 檔案和電路板原理圖中查看哪一個對應到該引腳。例如,如果引腳連接到 i2c 總線,則應使用 i2c 命令而不是 gpio cmd。