0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ELF 1技术贴|在NXP源码基础上适配开发板的按键功能

ElfBoard 2024-03-08 16:58 次阅读

本次源代码适配是在NXP i.MX6ULL EVK评估板的Linux内核源代码(特定版本号为Linux-imx_4.1.15)的基础中展开的。

首要任务集中在对功能接口引脚配置的精细调整,确保其能无缝匹配至ELF 1开发板。接下来,我们将详细阐述适配过程中关于按键功能实现的完整步骤。

值得一提的是,ELF 1开发板上预置了标识为K1、K2、K3的三个按键。为了启用这些按键功能,需要在设备树中进行按键配置,以及在内核中完成驱动配置。

01、硬件原理

wKgZomXq0VSACd6wAACteqtgmVk554.pngwKgaomXq0VSAKH0OAAG45L17pqU876.png

02、IOMUX配置

从上图可以看出GPIO5_4连接到了连接器的22脚,GPIO5_2连到了34脚,GPIO5_9连接到了43脚。接下来需要找到这几个引脚在软件上的信号名称。在ElfBoard官网硬件资料中的 ELF 1开发板资料包\05-硬件资料\05-4 管脚分配表找到22、34、43引脚的信号名称。

wKgZomXq0XCAdYhiAACnHoFvAG0891.png

可以看到连接器的34引脚信号名称为SNVS_TAMPER2;22引脚的信号名称为SNVS_TAMPER4;43引脚的信号名称为SNVS_TAMPER9。

因为需要使用这几个引脚控制按键,所以需要把它们复用成GPIO功能,在arch/arm/boot/dts/imx6ull-pinfunc-snvs.h中找到它们的宏定义,分别如下:

wKgaomXq0ZOAGnEDAAIHGYRCjJc639.png

然后打开设备树文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomux_snvs节点下添加子节点pinctrl_keys:

pinctrl_keys: keysgrp { fsl,pins = < MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x80000000 MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x80000000 MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x80000000 >; };

添加后效果如下:

wKgZomXq0beATdElAADnaJ4o9Ss882.png

03、添加设备节点

在根节点下添加:

gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_keys>; #address-cells = <1>; #size-cells = <0>; autorepeat; key1 { label = "KEY1"; linux,code = ; gpios = <&gpio5 4 GPIO_ACTIVE_LOW>; }; key2 { label = "KEY2"; linux,code = ; gpios = <&gpio5 2 GPIO_ACTIVE_LOW>; }; key3 { label = "KEY3"; linux,code = ; gpios = <&gpio5 9 GPIO_ACTIVE_LOW>; }; };

添加后效果如下:

wKgaomXq0eGARx4dAAFqyMAtiss202.png

gpio-keys的compatible属性值为“gpio-keys”,用于驱动匹配。pinctrl-name属性值为“default”,定义了pincrtl的名字为“default”。

pinctrl-0的属性值为<&pinctrl_keys>,就是引用了之前在iomux_snvs中定义的pinctrl_keys也就是说,在此处对iomux_snvs的配置进行了引用,类似函数的调用。status属性值设置为“okay”,表示LED设备可用。

接下来三个子节点,分别对应三个具体按键。子节点的lable标签属性是可选的。linux,code属性表示键值,在include/dt-bindings/input/input.h文件中有其宏定义。

#define KEY_ENTER 28 #define KEY_UP 103 #define KEY_DOWN 108

gpios属性值指定了具体的GPIO引脚以及引脚的极性配置。如:gpios = <&gpio1 10 GPIO_ACTIVE_LOW>。

指定是GPIO1_IO10引脚,极性是GPIO_ACTIVE_LOW,就是指高电平有效还是低电平有效,需要根据具体电路配合使用。


04、配置按键驱动编译进内核

在根目录下使用make menuconfig命令,在如下路径查看是否有配置:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig

找到以下位置,Keyboards驱动默认已经编译进内核。

-> Device Drivers ->Input device support ->Keyboards

wKgZomXq0kSAVD0kAAGe-8d-m5k156.png

05、编译测试

由于使用build.sh全编译时间太长,我们可以将build.sh当中的第4行注释掉:

wKgaomXq0l2ARbNbAADI_10z6Nc921.png

编译内核并拷贝到开发板:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ./build.sh elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/zImage root\@172.16.0.175:/run/media/mmcblk1p1/ elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf\1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

进行sync操作后重启开发板:

wKgaomXq0qKAduI_AAAdZ8LYDwM472.png

使用cat /proc/bus/input/devices命令查看key设备对应的event事件:

root@ELF1:~# cat /proc/bus/input/devices

wKgaomXq0rqAcy7aAAD4lBlEDLg363.png

可以看到其对应的是event2,如果连接了其他设备,比如触摸屏,event事件可能会有变化,请以实际为准。

终端输入evtest命令,选择event number为2,然后分别按键K1,K2,K3,会看到上报数据。

root@ELF1:~# evtest

wKgZomXq0t-AGu3UAAGZ6A13tl4073.png

可以看到KEY1上报的键值是28,KEY2上报的键值是103,KEY3上报的键值是108,与在设备树中配置的键值一致。

至此,已在NXP提供的源代码基础上成功完成了对ELF 1开发板按键功能的适配工作,期待这一实践教程能够切实为屏幕前的小伙伴带来实质性指导。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304763
  • Linux
    +关注

    关注

    87

    文章

    11291

    浏览量

    209308
  • 开发板
    +关注

    关注

    25

    文章

    5032

    浏览量

    97370
收藏 人收藏

    评论

    相关推荐

    如何在NXP源码基础上适配ELF 1开发板的PWM功能

    本次源码适配项目是NXP i.MX6ULL EVK评估所搭载的Linux内核源码(版本为Li
    的头像 发表于 09-10 10:00 916次阅读
    如何在<b class='flag-5'>NXP</b><b class='flag-5'>源码</b><b class='flag-5'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的PWM<b class='flag-5'>功能</b>

    ElfBoard技术|如何在NXP源码基础上适配ELF 1开发板的UART功能

    UART即通用异步收发器,是一种支持全双工串行通信协议的接口。i.MX6ULL处理器平台上,该处理器原生支持多达8路的UART接口,提供了丰富的串行通信能力。 针对ELF 1开发板
    的头像 发表于 09-25 13:56 2293次阅读
    ElfBoard<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在<b class='flag-5'>NXP</b><b class='flag-5'>源码</b><b class='flag-5'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的UART<b class='flag-5'>功能</b>

    嵌入式学习-ElfBoard ELF 1板卡-nxp源码基础上适配ELF 1开发板的LED功能

    源码适配即在NXP i.MX6ULL EVK评估对应的Linux内核源码(linux-imx_4.1.15 版本)
    发表于 01-05 14:35

    飞凌嵌入式ElfBoard ELF 1板卡-NXP源码基础上适配ELF 1开发板按键功能

    的键值是103,KEY3上报的键值是108,与设备树中配置的键值一致。 至此,就完成了NXP源码基础上
    发表于 07-03 09:07

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-NXP源码基础上适配ELF 1开发板按键功能

    的键值是103,KEY3上报的键值是108,与设备树中配置的键值一致。 至此,就完成了NXP源码基础上
    发表于 07-04 09:11

    飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核简介

    ,所以讲解均以4.1.15版本内核为例。(二)可以选择使用git克隆,也可以选择下载ZIP压缩包。获取ELF 1开发板源码ELF
    发表于 12-13 09:03

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核简介

    开发板资料包\\02-Linux 源代码\\02-0 出厂内核和uboot源码\\内核源码\\linux-4.1.15-elf1.tar.bz2 后面我们也会介绍如何在
    发表于 12-16 13:08

    ELF 1技术|NXP源码基础上适配ELF 1开发板的LED功能

    本次源码适配工作是NXPi.MX6ULLEVK评估的Linux内核源码(特定版本:Linux-imx_4.1.15)
    的头像 发表于 12-29 10:04 852次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|<b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源码</b><b class='flag-5'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的LED<b class='flag-5'>功能</b>

    ELF 1 开发板实现读取摄像头视频进行目标检测

    当前,将AI或深度学习算法(如分类、目标检测和轨迹追踪)部署到嵌入式设备,进而实现边缘计算,正成为轻量级深度学习算法发展的一个重要趋势。今天将与各位小伙伴分享一个实际案例:ELF1开发板上成功部署
    的头像 发表于 01-24 10:38 684次阅读
    <b class='flag-5'>在</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b> <b class='flag-5'>开发板</b><b class='flag-5'>上</b>实现读取摄像头视频进行目标检测

    ELF 1技术|如何移植Boa 到开发板

    Boa作为Web服务解决方案显得尤为适宜。接下来,将跟各位小伙伴详细介绍一下基于ELF1开发板移植Boa的方法。1、Boa官网下载源码官网网址:Boadownlo
    的头像 发表于 02-04 09:30 365次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何移植Boa 到<b class='flag-5'>开发板</b><b class='flag-5'>上</b>

    ELF 1技术|如何将Python3.6.9移植到开发板

    ELF1开发板的Linux4.1.15eMMC镜像中,默认预装了Python2.7。为了适应更多应用场景,有些小伙伴可能需要移植其他版本的Python,下面将以Python3.6.9为例详细介绍
    的头像 发表于 02-22 14:06 429次阅读
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何将Python3.6.9移植到<b class='flag-5'>开发板</b><b class='flag-5'>上</b>

    ELF技术|如何在开发板实现对Java的支持

    Java作为一种功能强大且广泛应用的编程语言,具有广泛的适应性和实用性。ELF1开发板上集成Java支持,无疑将赋予嵌入式开发者更广阔的选
    的头像 发表于 03-13 16:47 504次阅读
    <b class='flag-5'>ELF</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在<b class='flag-5'>开发板</b><b class='flag-5'>上</b>实现对Java的支持

    ElfBoard技术|NXP源码基础上适配ELF 1开发板按键功能

    本次源码适配工作是NXPi.MX6ULLEVK评估的Linux内核源码(特定版本:Linux-imx_4.1.15)
    的头像 发表于 07-10 09:54 593次阅读
    ElfBoard<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|<b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源码</b><b class='flag-5'>基础上</b><b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的<b class='flag-5'>按键</b><b class='flag-5'>功能</b>

    ElfBoard技术|如何在ELF 1开发板搭建流媒体服务器

    流媒体服务器是一种专门用于传输实时数据流的服务器软件,广泛用于视频直播、视频会议、音频播放等应用场景。嵌入式开发领域,将流媒体服务器部署到开发板可以实现诸如视频监控、实时数据传输等
    的头像 发表于 08-20 14:48 563次阅读
    ElfBoard<b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b><b class='flag-5'>上</b>搭建流媒体服务器

    NXP源码基础上如何适配ELF 1开发板的UART功能

    UART即通用异步收发器,是一种支持全双工串行通信协议的接口。i.MX6ULL处理器平台上,该处理器原生支持多达8路的UART接口,提供了丰富的串行通信能力。 针对ELF 1开发板
    的头像 发表于 09-29 11:49 335次阅读
    <b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源码</b><b class='flag-5'>基础上</b>如何<b class='flag-5'>适配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的UART<b class='flag-5'>功能</b>