linux操作GPIO通用sysfs方法

查找/sys/class/gpio目錄,如果沒有,則在編譯內核時,加入Device Drivers->GPIO Support->/sys/class/gpio/...(sysfs interface)。

linux2.6及以上的內核可以使用系統中的GPIOLIB模塊在用戶空間提供的sysfs接口,實現應用層對GPIO的獨立控制。

Linux開發平臺實現了通用GPIO的驅動,用戶通過Shell命令或系統調用即能控制GPIO的輸出和讀取輸入值。其屬性文件均在/sys/class/gpio目錄下,如:

#ls /sys/class/gpio/
export   gpiochip0   gpiochip32   gpiochip64   gpiochip96   unexport

屬性文件有export和unexport。其餘四個文件爲符號鏈接(gpiochip0,gpiochip32,gpiochip64,gpiochip96),指向管理對應設備的目錄,以gpiochip0爲例,此目錄下文件有:

#ls /sys/class/gpio/gpiochip0
base    label    ngpio    power    subsystem    uevent

以上文件用途如表所示。

文件名 路徑 作用
export /sys/class/gpio/export 導出GPIO
unexport /sys/class/gpio/unexport 將導出的GPIO從sysfs中清除
gpiochipN /sys/class/gpio/gpiochipN/base 設備所管理的GPIO初始編號
/sys/class/gpio/gpiochipN/label 設備信息
/sys/class/gpio/gpiochipN/ngpio 設備所管理的GPIO總數
/sys/class/gpio/gpiochipN/power 設備供電方面的相關信息
/sys/class/gpio/gpiochipN/subsystem 符號鏈接,指向父目錄
/sys/class/gpio/gpiochipN/uevent 內核與udev(自動設備發現程序)之間的通訊接口

向export文件寫入需要操作的GPIO排列序號N,就可以導出對應的GPIO設備目錄:

操作命令如下:

#echo N > /sys/class/gpio/export

例如,導出序號爲68的GPIO的操作接口,在Shell下,可以用如下命令:

#echo 68 > /sys/class/gpio/export

通過以上操作後,在/sys/class/gpio目錄下生成gpioN目錄,通過讀寫該目錄下的屬性文件就可以操作這個GPIO的輸入和輸出。以此類推可以導出其它GPIO設備目錄。如果GPIO已經被系統佔用,導出時候會提示資源佔用。

以排列序號爲68的GPIO爲例,設備目錄下有如下屬性文件:

#ls /sys/class/gpio/gpio68/
active_low    edge    subsystem    value    direction    power    uevent

各個文件用途如下表。

文件名 路徑 作用
active_low /sys/class/gpio/gpioN/active_low 具有讀寫屬性。用於決定value中的值是否翻轉。0不翻轉,1翻轉。
edge /sys/class/gpio/gpioN/edge 具有讀寫屬性。設備GPIO中斷,或檢測中斷是否發生。
subsystem /sys/class/gpio/gpioN/subsystem 符號鏈接,指向父目錄。
value /sys/class/gpio/gpioN/value 具有讀寫屬性。GPIO的電平狀態設置或讀取。
direction /sys/class/gpio/gpioN/direction 具有讀寫屬性。用於查看或設置GPIO輸入輸出
uevent /sys/class/gpio/gpioN/uevent 內核與udev(自動設備發現程序)之間的通訊接口

GPIO基本操作

在應用層我們可以通過Shell命令操作GPIO。通過以下步驟,就可以控制GPIO輸入輸出。下面步驟是以GPIO的輸入輸出功能進行介紹。

1.輸入輸出設置

GPIO導出後默認爲輸入功能。向direction文件寫入“in”字符串,表示設置爲輸入功能;向directon文件寫入“out”字符串,表示設置爲輸出功能。讀direction文件,會返回in/out字符串,in表示當前GPIO作爲輸入,out表示當前GPIO作爲輸出。方向查看和設置命令如下:

#cat    /sys/class/gpio/gpioN/direction           #查看方向
#echo    out > /sys/class/gpio/gpioN/direction    #設置爲輸出
#echo    in  > /sys/class/gpio/gpioN/direction    #設置爲輸入

未完..........

參考ZLG

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章