gpio_operation 經過/sys/文件接口操做IO端口 GPIO到文件系統的映射linux
* 控制GPIO的目錄位於/sys/class/gpioshell
* /sys/class/gpio/export文件用於通知系統須要導出控制的GPIO引腳編號測試
* /sys/class/gpio/unexport 用於通知系統取消導出spa
* /sys/class/gpio/gpiochipX目錄保存系統中GPIO寄存器的信息,包括每一個寄存器控制引腳的起始編號base,寄存器名稱,引腳總數 導出一個引腳的操做步驟接口
* 首先計算此引腳編號,引腳編號 = 控制引腳的寄存器基數 + 控制引腳寄存器位數ip
* 向/sys/class/gpio/export寫入此編號,好比12號引腳,在shell中能夠經過如下命令實現,命令成功後生成/sys/class/gpio/gpio12目錄,若是沒有出現相應的目錄,說明此引腳不可導出:io
echo 12 > /sys/class/gpio/export編譯
* direction文件,定義輸入輸入方向,能夠經過下面命令定義爲輸出class
echo out > directionioc
* direction接受的參數:in, out, high, low。high/low同時設置方向爲輸出,並將value設置爲相應的1/0。
* value文件是端口的數值,爲1或0.
echo 1 > value
在嵌入式設備中對GPIO的操做是最基本的操做。通常的作法是寫一個單獨驅動程序,網上大多數的例子都是這樣的。其實linux下面有一個通用的GPIO操做接口,那就是我要介紹的 「/sys/class/gpio」 方式。
首先,看看系統中有沒有「/sys/class/gpio」這個文件夾。若是沒有請在編譯內核的時候加入 Device Drivers —> GPIO Support —> /sys/class/gpio/… (sysfs interface)。
/sys/class/gpio 的使用說明:
01
gpio_operation 經過/sys/文件接口操做IO端口 GPIO到文件系統的映射
02
* 控制GPIO的目錄位於/sys/class/gpio
03
* /sys/class/gpio/export文件用於通知系統須要導出控制的GPIO引腳編號
04
* /sys/class/gpio/unexport 用於通知系統取消導出
05
* /sys/class/gpio/gpiochipX目錄保存系統中GPIO寄存器的信息,包括每一個寄存器控制引腳的起始編號base,寄存器名稱,引腳總數 導出一個引腳的操做步驟
06
* 首先計算此引腳編號,引腳編號 = 控制引腳的寄存器基數 + 控制引腳寄存器位數
07
* 向/sys/class/gpio/export寫入此編號,好比12號引腳,在shell中能夠經過如下命令實現,命令成功後生成/sys/class/gpio/gpio12目錄,若是沒有出現相應的目錄,說明此引腳不可導出:
08
echo 12 > /sys/class/gpio/export
09
* direction文件,定義輸入輸入方向,能夠經過下面命令定義爲輸出
10
echo out > direction
11
* direction接受的參數:in, out, high, low。high/low同時設置方向爲輸出,並將value設置爲相應的1/0。
12
* value文件是端口的數值,爲1或0.
13
echo 1 > value
下面在2440下進行一下測試
1.取得GPIO信息,在終端中敲入如下命令
1
$ cd /sys/class/gpio
2
$ for i in gpiochip* ; do echo `cat $i/label`: `cat $i/base` ; done
終端中顯示以下
1
GPIOA: 0
2
GPIOE: 128
3
GPIOF: 160
4
GPIOG: 192
5
GPIOH: 224
6
GPIOB: 32
7
GPIOC: 64
8
GPIOD: 96
2.計算GPIO號碼
咱們把GPE11用來控制LED。
GPE0的頭是128,GPE11 就是128+11 = 139.
1
$ echo 139 >; /sys/class/gpio/export
ls 一下看看有沒有 gpio139 這個目錄
3.GPIO控制測試。
控制LED因此是輸出。
因此咱們應該執行
1
$ echo out > /sys/class/gpio/gpio139/direction
以後就能夠進行輸出設置了。
1
$ echo 1 > /sys/class/gpio/gpio139/value
or
1
$ echo 0 > /sys/class/gpio/gpio139/value