在嵌入式設備中對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中能夠經過如下命令實現, echo 12 > /sys/class/gpio/export 命令成功後生成/sys/class/gpio/gpio12目錄,若是沒有出現相應的目錄,說明此引腳不可導出: 08 09 * direction文件,定義輸入輸入方向,能夠經過下面命令定義爲輸出 10 echo out > /sys/class/gpio/gpio12/direction 11 * direction接受的參數:in, out, high, low。high/low同時設置方向爲輸出, 並將value設置爲相應的1/0。 12 * value文件是端口的數值,爲1或0. 13 echo 1 >/sys/class/gpio/gpio12/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