CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 25493|回复: 27

GPIO点亮LED图文教程

[复制链接]
发表于 2013-8-15 00:58:16 | 显示全部楼层 |阅读模式
本帖最后由 hawkwolf 于 2013-8-16 10:24 编辑

                                
GPIO使用教程

转载需保留作者信息。作者:hawkwolf
系统环境
    主机 osubuntu12.04 desktop x86
cubieos: ubuntu 12.04 desktop v1.03 HDMI
cubie os.png
下载地址:http://linux-sunxi.org/Install_Ubuntu_Linux_for_Cubieboard
                                
这个镜像需要用livesuit刷如nand,刷如成功后在终端内执行sudo dhclient eth0解决网络问题(如果有),执行下列命令扩容nand
sudo resize2fs /dev/nandc
sudo resize2fs /dev/nandd
sudo resize2fs /dev/nande
sudo resize2fs /dev/nandf
PS:这个镜像是官方的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-src        http://dl.linux-sunxi.org/users/tom/ubuntu all main
  • ESC键,再输入:wq(冒号wq)保存退出文件。
  • sudo        apt-get update


安装编译环境
PS:下面两种选择只要选择其一即可,本文使用2
1.主机安装交叉编译环境
sudo apt-get install build-essential git libusb-1.0-0-dev pkg-configlibncurses5-dev u-boot-tools uboot-mkimage qemu-user-staticdebootstrap  binfmt-support -y
安装交叉编译链工具
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y
2.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/modules
2.i建进入编辑模式,用键盘的上下左右建移动,并在文件最末尾追加gpio_sunxi
自动挂载gpio驱动.png

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

评分

参与人数 1威望 +8 金钱 +8 贡献 +8 收起 理由
yzbx + 8 + 8 + 8 对新手相当照顾。

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-8-15 01:03:51 | 显示全部楼层
本帖最后由 hawkwolf 于 2013-8-16 10:27 编辑

                                
看到红色圈起部分证明系统自动加载了gpio驱动
修改script.bin
2.搜索sunxi
3.找到sunxi-tools,并跳转到sunxi-tools项目主页(PS:其他的也是有用的,目前用不到)
sunxi-tools.png
                                
4.点击上图红色圈圈标识的按钮复制项目git库地址
5.cd ~
6.mkdir cubie
7.cd cubie
8.mkdir src
9.cd src
11.等待项目克隆完成,执行cd sunxi-tools
12.执行下面的命令编译需要root用户。
        PS:开启root用户方法
              执行sudo passwd root命令,命令行会提示输入密码,输入两次密码即可
13.su root,输入密码进入root用户模式
14.make
15.ls,查看你就会看见fex2binbin2fex
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.fex
18.修改script.fex
        vi ./script.fex
        我这里禁用了基本用不到的[csi0_para]配置节
        找到[csi0_para]配置节,csi_used= 1改成csi_used= 0
禁用csi0_para配置节.png
                                
19.添加[gpio_para]配置节,非常重要,其他教程都没具体介绍
        在末尾增加如下内容
        [gpio_para]
        gpio_used= 1
        gpio_num= 8
        gpio_pin_1= portE04<1><default><default><default>
        gpio_pin_2= portE05<1><default><default><default>
        gpio_pin_3= portE06<1><default><default><default>
        gpio_pin_4= portE07<1><default><default><default>
        gpio_pin_5= portE08<1><default><default><default>
        gpio_pin_6= portE09<1><default><default><default>
        gpio_pin_7= portE10<1><default><default><default>
        gpio_pin_8= portE11<1><default><default><default>
gpio_para配置节.png
                                
PS:我这里用了8pin,从PE04PE11,你可以根据你外接传感器需求调整,需求较多pin脚,可以相应的禁用其他不用的配置节,以获得更多的扩展端口供pin脚使用。
20.超内存到500,可提高运行速度降低CPU温度,亲测降CPU温度很明显,运行稳定。(此步非必须
        搜索[dram_para]配置节,将dram_clk= 480改成dram_clk= 500
超内存到500.png
                                
21.保存退出
22.script.fex转回script.bin并放回nand
        ./fex2bin script.fex > ./script.bin
        cp ./script.bin /mnt/mmcp1/
        umount /mnt/mmcp1
23.重启系统
        sudo reboot


回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 01:12:13 | 显示全部楼层
本帖最后由 hawkwolf 于 2013-8-16 10:28 编辑
hawkwolf 发表于 2013-8-15 01:03
看到红色圈起部分证明系统自动加载了gpio驱动修改script.bin1.访问http://www.github.com2.搜索sunxi3. ...

                                
测试gpio

激活、设置gpio
1.激活引脚,需要root用户下
        根据我们在script.fex中定义的gpiopin脚和端口配置,我要激活gpio_pin_1,他对应的扩展端口是pe04,对应cubie板子上的U15(网口和USB口之间)的第34个针。
        echo1 > /sys/class/gpio/export
        ls /sys/class/gpio/
        可以看到多出来一个gpio1_pe4目录,表示我们成功激活了该pin,该目录的名称存在以下规律:
        gpio1_pe4gpio11就是取的我们在script.fex定义的gpio_pin_11
        gpio1_pe4pe4取的就是我们定义的扩展端口号pe04,这里将04转换成了4





回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 01:12:52 | 显示全部楼层
本帖最后由 hawkwolf 于 2013-8-16 10:29 编辑
hawkwolf 发表于 2013-8-15 01:12
测试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=低电平)



回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 01:13:07 | 显示全部楼层
本帖最后由 hawkwolf 于 2013-8-16 10:31 编辑
hawkwolf 发表于 2013-8-15 01:12
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_cn
3.本文配置的gpio_para取的是pe04pe11,从上面地址中看到在扩展端口表格的最下方部分。对应cubie板子的U15,在网卡与USB口之间的那一排pin脚。如下说明是将cubie背面朝上,网口对左手,为参考,U15为靠近身体这两排针脚。

针脚与序号的对应关系
上面地址给出的扩展端口配置真正对应的是cubie背面,在pin脚一段标识有1pin脚开计数为1,他对面为2,他右面为3,如此来回数。
例如pe04对应的序号是34
        需从标识1的引脚往右面数到第17个针脚对面的的即为34
        需从标识1的引脚往右面数到第19个针脚对面的的即为37,为Ground(接地)。        
        
物理电路
1.自备led一枚,220电阻一枚,面包线若干,面包版一块(没有led用万用表测引脚电压也可以),并串联好电路,led需串联220的电阻,否则会烧坏led

前面已经设置gpio_pin_1PE04端口)为高电平,将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驱动使用总结
cubieboardGPIO教程

最重要的参考

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 01:16:28 | 显示全部楼层
发个贴还要分成N贴回复才能发上来,郁闷。给个PDF的链接 gpio点亮LED图文教程.pdf (398.07 KB, 下载次数: 105)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 01:25:45 来自手机 | 显示全部楼层
上一个图,有图有真相
IMG20130815013526.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 07:34:19 来自手机 | 显示全部楼层
上个图,有图有真相
IMG20130815074403.jpg
回复 支持 反对

使用道具 举报

发表于 2013-8-15 08:40:49 | 显示全部楼层
学习了!正想要的教程,相当详细啊。
回复 支持 反对

使用道具 举报

发表于 2013-8-15 08:42:54 | 显示全部楼层
楼主还用GPIO驱动啊?能用是能用,但是要修改script文件,已经落伍了,可以参考我的半分钟GPIO,不需要驱动:http://cn.cubieboard.org/forum.p ... ;tid=727&extra=
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 19:15 , Processed in 0.036700 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部