本文将为大家介绍如何在飞凌OKT507-C开发板上添加两个GPIO按键,希望能够对各位工程师有所帮助,本文章以PE5、PE6两个引脚为例。话不多说,下面我们进入主题。
一、GPIO按键添加方法
1. 添加内核配置
Linux内核源代码中集成了很多功能,一般的用户只会用到其中的部分功能。用户从中挑选自己需要的功能,这就叫内核配置。下面我们开始进行配置。
注意:
(1)在进行配置前,需要对
OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_dcfconfig文件提前做好备份;
(2)以下所有图中的红框为修改后的内容。
vi OKT507-linux-sdk/kernel/linux-4.9/.config
![pYYBAGNM0lyAC3miAAAeAmBgCG8226.png](https://file.elecfans.com/web2/M00/70/FB/pYYBAGNM0lyAC3miAAAeAmBgCG8226.png)
2. 添加key节点
添加结点需要我们到设备树中进行添加,设备树是一个描述硬件的数据结构,甚至你可以将其看成一个大结构体(这个结构体就是平台,成员就是具体的设备),将硬件的配置从linux内核的源码中提取出来。
下面打开我们的T507设备树文件,如下:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
![pYYBAGNM0lyAIeRQAAArPkS26ww202.png](https://file.elecfans.com/web2/M00/70/FA/pYYBAGNM0lyAIeRQAAArPkS26ww202.png)
其中按键键值设置如下。
![poYBAGNM0luAS-uoAAAVUZbCktg004.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0luAS-uoAAAVUZbCktg004.png)
相关键值可通过查看input-event-codes.h文件确定。
vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h
![poYBAGNM0lyAM6_sAAAVFykAKbM456.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0lyAM6_sAAAVFykAKbM456.png)
![poYBAGNM0lyAfkhtAAAQAstjo_Q043.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0lyAfkhtAAAQAstjo_Q043.png)
3. 添加引脚定义
添加引脚定义需要用到pinctrl,下面给大家简单介绍下pinctrl。pinctrl就是系统中pin引脚的控制。
假如在使用到GPIO、I2C等功能时,若按引脚逐一地去找对应的寄存器进行配置非常浪费时间和精力,所以内核引入了pinctrl子系统,把引脚的复用和配置抽象出来,只需要芯片厂商把自家芯片的支持进去,就可以很方便的配置引脚。
下面打开我们的pinctrl文件,如下:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
![pYYBAGNM0lyAT-iKAAARYiQfzAU649.png](https://file.elecfans.com/web2/M00/70/FB/pYYBAGNM0lyAT-iKAAARYiQfzAU649.png)
4. 关闭冲突功能
因为有些功能结点使用的引脚与我们这次复用的引脚发生冲突,会发生引脚不生效的错误,所以我们一定要检查好,然后将其关闭。
如下打开设备树文件:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
![poYBAGNM0lyAG6cUAABF-VcBCW0676.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0lyAG6cUAABF-VcBCW0676.png)
![poYBAGNM0lyAbBcHAAAVQURMk_0614.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0lyAbBcHAAAVQURMk_0614.png)
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
注意:
因摄像头csi复用的引脚与我们这里的冲突,虽然前面将状态disabled了,pinctrl这里也有可能会造成冲突,为了避免不必要的麻烦,我们也将这里注释掉。
![pYYBAGNM0l2AdbvXAABc9HA3nkM580.png](https://file.elecfans.com/web2/M00/70/FB/pYYBAGNM0l2AdbvXAABc9HA3nkM580.png)
5. 驱动修改
gpio-keys是基于input子系统实现的一个通用按键驱动,该驱动基于platform_driver架构,实现了驱动和设备分离,符合Linux设备驱动模型的思想,也符合linux驱动实现模型,即driver和device分离模型。
一般按键驱动,都是基于gpio-keys进行开发的。驱动文件如下:
vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c
![poYBAGNM0l2AE53yAAAUNSwqy5U695.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0l2AE53yAAAUNSwqy5U695.png)
![poYBAGNM0l2AF8SFAAAetbXvkoE328.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0l2AF8SFAAAetbXvkoE328.png)
![pYYBAGNM0l2AE59wAAArlZ50Jtc681.png](https://file.elecfans.com/web2/M00/70/FB/pYYBAGNM0l2AE59wAAArlZ50Jtc681.png)
![poYBAGNM0l2AQw80AAAsch6Xa6M661.png](https://file.elecfans.com/web2/M00/70/67/poYBAGNM0l2AQw80AAAsch6Xa6M661.png)
![pYYBAGNM0l2AKIvbAAAkauofL_s931.png](https://file.elecfans.com/web2/M00/70/FB/pYYBAGNM0l2AKIvbAAAkauofL_s931.png)
二、测试方法
终端窗口输入evtest,选择 7。
![pYYBAGNM0l2AEU48AABWTXP8OBw298.png](https://file.elecfans.com/web2/M00/70/FB/pYYBAGNM0l2AEU48AABWTXP8OBw298.png)
从上图红框可以看出,通过evtest测试工具将内核设备读取并打印设备描述的事件,到这里,GPIO按键就做完了,可以用它来实现很多的功能,比如说按一下切换灯的状态,蜂鸣器响等。
当然不只是这些啦,我们还可以利用它去实现很多其他功能,欢迎各位聪明的工程师小伙伴自行发挥!
以上就是小编为大家带来的在飞凌OKT507-C开发板上添加GPIO按键的全过程。
-
GPIO
+关注
关注
16文章
1217浏览量
52485
发布评论请先 登录
相关推荐
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之按键
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之按键
【飞凌嵌入式2024年度盘点】乘风破浪,奋力前行
![【<b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式2024年度盘点】乘风破浪,奋力前行](https://file1.elecfans.com/web3/M00/04/CF/wKgZPGd4xZiAczdrAACK6Ikat58557.png)
凌智电子加入飞桨技术伙伴计划,携手PaddleX为视觉模组产品赋能添“智”
![<b class='flag-5'>凌</b>智电子加入<b class='flag-5'>飞</b>桨技术伙伴计划,携手PaddleX为视觉模组产品赋能添“智”](https://file.elecfans.com/web2/M00/26/21/pYYBAGG5jjSALfrEAAAwAa9Oig8799.png)
飞凌嵌入式技术创新日(深圳站)精彩回顾
TI (德州仪器) 团队到访飞凌嵌入式总部,深化交流与合作
![TI (德州仪器) 团队到访<b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式总部,深化交流与合作](https://file1.elecfans.com/web2/M00/FB/5E/wKgZomaQ22KAObuQAAEC3TGQiX4281.png)
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-在NXP源码基础上适配ELF 1开发板的按键功能
剧透!「飞凌嵌入式技术创新日」3大亮点抢先看
![剧透!「<b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式技术创新日」3大亮点抢先看](https://file1.elecfans.com/web2/M00/F1/E2/wKgaomZz70-Ab4ZgAAC0oQIuJUY949.png)
![](https://file1.elecfans.com/web2/M00/E9/9B/wKgaomZQCjSAfaKxAA0KjCWAApE321.png)
飞凌嵌入式亮相上海CPSE,展现智能充储技术新力量
![<b class='flag-5'>飞</b><b class='flag-5'>凌</b>嵌入式亮相上海CPSE,展现智能充储技术新力量](https://file1.elecfans.com/web2/M00/E9/8B/wKgaomZP5vKAY0oHAACL642RS4U231.png)
![](https://file1.elecfans.com/web2/M00/D5/B9/wKgaomYmFuaAaE9vAAstxZdhzS8551.png)
![](https://file1.elecfans.com/web2/M00/C6/5B/wKgaomX9ScyAMr6pAAw4NmUnbo4262.png)
评论