GPIO
开发板上引出了4个GPIO,分别是GPIO11、GPIO2、GPIO7和GPIO6。并且通过原理图和gpio.h了解到这些GPIO对应的GPIO_NUM:
# vi kernel/drivers/sstar/include/infinity2m/gpio.h
GPIO丝印名称 | GPIO NUM |
---|---|
IO11 | 11 |
IO2 | 73 |
IO7 | 7 |
IO6 | 6 |
- DTR配置
DTS需要将这4个GPIO设置为GPIO_MODE(取消其他复用,使默认为GPIO_MODE):
# cd kernel/arch/arm/boot/dts
# vi infinity2m-ssc011a-s01a-padmux-display.dtsi
# vi infinity2m-ssc011a-s01a-display.dtsi
# cd -
- kernel config 的配置
Kernel默认加载了GPIO驱动,因此不需要修改任何东西。
# cd kernel
# ARCH=arm make menuconfig
每次修改需要保存一下配置
# cp .config ./arch/arm/configs/infinity2m_spinand_ssc011a_s01a_minigui_defconfig -f
# cd ..
这样配置完成后,重新编译固件并升级kernel:
# cd ..
# ./Release_to_customer.sh -f nand -p ssd201
- 验证
我的验证方法是这样的,把IO11和IO2用导线联通,IO7和IO6用导线联通。然后将IO11作为输入,IO2作为输出,如果IO11的输入电平等于IO2的输出电平,说明GPIO功能是正常的;类似地,将IO7作为输入,IO6作为输出。
# echo 11 > /sys/class/gpio/export
# echo in > /sys/class/gpio/gpio11/direction
# echo 73 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio73/direction
# echo 1 > /sys/class/gpio/gpio73/value
# cat /sys/class/gpio/gpio11/value
# echo 0 > /sys/class/gpio/gpio73/value
# cat /sys/class/gpio/gpio11/value
# echo 7 > /sys/class/gpio/export
# echo in > /sys/class/gpio/gpio7/direction
# echo 6 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio6/direction
# echo 1 > /sys/class/gpio/gpio6/value
# cat /sys/class/gpio/gpio7/value
# echo 0 > /sys/class/gpio/gpio6/value
# cat /sys/class/gpio/gpio7/value
可以看到,结果与我们设想的一致。
至此,GPIO功能调试完成。
文档更新时间: 2021-08-17 14:45 作者:Aeeditor