转载请注明原处,谢谢。QQ:343556608
参考:http://processors.wiki.ti.com/index.php/GPIO_Driver_Guide
目前还没有涉及到代码(后续会有新的博客更新),仅关注到用户空间对GPIO的控制。
1.执行下面的命令,可以显示目前驱动已经申请到的IO状态
$ mount -t debugfs debugfs /sys/kernel/debug
$ cat /sys/kernel/debug/gpio
root@am335x-evm:/# cat /sys/kernel/debug/gpio
GPIOs 0-31, gpio:
gpio-2 (volume-up ) in hi
gpio-3 (volume-down ) in hi
gpio-6 (mmc_cd ) in hi
GPIOs 32-63, gpio:
gpio-48 (wlan_en ) out lo
gpio-53 (matrix_kbd_col ) out hi
gpio-54 (matrix_kbd_col ) out hi
gpio-57 (matrix_kbd_row ) in lo
gpio-58 (matrix_kbd_row ) in lo
gpio-59 (matrix_kbd_row ) in lo
GPIOs 64-95, gpio:
GPIOs 96-127, gpio:
gpio-114 (mmc_wp ) in lo
gpio-117 (bt_en
) out lo
2,重新申请一个新IO,但注意看一下原理图,最好是没有使用的IO,如果本身的IO在其它地方使用的话,有可能申请不到或是破坏设备。
下面我们申请118,并且查看有没有申请成功
root@am335x-evm:/# echo 118 > /sys/class/gpio/export
root@am335x-evm:/# ls /sys/class/gpio
export gpiochip0 gpiochip64 unexport
gpio118 gpiochip32 gpiochip96
root@am335x-evm:/# cat /sys/kernel/debug/gpio
GPIOs 0-31, gpio:
gpio-2 (volume-up ) in hi
gpio-3 (volume-down ) in hi
gpio-6 (mmc_cd ) in hi
GPIOs 32-63, gpio:
gpio-48 (wlan_en ) out lo
gpio-53 (matrix_kbd_col ) out hi
gpio-54 (matrix_kbd_col ) out hi
gpio-57 (matrix_kbd_row ) in lo
gpio-58 (matrix_kbd_row ) in lo
gpio-59 (matrix_kbd_row ) in lo
GPIOs 64-95, gpio:
GPIOs 96-127, gpio:
gpio-114 (mmc_wp ) in lo
gpio-117 (bt_en
) out lo
gpio-118 (sysfs ) in lo
3,改变IO为输出:
root@am335x-evm:/# echo "out" > /sys/class/gpio/gpio118/direction
使IO的输出为高:
root@am335x-evm:/# echo 1 > /sys/class/gpio/gpio118/value
root@am335x-evm:/# cat /sys/kernel/debug/gpio
GPIOs 0-31, gpio:
gpio-2 (volume-up ) in hi
gpio-3 (volume-down ) in hi
gpio-6 (mmc_cd ) in hi
GPIOs 32-63, gpio:
gpio-48 (wlan_en ) out lo
gpio-53 (matrix_kbd_col ) out hi
gpio-54 (matrix_kbd_col ) out hi
gpio-57 (matrix_kbd_row ) in lo
gpio-58 (matrix_kbd_row ) in lo
gpio-59 (matrix_kbd_row ) in lo
GPIOs 64-95, gpio:
GPIOs 96-127, gpio:
gpio-114 (mmc_wp ) in lo
gpio-117 (bt_en
) out lo
gpio-118 (sysfs ) out hi
4,释放IO,
root@am335x-evm:/# echo 118 > /sys/class/gpio/unexport
总结:这种模式我觉得在调试某些简单IO控制的一些设备的时候很方便,比如硬件用到一个IO开关某一设备,那么就几条命令就可以控制好了。如果用做学习,大家可以手工来点灯。