【全志T113-S3_100ask】通过GPIO口点亮RGB灯
一、查看是否有/sys/class/gpio这个目录
首先,查看开发板有没有/sys/class/gpio这个目录,如果没有,则需要重新编译内核。
可以看到,我的开发板这里面是没有这个目录的,所以需要重新编译内核并烧录。
二、重新编译内核
首先cd到buildroot目录下,对kernel单独进行编译,输入的命令如下:
make linux-menuconfig
选项如下:
找到Device Drivers->GPIO Support:
->/sys/class/gpio/…(sysfs interface)
选中它并保存,退出menuconfig,编译它。
补充一下buildroot常用操作:
1、单独编译 uboot
make uboot-menuconfig
make uboot-rebuild V=1
2、单独编译 kernel
make linux-menuconfig
make linux-rebuild V=1
3、单独编译配置busybox
make busybox-menuconfig
清理无效缓存 重新打包
rm -rf output/target; find output/build/ -name .stamp_target_installed | xargs rm ; make
4、编译sdcard 最小系统镜像
下面配置一般只需要第一次执行
make BR2_EXTERNAL="../br2t113pro ../br2lvgl " 100ask_t113-pro_sdcard_core_defconfig
uboot、kernel、rootfs 改动都需要执行make V=1
make V=1
编译完便开始烧录,这里略过。
可以看这篇文章:【全志T113-S3_100ask】3-自动烧录系统脚本
三、/sys/class/gpio目录介绍
再次cd到刚刚那个文件夹,可以看到刚刚没有的gpio目录已经出现:
gpio目录下各个目录的作用:
文件名 | 路径 | 作用 |
---|---|---|
export | ./gpio/export | 导出GPIO |
unexport | ./gpio/export | 清除导出的GPIO |
gpiochipN | ./gpio/gpiochipN/base | 设备所管理的GPIO初始编号 |
./gpio/gpiochipN/label | 设备信息 | |
./gpio/gpiochipN/ngpio | 设备管理的GPIO数 | |
./gpio/gpiochipN/power | 设备供电相关信息 | |
./gpio/gpiochipN/subsystem | 符号链接,指向父目录 | |
./gpio/gpiochipN/uevent | 内核与udev之间的通信接口 |
导出GPIO口:
echo 引脚编号 > export
首先我们需要计算引脚编号,引脚编号=控制引脚的寄存器基数+控制引脚寄存器位数。
如我现在RGB中的G接在PE11上,那么它的引脚编号432+11=139,这个432我是这么算来的——E是第五个字母,5减一得4再去乘以32。
如图所示:
接着,cd进gpio139,ls查看目录,echo向其中的direction输入out,这样就是输出模式了。
修改direction为out之后,给value它echo一个1,表示输出高电平,RGB灯亮绿色。
如图所示: