有两种方法:
1.写驱动程序来控制,一般实现一个char类型的驱动,可以查看 driver/char/mini210_leds.c
2.在用户空间可以通过 /sys/class/gpio 来控制gpio
我们这里介绍采用第二种方式:
首先需要针对不同的平台注册gpiolib驱动,一般注册都是在 arch/arm/mach-xx/gpio.c中来完成。
前提是在内核或者驱动中该管脚没有使用gpio_request来申请过,因此我们需要将内核中去掉mini210_led.c驱动,因为改驱动是集成在内核中的,改驱动中request了我们需要控制的gpio口。
然后通过查找 /sys/class/gpiochipN来查找管脚所在的分组,
查找方法如下 :
分别使用 cat / sys/class/gpio/gpiochipN/label 来查看改组对应的名字是什么,是否和自己需要控制的管脚是同一个组,如果是则基于改组的起始地址+管脚偏移 就等于你要控制的管脚编号,比如我要控制 GPG2(4),那么我发现/ sys/class/gpio/gpiochip112/label的内容就是GPG2,那么112+4=116就是改管脚编号
找到以后
1.使用 echo 116 > /sys/class/gpio/export 来导出管脚,导出后,就会在 /sys/class/gpio下多出一个gpio116目录。操作改管脚的操作就在改目录下来实现
2.使用 echo out > /sys/class/gpio116/direction来设置方向为输出
3使用 echo 1 > /sys/class/gpio116/value 来设置管脚电平