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

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

3天内不再提示

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

ElfBoard 2024-07-10 09:54 次阅读

本次源码适配工作是在NXP i.MX6ULL EVK评估板的Linux内核源码(特定版本:Linux-imx_4.1.15)基础上进行的。主要目标是调整功能接口引脚配置,以适应ELF 1开发板。接下来,将以按键功能的适配作为具体示例,深入解析整个适配的流程。

一、准备工作

NXP源码路径:ELF 1开发板资料包\07-NXP 原厂资料\07-1 NXP官方源码\linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2

1、将NXP源码拷贝到开发环境home/root/work目录下解压

elf@ubuntu:~/work$ tar jvxf linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2 elf@ubuntu:~/work$ cd linux-imx-imx_4.1.15_2.0.0_ga/ elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ls

2、添加默认配置文件

将arch/arm/configs路径下的imx_v7_mfg_defconfig复制一份,命名为imx6ull_elf1_defconfig:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/configs/imx_v7_mfg_defconfig arch/arm/configs/imx6ull_elf1_defconfig

3、添加ELF 1设备树将arch/arm/boot/dts路径下的imx6ull-14x14-evk.dts复制一份,命名为imx6ull-elf1-emmc.dts:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/boot/dts/imx6ull-14x14-evk.dts arch/arm/boot/dts/imx6ull-elf1-emmc.dts

打开arch/arm/boot/dts/Makefile,找到CONFIG_SOC_IMX6ULL,将imx6ull-elf1-emmc.dts添加到Makefile中:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi arch/arm/boot/dts/Makefile

wKgZomaN5z-AGSyRAAf8Vzjsc0Y763.png

4、建立交叉编译脚本

建立一个编译脚本build.sh:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vim build.sh

添加以下内容,保存退出:

#!/bin/bash export CPUS=`grep -c processor /proc/cpuinfo` source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi make distclean make imx6ull_elf1_defconfig make -j${CPUS} rm -rf ./.tmp make modules_install INSTALL_MOD_PATH=./.tmp/rootfs/ cd .tmp/rootfs/ tar -jcvf modules.tar.bz2 *

给予脚本权限:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ chmod 777 build.sh

二、适配按键

1、硬件原理

wKgaomaN55KAL2hCAASNGSaEL7U300.pngwKgaomaN58eAeVYeAAPx6h_fvm8762.png

2、IOMUX配置

从上图可以看出GPIO5_4连接到了连接器的22脚,GPIO5_2连到了34脚,GPIO5_9连接到了43脚。接下来需要找到这几个引脚在软件上的信号名称。

打开ELF 1开发板资料包\05-硬件资料\05-4 管脚分配表\ELF 1引脚复用对照表找到22、34、43引脚的信号名称。

wKgZomaN5_-AHrOWAAJU9cOAKFQ104.png

34引脚信号名称为SNVS_TAMPER2;

22引脚的信号名称为SNVS_TAMPER4;

43引脚的信号名称为SNVS_TAMPER9。

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

wKgaomaN6DWAEsuCAA1UORyLZp0520.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 >; };

效果如下:

wKgZomaN6F2AHbh4AARG-pjHYQc365.png

(注意:在IOMUX配置环节,一定要确保一个引脚只被复用为一个功能,如果同一个引脚在其它地方被复用成另一个功能,很可能影响到我们期望的功能。)

3、设备节点配置

在根节点下添加子节点gpio-keys:

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>; }; };

wKgZomaN6I-AP2C7AAZvzZoSJlw513.png

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

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make imx6ull_elf1_defconfig elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig

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

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

wKgaomaN6NeAREFdAAnK5IMWB0E125.png

5、编译

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

将编译生成的zImage和imx6ull-elf-emmc.dtb拷贝到ELF 1开发板的/run/media/mmcblk1p1 路径下:

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-elf1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

保存并重启开发板:

root@ELF1~# sync root@ELF1~# reboot

三、按键测试

查看key设备对应的event事件:

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

wKgZomaN6USAfmQ6AAbElvspIjU467.png

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

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

root@ELF1:~# evtest

wKgaomaN6XCAcRF6AAtK9168RtA118.png

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

至此,就完成了在NXP源码基础上适配ELF 1开发板的按键功能,期望这份详实的指南能为正在阅读的小伙伴带来实质性的助益与启发。在开发之旅上,愿我们携手共进,探索无限可能。

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

    关注

    6052

    文章

    44748

    浏览量

    642509
  • 嵌入式
    +关注

    关注

    5113

    文章

    19337

    浏览量

    311242
  • 开发板
    +关注

    关注

    25

    文章

    5260

    浏览量

    99748
  • 嵌入式开发板

    关注

    5

    文章

    88

    浏览量

    18954
收藏 人收藏

    相关推荐

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

    ELF1开发板。接下来,我们将详细阐述适配过程中关于按键功能实现的完整步骤。值得一提的是,ELF1
    的头像 发表于 03-08 16:58 1079次阅读
    <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'>开发板</b>的<b class='flag-5'>按键</b><b class='flag-5'>功能</b>

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

    本次源码适配项目是NXP i.MX6ULL EVK评估所搭载的Linux内核源码(版本为Li
    的头像 发表于 09-10 10:00 1054次阅读
    如何在<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 2551次阅读
    <b class='flag-5'>ElfBoard</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>的UART<b class='flag-5'>功能</b>

    ElfBoard技术|ELF 1开发板适配摄像头详解

    ELF1ELF1S开发板适配的OV5640摄像头,集成了CMOS图像传感器,作为一款500万像素级别的摄像头,不仅能够支持最高达2592x1944分辨率的QSXGA图像输出,帧率可达
    的头像 发表于 12-27 10:16 995次阅读
    <b class='flag-5'>ElfBoard</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>摄像头详解

    嵌入式学习-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板卡-开发板适配之移植前的准备

    ELF 1开发平台。 获取NXP内核源码 ELF
    发表于 01-21 14:30

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之移植前的准备

    ELF 1开发平台。获取NXP内核源码ELF
    发表于 01-22 10:43

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

    本次源码适配工作是NXPi.MX6ULLEVK评估的Linux内核源码(特定版本:Linux-imx_4.1.15)
    的头像 发表于 12-29 10:04 1008次阅读
    <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技术|如何将Python3.6.9移植到开发板

    ELF1开发板的Linux4.1.15eMMC镜像中,默认预装了Python2.7。为了适应更多应用场景,有些小伙伴可能需要移植其他版本的Python,下面将以Python3.6.9为例详细介绍
    的头像 发表于 02-22 14:06 546次阅读
    <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 600次阅读
    <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技术|如何在ELF 1开发板搭建流媒体服务器

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

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

    UART即通用异步收发器,是一种支持全双工串行通信协议的接口。i.MX6ULL处理器平台上,该处理器原生支持多达8路的UART接口,提供了丰富的串行通信能力。 针对ELF 1开发板
    的头像 发表于 09-29 11:49 525次阅读
    <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开发板上交叉移植Qt

    嵌入式系统开发领域,针对特定硬件平台进行Qt框架的移植与适配是一项关键技术任务。作为业界主流的跨平台应用开发框架,Qt凭借其完善的图形界面
    的头像 发表于 02-24 16:18 331次阅读
    <b class='flag-5'>ElfBoard</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>上交叉移植Qt