Linux

將使用者空間操作與核心程式碼相關聯

  • May 4, 2019

我有一個帶有 Ubuntu 18.04 和專用核心的 up2board,所以我可以使用這個板特定的硬體,比如 LED。我使用以下命令打開這些 LED:

$ sudo -i
$ cd /sys/class/gpio
$ echo 432 > export
$ cd gpio432
$ echo "out" > direction
$ echo 1 > value

現在,我想了解兩件事:

  1. 諸如命令如何echo 1 > value從使用者空間傳播到驅動程序。
  2. 如何找出負責此 LED 支持的驅動程序。

非常簡短:

中的條目/sys並不是真正的文件。此掛載類型為sysfs,在核心中,這對應於核心的其他部分可以註冊自己的 API。然後當這個文件系統的“文件”被讀取或寫入時,sysfs 將這些動作轉發給註冊的模組。

核心的gpio(通用 I/O)層再次是其他驅動程序可以註冊的抽象。通常這些是晶片或晶片組的驅動程序,它們在晶片本身中具有 GPIO 寄存器。這些晶片的 GPIO 引腳如何接線取決於硬體。

Documentation/gpio/gpio.txt可以在核心原始碼中的 etc. 中找到更多資訊。

至於辨識驅動程序的方法,一種方法是ll gpio432在創建 gpio 節點後查看符號連結;它將指向具有帶有 GPIO 寄存器的晶片/晶片組的設備。然後查找該設備的驅動程序。

另一種方法是查看dmesg驅動程序在註冊 GPIO 時是否產生消息。

可能也可以通過 訪問此資訊udevadm

引用自:https://unix.stackexchange.com/questions/517075