hawkwolf 发表于 2013-8-15 00:58:16

GPIO点亮LED图文教程

本帖最后由 hawkwolf 于 2013-8-16 10:24 编辑

                              GPIO使用教程
转载需保留作者信息。作者:hawkwolf系统环境    主机 os:ubuntu12.04 desktop x86cubieos: ubuntu 12.04 desktop v1.03 HDMI下载地址:http://linux-sunxi.org/Install_Ubuntu_Linux_for_Cubieboard
                              这个镜像需要用livesuit刷如nand,刷如成功后在终端内执行sudo dhclient eth0解决网络问题(如果有),执行下列命令扩容nandsudo resize2fs /dev/nandcsudo resize2fs /dev/nanddsudo resize2fs /dev/nandesudo resize2fs /dev/nandfPS:这个镜像是官方的A10镜像,支持CPU动态调频,内核是3.4.43的,集成里无线网卡驱动,支持HDMI输出(需要VGA的下面也有链接)。我的官方taobao店上买的水星无线网卡免驱动直接识别。
安装软件、工具、类库sudo apt-get install openssh-server vim
追加数据源ssh连接cubie,在终端内执行如下命令      1.cd/etc/apt/sources.list.d
[*]sudo      cp linaro-overlay-ppa.list sunxi.list
[*]sudo      vi sunxi.list
[*]按i建进入编辑模式,用键盘的上下左右建移动,并用删除键删除所有内容
[*]复制或手敲入如下内容      #      Sunxi packages      deb      http://dl.linux-sunxi.org/users/tom/ubuntu all main      deb-src      http://dl.linux-sunxi.org/users/tom/ubuntu all main
[*]按ESC键,再输入:wq(冒号wq)保存退出文件。
[*]sudo      apt-get update

安装编译环境PS:下面两种选择只要选择其一即可,本文使用21.主机安装交叉编译环境sudo apt-get install build-essential git libusb-1.0-0-dev pkg-configlibncurses5-dev u-boot-tools uboot-mkimage qemu-user-staticdebootstrapbinfmt-support -y安装交叉编译链工具sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y2.cubie上安装编译环境sudo apt-get install build-essential git libusb-1.0-0-dev pkg-config -y
查看GPIO驱动,执行如下命令cd /lib/modules/3.4.43+/kernel/drivers/gpio执行ls命令,可以看到已经自带了gpio-sunxi.ko驱动执行lsmod命令,查看系统加载了哪些驱动(默认没有sunxi_gpio)

设置开机自动加载gpio驱动执行如下命令:1.sudo vi /etc/modules2.按i建进入编辑模式,用键盘的上下左右建移动,并在文件最末尾追加gpio_sunxi


3.按ESC键,再输入:wq(冒号wq)保存退出4.sudo reboot,重启cubie5.启动后SSH链接cubie6.执行lsmod命令,可以查看当前系统加载的驱动,下面是我的系统情况截图


hawkwolf 发表于 2013-8-15 01:03:51

本帖最后由 hawkwolf 于 2013-8-16 10:27 编辑

                              看到红色圈起部分证明系统自动加载了gpio驱动修改script.bin1.访问http://www.github.com2.搜索sunxi3.找到sunxi-tools,并跳转到sunxi-tools项目主页(PS:其他的也是有用的,目前用不到)
                              4.点击上图红色圈圈标识的按钮复制项目git库地址5.cd ~6.mkdir cubie7.cd cubie8.mkdir src9.cd src10.git clonehttps://github.com/linux-sunxi/sunxi-tools.git11.等待项目克隆完成,执行cd sunxi-tools12.执行下面的命令编译需要root用户。      PS:开启root用户方法            执行sudo passwd root命令,命令行会提示输入密码,输入两次密码即可13.su root,输入密码进入root用户模式14.make15.ls,查看你就会看见fex2bin和 bin2fex了16.将nand中的script.bin拷贝到当前目录      mkdir /mnt/mmcp1      mount /dev/mmcblk0p1 /mnt/mmcp1      cp /mnt/mmcp1/script.bin ./17.script.bin转为script.fex      ./bin2fex script.bin > ./script.fex18.修改script.fex      vi ./script.fex      我这里禁用了基本用不到的配置节      找到配置节,csi_used= 1改成csi_used= 0
                              19.添加配置节,非常重要,其他教程都没具体介绍      在末尾增加如下内容            gpio_used= 1      gpio_num= 8      gpio_pin_1= port:PE04<1><default><default><default>      gpio_pin_2= port:PE05<1><default><default><default>      gpio_pin_3= port:PE06<1><default><default><default>      gpio_pin_4= port:PE07<1><default><default><default>      gpio_pin_5= port:PE08<1><default><default><default>      gpio_pin_6= port:PE09<1><default><default><default>      gpio_pin_7= port:PE10<1><default><default><default>      gpio_pin_8= port:PE11<1><default><default><default>
                              PS:我这里用了8个pin,从PE04到PE11,你可以根据你外接传感器需求调整,需求较多pin脚,可以相应的禁用其他不用的配置节,以获得更多的扩展端口供pin脚使用。20.超内存到500,可提高运行速度降低CPU温度,亲测降CPU温度很明显,运行稳定。(此步非必须)      搜索配置节,将dram_clk= 480改成dram_clk= 500
                              21.保存退出22.将script.fex转回script.bin并放回nand      ./fex2bin script.fex > ./script.bin      cp ./script.bin /mnt/mmcp1/      umount /mnt/mmcp123.重启系统      sudo reboot

hawkwolf 发表于 2013-8-15 01:12:13

本帖最后由 hawkwolf 于 2013-8-16 10:28 编辑

hawkwolf 发表于 2013-8-15 01:03 static/image/common/back.gif
看到红色圈起部分证明系统自动加载了gpio驱动修改script.bin1.访问http://www.github.com2.搜索sunxi3. ...
                              测试gpio
激活、设置gpio1.激活引脚,需要root用户下      根据我们在script.fex中定义的gpio的pin脚和端口配置,我要激活gpio_pin_1,他对应的扩展端口是pe04,对应cubie板子上的U15(网口和USB口之间)的第34个针。      echo1 > /sys/class/gpio/export      ls /sys/class/gpio/      可以看到多出来一个gpio1_pe4目录,表示我们成功激活了该pin,该目录的名称存在以下规律:      gpio1_pe4的gpio1的1就是取的我们在script.fex定义的gpio_pin_1的1      gpio1_pe4的pe4取的就是我们定义的扩展端口号pe04,这里将04转换成了4
http://cn.cubieboard.org/forum.php?mod=image&aid=870&size=300x300&key=eb42ca9d43d7b54a&nocache=yes&type=fixnone




hawkwolf 发表于 2013-8-15 01:12:52

本帖最后由 hawkwolf 于 2013-8-16 10:29 编辑

hawkwolf 发表于 2013-8-15 01:12 static/image/common/back.gif
测试gpio
激活、设置gpio1.激活引脚,需要子root用户下      根据我们在script.fex中定义的gpio的pin脚和 ...
2.设置引脚工作模式。一个GPIO引脚可以工作在输入模式 或 输出模式 下      echo out > /sys/class/gpio/gpio1_pe4/direction      cat /sys/class/gpio/gpio1_pe4/direction PS:查看pin工作模式      cat /sys/class/gpio/gpio1_pe4/value       PS:查看pin的值(1=高电平,0=低电平)http://cn.cubieboard.org/forum.php?mod=image&aid=871&size=300x300&key=9842518871fe4f70&nocache=yes&type=fixnone


hawkwolf 发表于 2013-8-15 01:13:07

本帖最后由 hawkwolf 于 2013-8-16 10:31 编辑

hawkwolf 发表于 2013-8-15 01:12 static/image/common/back.gif
2.设置引脚工作模式。一个GPIO引脚可以工作在输入模式 或 输出模式 下      echoout > /sys/class/gpio/gpio1_ ...
3.设置pin值,点亮led      echo1 > /sys/class/gpio/gpio1_pe4/value      cat /sys/class/gpio/gpio1_pe4/value
物理电路级针脚识别1.查看http://linux-sunxi.org/GPIO,了解最权威的gpio相关知识。2.引脚和端口对应位置说明,参看http://linux-sunxi.org/Cubieboard/zh_cn3.本文配置的gpio_para取的是pe04到pe11,从上面地址中看到在扩展端口表格的最下方部分。对应cubie板子的U15,在网卡与USB口之间的那一排pin脚。如下说明是将cubie背面朝上,网口对左手,为参考,U15为靠近身体这两排针脚。
针脚与序号的对应关系上面地址给出的扩展端口配置真正对应的是cubie背面,在pin脚一段标识有1的pin脚开计数为1,他对面为2,他右面为3,如此来回数。例如pe04对应的序号是34,      需从标识1的引脚往右面数到第17个针脚对面的的即为34。      需从标识1的引脚往右面数到第19个针脚对面的的即为37,为Ground(接地)。            物理电路1.自备led一枚,220电阻一枚,面包线若干,面包版一块(没有led用万用表测引脚电压也可以),并串联好电路,led需串联220的电阻,否则会烧坏led。
前面已经设置gpio_pin_1(PE04端口)为高电平,将cubie板上的U15的第34个针脚连接led电路的正极,cubie板上的U15的第37个针脚连接led电路的负极,则可以点亮led。
全文完!
PS:能够控制一个LED,那么其他传感器也不是问题。

参考:官方固件使用完美GPIO驱动教程(不是ugly驱动)http://cn.cubieboard.org/forum.php?mod=viewthread&tid=235&highlight=gpioCubieboard官方GPIO驱动使用总结http://cn.cubieboard.org/forum.php?mod=viewthread&tid=725&highlight=gpio
cubieboardGPIO教程https://github.com/cubieplayer/Cubian/wiki/GPIO%E5%85%A5%E9%97%A8
http://linux-sunxi.org/Cubieboard/zh_cn
最重要的参考http://linux-sunxi.org/GPIO

hawkwolf 发表于 2013-8-15 01:16:28

发个贴还要分成N贴回复才能发上来,郁闷。给个PDF的链接

hawkwolf 发表于 2013-8-15 01:25:45

上一个图,有图有真相

hawkwolf 发表于 2013-8-15 07:34:19

上个图,有图有真相

yzbx 发表于 2013-8-15 08:40:49

学习了!正想要的教程,相当详细啊。

tll 发表于 2013-8-15 08:42:54

楼主还用GPIO驱动啊?能用是能用,但是要修改script文件,已经落伍了,可以参考我的半分钟GPIO,不需要驱动:http://cn.cubieboard.org/forum.php?mod=viewthread&tid=727&extra=
页: [1] 2 3
查看完整版本: GPIO点亮LED图文教程