南京网站开发,网站建设项目外包网站,微信文章链接wordpress,创造与魔法官网站_一起做喜欢的事本次源代码适配是在NXP i.MX6ULL EVK评估板的Linux内核源代码#xff08;特定版本号为Linux-imx_4.1.15#xff09;的基础中展开的。
首要任务集中在对功能接口引脚配置的精细调整#xff0c;确保其能无缝匹配至ELF 1开发板。接下来#xff0c;我们将详细阐述适配过程中关…本次源代码适配是在NXP i.MX6ULL EVK评估板的Linux内核源代码特定版本号为Linux-imx_4.1.15的基础中展开的。
首要任务集中在对功能接口引脚配置的精细调整确保其能无缝匹配至ELF 1开发板。接下来我们将详细阐述适配过程中关于按键功能实现的完整步骤。
值得一提的是ELF 1开发板上预置了标识为K1、K2、K3的三个按键。为了启用这些按键功能需要在设备树中进行按键配置以及在内核中完成驱动配置。
01、硬件原理 02、IOMUX配置
从上图可以看出GPIO5_4连接到了连接器的22脚GPIO5_2连到了34脚GPIO5_9连接到了43脚。接下来需要找到这几个引脚在软件上的信号名称。在ElfBoard官网硬件资料中的 ELF 1开发板资料包\05-硬件资料\05-4 管脚分配表找到22、34、43引脚的信号名称。 可以看到连接器的34引脚信号名称为SNVS_TAMPER222引脚的信号名称为SNVS_TAMPER443引脚的信号名称为SNVS_TAMPER9。
因为需要使用这几个引脚控制按键所以需要把它们复用成GPIO功能在arch/arm/boot/dts/imx6ull-pinfunc-snvs.h中找到它们的宏定义分别如下 然后打开设备树文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts在iomux_snvs节点下添加子节点pinctrl_keys
pinctrl_keys: keysgrp {fsl,pins MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x80000000MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x80000000MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x80000000;
};
添加后效果如下 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 KEY_ENTER;gpios gpio5 4 GPIO_ACTIVE_LOW;};key2 {label KEY2;linux,code KEY_UP;gpios gpio5 2 GPIO_ACTIVE_LOW;};key3 {label KEY3;linux,code KEY_DOWN;gpios gpio5 9 GPIO_ACTIVE_LOW;};};
添加后效果如下 gpio-keys的compatible属性值为“gpio-keys”用于驱动匹配。pinctrl-name属性值为“default”定义了pincrtl的名字为“default”。
pinctrl-0的属性值为pinctrl_keys就是引用了之前在iomux_snvs中定义的pinctrl_keys也就是说在此处对iomux_snvs的配置进行了引用类似函数的调用。status属性值设置为“okay”表示LED设备可用。
接下来三个子节点分别对应三个具体按键。子节点的lable标签属性是可选的。linuxcode属性表示键值在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命令在如下路径查看是否有配置
elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig找到以下位置Keyboards驱动默认已经编译进内核。
- Device Drivers
-Input device support
-Keyboards 05、编译测试
由于使用build.sh全编译时间太长我们可以将build.sh当中的第4行注释掉 编译内核并拷贝到开发板
elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ./build.sh
elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/zImage root\172.16.0.175:/run/media/mmcblk1p1/
elfubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf\1-emmc.dtb root172.16.0.175:/run/media/mmcblk1p1/
进行sync操作后重启开发板 使用cat /proc/bus/input/devices命令查看key设备对应的event事件
rootELF1:~# cat /proc/bus/input/devices可以看到其对应的是event2如果连接了其他设备比如触摸屏event事件可能会有变化请以实际为准。
终端输入evtest命令选择event number为2然后分别按键K1K2K3会看到上报数据。
rootELF1:~# evtest 可以看到KEY1上报的键值是28KEY2上报的键值是103KEY3上报的键值是108与在设备树中配置的键值一致。
至此已在NXP提供的源代码基础上成功完成了对ELF 1开发板按键功能的适配工作期待这一实践教程能够切实为屏幕前的小伙伴带来实质性指导