1. 程式人生 > >把GPIO 通過sysfs匯出到 使用者空間

把GPIO 通過sysfs匯出到 使用者空間

1.1. 開啟gpiolib支援,在menuconfig中
evice Drivers->GPIO Support,選擇:
[*] /sys/class/gpio/… (sysfs interface)
<*> Generic memory-mapped GPIO controller support (MMIO platform device) 

* /sys/class/gpio/export          檔案用於通知系統需要匯出控制的GPIO引腳編號
* /sys/class/gpio/unexport      用於通知系統取消匯出
* /sys/class/gpio/gpiochipX    目錄儲存系統中GPIO暫存器的資訊,包括每個暫存器控制引腳的起始編號base,暫存器名稱,引腳總數 匯出一個引腳的操作步驟
* 首先計算此引腳編號,引腳編號 = 控制引腳的暫存器基數 + 控制引腳暫存器位數
* /sys/class/gpio/export           寫入此編號,比如12號引腳,在shell中可以通過以下命令實現,
     echo 12 > /sys/class/gpio/export
     命令成功後生成/sys/class/gpio/gpio12目錄,如果沒有出現相應的目錄,說明此引腳不可匯出;
* direction檔案,定義輸入輸入方向,可以通過下面命令定義為輸出
     echo out > /sys/class/gpio/gpio12/direction
     direction接受的引數:in, out, high, low。high/low同時設定方向為輸出

* value檔案是埠的數值,為1或0.
  echo 1 > /sys/class/gpio/gpio12/value

參考:http://blog.csdn.net/mirkerson/article/details/8464290

            http://blog.csdn.net/coroutines/article/details/44020819

            已經被系統分配的GPIO,echo操作會失敗,這是一種保護機制,為了測試,可以修改下程式碼來遮蔽(3.10.35核心)
            http://blog.csdn.net/coroutines/article/details/44020819

            例項:http://blog.csdn.net/drivermonkey/article/details/20132241?utm_source=tuicool&utm_medium=referral

1.2 開啟DEBUG_PINCTRL功能

Symbol: DEBUG_PINCTRL [=y] 

     Location:                                                              
       -> Device Drivers                                                 
          -> Pin controllers  
    -*- Support pin configuration controllers                          
    [*] Debug PINCTRL calls                                            
    <*> One-register-per-pin type device tree based pinctrl driver     
    [ ] Pinctrl driver for the PALMAS Series MFD devices   

1.3 gpio export報錯
強制export GPIO,可做如下操作:
\drivers\gpio\gpiolib.c
static int gpiod_request(struct gpio_desc *desc, const char *label)
新增 :desc->flags =   0;/*強制export GPIO  */


已經被系統分配的GPIO,echo操作會失敗,這是一種保護機制,為了測試,可以修改下程式碼來遮蔽(3.10.35核心)
http://blog.csdn.net/coroutines/article/details/44020819