QOTOM 迷你电脑 Ubuntu下支持GPIO的方法
电脑硬件型号:Q350P
问题:
在使用在QOTOM Q350P迷你电脑时,发现安装ubuntu后,不能识别到GPIO。
cat /sys/kernel/debug/gpio 为空,这里通过安装驱动的方式尝试解决。
1.准备源代码
1 | cd /usr/src |
这里存放了系统内核源代码,linux-4.19.23是我单独下载的,这里使用4.19.23,直接使用系统自带的内核代码应该也是可以的。
2.配置内核
1 | root@tiger:/# cd usr/src/linux-4.19.23/ |
*Device Drivers *
GPIO Support
Port-mapped I/O GPIO drivers
通过GPIO说明书发现GPIO由TI8786E-1芯片处理,对IT87xx设置为[*]
然后save->Exit
3.编译并安装内核
编译内核,具体编译方法可以参见另一篇博文《Ubuntu 18.04 上编译Linux内核》
1 | root@tiger:/usr/src/linux-4.19.23# make -j4 |
编译结束后,执行安装
1 | make modules_install |
因为我已经生成新的内核启动项了,这里直接重启就行了
1 | root@tiger:/usr/src/linux-4.19.23#shutdown -r now |
4.验证结果
新的内核已经能够识别到GPIO
在用户空间通过sysfs接口访问gpio正常
/sys/class/gpio使用说明:
参考https://blog.csdn.net/u010871058/article/details/65648593
1 | 1、gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射。 |
测试GPIO:
通过查看说明书,得知使用的GPIO端口为80-87
1.找到对应的gpio编号
1 | cat /sys/kernel/debug/gpio |
2.使用gp87端口,设置输出模式为输出
1 | root@tiger:/sys/class/gpio# echo 511 > export |
3.测试led
高电平熄灭
1 | root@tiger:/sys/class/gpio# echo 1 > it87_gp87/value |
低电平点亮
1 | root@tiger:/sys/class/gpio# echo 0 > it87_gp87/value |
附上测试脚本,led闪烁100次
1 | #!bin/sh |
最终效果图
简单方法:如果系统原始内核已经存在该驱动,直接加载驱动就可以了 insmod gpio_xxx.ko
永久生效:install -p -m 644 xxx.ko