GPIO操作是嵌入式开发中最常见的操作,本文将从硬件、驱动层、应用层去剖析am335x soc 的GPIO操作。
应用层使用
GPIO编号
GPIO的所有操作都是基于编号的,可以说编号是一个GPIO的ID,TI AM335x系列处理器GPIO的编号规则如下: AM335x系列SOC有4个bank,每个bank有32个GPIO,一共支持 个GPIO,GPIO的bank表示方法为: bank0[0:31] bank1[0:31] bank2[0:31] bank3[0:31]。例如芯片上有一个pin为gpio2_3, 则这个pin的GPIO编号为:
GPIO操作实例
# echo 67 > /sys/class/gpio/export
# echo "7" > /sys/class/gpio/gpio67/mode
# echo "out" > /sys/class/gpio/gpio67/direction
or # echo "in" > /sys/class/gpio/gpio67/direction
操作GPIO 设置GPIO电平 # echo 0 > /sys/class/gpio/gpio67/value // set gpio value to low
# echo 1 > /sys/class/gpio/gpio67/value // set gpio value to high
读GPIO当前电平
# cat /sys/class/gpio/gpio67/value // read gpio value
# 1
# echo 67 /sys/class/gpio/unexport
内核配置
要使能linux下的GPIO功能,需要对内核进行配置,笔者使用的sdk是 sdk-am335x-evm-05.06.00.00 的官方发布包,主机系统为ubuntu-14.04。假设sdk的配置已经做过。 # make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm menuconfig
在执行过程中报错,显示很多调用找不到,这是因为ubuntu缺少一些库的支持,解决办法如下: # sudo apt-get install libncurses5 libncurses5-dev
驱动使用GPIO
芯片GPIO结构
|