ARM类处理器GPIO引脚选择经验

# 一、为什么要选择
由于会采用开发板的内核映像文件,某些驱动可能占用了,而这部分驱动可能是:
1)由于想快速开发,所以不想改。
2)驱动不好分离,停用。
3)不知道驱动在哪里。
所以在选用GPIO引脚时,最好避开已使用的引脚。
查看占用引脚的方法有两个:
1、在开发板原理图上查找。
2、查看开发板的dts文件。
3、在开发板系统上打印GPIO口占用信息来分析。并试配一下引脚。
第1、2点在这里不讲述了。

# 二、在开发板原理图查看哪些引脚已经被占用
1)输入命令,将系统调试信息挂载到指定目录下,如/tmp
mount -t debugfs debugfs /tmp
2)打印GPIO口部分的信息
cat /tmp/gpio
显示如下:
# cat /tmp/gpio
GPIOs 0-127, platform/gpio.0, ambarella-gpio:

GPIO[0]: [0 – 31]
GPIO_BASE: 0xE8009000
GPIO_AFSEL: 0xFFFF0F0E
GPIO_DIR: 0x000000A1
GPIO_MASK: 0x00000080:0x0000F0F1
GPIO_DATA: 0x00000091
IOMUX_REG0_0: 0xF0F0000E
IOMUX_REG0_1: 0x01FF0F00
IOMUX_REG0_2: 0x0E000000
gpio-0 [GPIO] (sd ext power ) out hi
gpio-1 [HW ] (alt1)
gpio-2 [HW ] (alt1)
gpio-3 [HW ] (alt1)
gpio-4 [GPIO] ( ) in hi
gpio-5 [GPIO] ( ) out lo
gpio-6 [GPIO] ( ) in lo
gpio-7 [GPIO] (sd ext power ) out hi
gpio-8 [HW ] (alt2)
gpio-9 [HW ] (alt2)
gpio-10 [HW ] (alt2)
gpio-11 [HW ] (alt2)
gpio-12 [GPIO] ( ) in lo
gpio-13 [GPIO] ( ) in lo
gpio-14 [GPIO] ( ) in lo
gpio-15 [GPIO] ( ) in lo
gpio-16 [HW ] (alt2)
gpio-17 [HW ] (alt2)
gpio-18 [HW ] (alt2)
gpio-19 [HW ] (alt2)
gpio-20 [HW ] (alt3)
gpio-21 [HW ] (alt3)
gpio-22 [HW ] (alt3)
gpio-23 [HW ] (alt3)
gpio-24 [HW ] (alt2)
gpio-25 [HW ] (alt4)
gpio-26 [HW ] (alt4)
gpio-27 [HW ] (alt4)
gpio-28 [HW ] (alt1)
gpio-29 [HW ] (alt1)
gpio-30 [HW ] (alt1)
gpio-31 [HW ] (alt1)

下面还有很多引脚。

调试信息中显示了所有GPIO口的引用情况。可以看出哪些引脚被占用了,如GPIO0~7
哪些还是空置的。如GPIO4,5,6
*gpio-0 [GPIO] (sd ext power ) out hi* 这种时动态加载驱动模块占用了这个gpio口
*gpio-1 [HW ] (alt1)* 这种是静态驱动模块占用了。
这两种情况,想要在使用此引脚,就要改动dts文件,或者驱动源码了。
*gpio-4 [GPIO] ( ) in hi* 这种是未被使用的引脚。

3)试用
输入命令:echo [GPIO引脚号] > /sys/class/gpio/export
如果能创建引脚文件,则表明引脚可用。
如果引脚已被占用,系统会提示“sh: write error: Device or resource busy”

本文为原创文章,转载请注明出处!