我有一個運行3.2內核的powerpc板。使用sysfs訪問gpio可以像預期的那樣工作,例如linux gpio c api
> echo 242 > /sys/class/gpio/export
> cat /sys/class/gpio/gpio242/value
> 1
有沒有API可以直接從用戶空間訪問gpio引腳?我必須處理基於文本的sysfs接口嗎?
我尋找類似於: gpio_set(int no,int val);
感謝 克勞斯
我有一個運行3.2內核的powerpc板。使用sysfs訪問gpio可以像預期的那樣工作,例如linux gpio c api
> echo 242 > /sys/class/gpio/export
> cat /sys/class/gpio/gpio242/value
> 1
有沒有API可以直接從用戶空間訪問gpio引腳?我必須處理基於文本的sysfs接口嗎?
我尋找類似於: gpio_set(int no,int val);
感謝 克勞斯
一旦你在VFS樹創建的設備,你可以打開他們像典型的文件,假設你寫了一個驅動器,並有在創建該MAKEDEV文件分配正確的主次編號vfs樹上的gpio引腳。
每個GPIO都被映射爲一個寄存器,所以你可以通過/ dev/mem訪問它。請參閱here。如果你想直接訪問一個GPIO,你必須在內核空間級別工作
sysfs是最低級別,在這個級別上你可以在最近的內核中操縱GPIO。它可以是有點乏味,但它在舊風格的API提供了幾個優點:
我此刻沒有示例代碼,而是通過C代碼訪問它們時,我通常實現一個非常簡單的包裝器操作文件描述符並具有以下int的變體erface:
int gpio_open(int number, int out); /* returns handle (fd) */
int gpio_close(int gpio);
int gpio_set(int gpio, int up);
int gpio_get(int gpio, int *up);
int gpio_poll(int gpio, int rising_edge, int timeout);
從那時開始,實現非常簡單。
試試[this](http://foxlx.acmesystems.it/?id=22)或[this](http://www.mjmwired.net/kernel/Documentation/gpio.txt)。 –