Linux
將使用者空間操作與核心程式碼相關聯
我有一個帶有 Ubuntu 18.04 和專用核心的 up2board,所以我可以使用這個板特定的硬體,比如 LED。我使用以下命令打開這些 LED:
$ sudo -i $ cd /sys/class/gpio $ echo 432 > export $ cd gpio432 $ echo "out" > direction $ echo 1 > value
現在,我想了解兩件事:
- 諸如命令如何
echo 1 > value
從使用者空間傳播到驅動程序。- 如何找出負責此 LED 支持的驅動程序。
非常簡短:
中的條目
/sys
並不是真正的文件。此掛載類型為sysfs
,在核心中,這對應於核心的其他部分可以註冊自己的 API。然後當這個文件系統的“文件”被讀取或寫入時,sysfs 將這些動作轉發給註冊的模組。核心的
gpio
(通用 I/O)層再次是其他驅動程序可以註冊的抽象。通常這些是晶片或晶片組的驅動程序,它們在晶片本身中具有 GPIO 寄存器。這些晶片的 GPIO 引腳如何接線取決於硬體。
Documentation/gpio/gpio.txt
可以在核心原始碼中的 etc. 中找到更多資訊。至於辨識驅動程序的方法,一種方法是
ll gpio432
在創建 gpio 節點後查看符號連結;它將指向具有帶有 GPIO 寄存器的晶片/晶片組的設備。然後查找該設備的驅動程序。另一種方法是查看
dmesg
驅動程序在註冊 GPIO 時是否產生消息。可能也可以通過 訪問此資訊
udevadm
。