1,开发板:韦东山JZ2440。
2,linux 版本:linux-3.4.2
3、参考文献:
http://blog.csdn.net/coroutines/article/details/44020819、http://blog.sina.com.cn/s/blog_b01e1c0a0102v0nv.html、http://blog.csdn.net/elitah/article/details/16981507、http://blog.csdn.net/qq_31505483/article/details/54583143、http://blog.csdn.net/fyyy4030/article/details/6704707
一、环境配置,按照我的上一篇文章配置好之后,可在/sys/class/下生成gpio文件夹
[root@UnixHost ]# ls /sys/class/gpio export gpiochip0 gpiochip160 gpiochip224 gpiochip32 gpiochip96 gpio165 gpiochip128 gpiochip192 gpiochip256 gpiochip64 unexport
二、控制板载LED
下面控制板载的LED,由这篇文章http://blog.csdn.net/qq_31505483/article/details/54583143,可知板载LED的引脚分别为:GPF4 GPF5 GPF6,于是根据这篇文章http://blog.csdn.net/coroutines/article/details/44020819,gpioN的N是由n*32 + m得来,n是第n个gpio模块,m是寄存器第m位以及这篇文章http://blog.csdn.net/fyyy4030/article/details/6704707,描述如下:
很显然, S3C2410_GPB(5)就是从GPA的首地址+GPA个数+GPB的offset就是当前GPB的IO偏移量,即
0+32+5=37, 同理
S3C2410_GPB(0) 相当于 32
30 S3C2410_GPB(5) 相当于 37
31 S3C2410_GPB(6) 相当于 38
32 S3C2410_GPB(7) 相当于 39
33 S3C2410_GPB(8) 相当于 40
以及这篇文章:http://blog.csdn.net/elitah/article/details/16981507,描述如下:
除了特殊功能的引脚外,S3C2440A拥有130 个多功能GPIO引脚,共9组:
– 端口A(GPA):25 位输出端口– 端口B(GPB):11 位输入/输出端口
– 端口C(GPC):16 位输入/输出端口
– 端口D(GPD):16 位输入/输出端口
– 端口E(GPE):16 位输入/输出端口
– 端口F(GPF):8 位输入/输出端口
– 端口G(GPG):16 位输入/输出端口
– 端口H(GPH):9 位输入/输出端口
– 端口J(GPJ):13 位输入/输出端口
计算得出GPF5的引脚号为5*32+5=165,于是根据这篇文章http://blog.sina.com.cn/s/blog_b01e1c0a0102v0nv.html,进行以下操作:
#导出的GPIO echo 165 > /sys/class/gpio/export #LED亮 echo out > /sys/class/gpio/gpio165/direction #LED 灭 echo 1 >/sys/class/gpio/gpio165/value #取消导出的GPIO echo 165 > /sys/class/gpio/unexport
从而实现了LED的控制,于是写了以下的脚本测试LED。实现指定LED的亮灭交替闪烁:
[root@UnixHost ]# vi /bin/ledtest.sh #! /bin/sh echo $1 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio$1/direction while : do echo 1 > /sys/class/gpio/gpio$1/value sleep 1 echo 0 > /sys/class/gpio/gpio$1/value sleep 1 done执行ledtest.sh 165即可实现LED的亮灭交替变化,拿走不谢~~·· 。