sys下gpio操做

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

相關文章
相關標籤/搜索