A10,gpio

 

linux-sunxi +busybox,GPIO-sun4i驱动

移植busybox,把gpio-sunxi.ko放到lib/modules下

增加:
[gpio_para]
gpio_used = 1
gpio_num = 67
gpio_pin_1 = port:PE06<1><1>

[gpio_init]
pin_1 = port:PE06<1><1>

 

上电
# insmod /lib/modules/gpio-sunxi.ko

# echo 1 > /sys/class/gpio/export
# ls /sys/class/gpio
会出现端口文件夹 gpio1-pe6,

此处错误,无gpio1-pe6
需要改文件系统

# vi etc/profile文件:

#Ash profile
#vim:syntax=sh

#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1

USER="id -un"
LOGNAME=$USER
PS1='[\u@\h=W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH

 

 

# vi etc/init.d/rcS文件:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

echo "----------munt all----------------"
mount -a

echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s

echo "***********************************************"
echo "****************Studying ARM*********************"
echo "Kernel version:linux-2.6.29.1"
echo "Student:Feng dong rui"
echo "Date:2009.07.15"
echo "***********************************************"

/bin/hostname -F /etc/sysconfig/HOSTNAME
使用以下命令改变rcS的执行权限:
# chmod +x rcS

 

 

如果 echo 1 > /sys/class/gpio/export  似乎出现 gpio1-pe1。


2)打开gpio4-pe4,或者 ls gpio4-pe4,可以看到gpio4-pe4里面的文件,有2个文件与我们操作有关:
分别是 direction 和 value ,可以看出分别代表端口的方向 和端口的值。
对于direction ,可以写入


# echo 1 > /sys/class/gpio/export       //似乎出现 gpio1-pe1

# echo out > /sys/class/gpio/gpio4-pe4/direction   //设置该端口为输出端。如果不设置,则写入数据也没有反应。

# echo 1 > /sys/class/gpio/gpio4-pe4/value     //通过向value文件写入1或者0


3)端口设置或清零.
通过向value文件写入1或者0来完成端口的设置或清零。
echo 1 > /sys/class/gpio/gpio4-pe4/value ;set 1.
通过上述3个步骤就可完成对GPIO端口的选择、设置、和使用。
但是在使用中发现问题及解决方法:
1 gpio-sunxi.ko驱动不会自动被系统加载,每次启动后需要自己加载,比较麻烦。
解决方法:编辑 /etc/modules 添加gpio驱动模块。之后每次重启后,系统自动加载GPIO模块。
2.每次系统重启后都需要重新设置GPIO口,配置端口方向。
解决方法:编辑 /etc/rc.local,在exit前 加入
echo 1 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio4-pe4/direction
完成对GPIP口的选择和端口设置。
3.对于 /sys的操作 需要chmod一下权限。chmod -R 777 /sys .
这也需要编辑/etc/rc.local来实现。

另外,这次我利用CB实现的功能是与ttl智能门锁类似,我是使用手机来控制照明灯。
基本的架构也是利用 LNMP来做服务器,利用php语言对  /sys/class/gpio/gpio4-pe4/value进行读写操作来完成的。
这里需要注意的是 nginx服务器的网站目录设置,之前设置在 /etc/nginx/www/不能完成对 /sys/..的操作。
后来重新修改了网站站点目录,直接设置到 / 下,就可完成对 /sys 文件的操作了。

你可能感兴趣的:(A10)