电商网站建设报价单,wordpress 1 s,中国114企业网,客户管理系统功能描述一、Linux 内核自带按键驱动使能。 Linux 内核也自带了 KEY 驱动#xff0c;如果要使用内核自带的 KEY 驱动的话需要配置 Linux 内核#xff0c;不过 Linux 内核一般默认已经使能了 KEY 驱动#xff0c;但是我们还是要检查一下。
使用如下命令打开 Linux 配置菜单#xff…一、Linux 内核自带按键驱动使能。 Linux 内核也自带了 KEY 驱动如果要使用内核自带的 KEY 驱动的话需要配置 Linux 内核不过 Linux 内核一般默认已经使能了 KEY 驱动但是我们还是要检查一下。
使用如下命令打开 Linux 配置菜单
make menuconfig 按照如下路径 找到相应的配置选项
选中“GPIO Buttons”选项将其编译进 Linux 内核中如图 选中以后就会在.config 文件中出现“CONFIG_KEYBOARD_GPIOy”这一行Linux 内核 就会根据这一行来将 KEY 驱动文件编译进 Linux 内核。 二、设备树节点编写 据Documentation/devicetree/bindings/input/gpio-keys.txt 这个文件在设备树中添加指定的设备节点 即可节点要求如下 ①、节点名字为“gpio-keys”。
②、gpio-keys 节点的 compatible 属性值一定要设置为“gpio-keys”。
③、所有的 KEY 都是 gpio-keys 的子节点每个子节点可以用如下属性描述自己 gpiosKEY 所连接的 GPIO 信息。 interruptsKEY 所使用 GPIO 中断信息不是必须的可以不写。 labelKEY 名字 linux,codeKEY 要模拟的按键也就是示例代码 58.1.2.4 中的这些按键。
④、如果按键要支持连按的话要加入 autorepeat。 打开 imx6ull-alientek-emmc.dts根据上面的要求创建对应的设备节点设备节点内容如下 所示
gpio-keys { compatible gpio-keys; #address-cells 1; #size-cells 0; autorepeat; key0 { label GPIO Key Enter; linux,code KEY_ENTER; gpios gpio1 18 GPIO_ACTIVE_LOW; }; }; 第 5 行autorepeat 表示按键支持连按。
第 6~10 行ALPHA 开发板 KEY 按键信息名字设置为“GPIO Key Enter”这里我们将 开发板上的 KEY 按键设置为“EKY_ENTER”这个按键也就是回车键。
最后设置 KEY 所使用的 IO 为 GPIO1_IO18一定要检查一下设备树看看此 GPIO 有没有 被用到其他外设上如果有的话要删除掉相关代码
重新编译设备树然后用新编译出来的 imx6ull-alientek-emmc.dtb 启动 Linux 系统。 三、运行测试
查看/dev/input 目录看看都有哪些文件结果如图 从图可以看出存在 event1 这个文件这个文件就是 KEY 对应的设备文件使用
hexdump 命令来查看/dev/input/event1 文件输入如下命令
hexdump /dev/input/event1
然后按下 开发板上的按键 如果按下 KEY 按键以后会在终端上输出图 58.5.2.2 所示的信息那么就表示 Linux 内核的按 键驱动工作正常。 四、失败分析 大家如果发现按下 KEY 按键以后没有反应那么请检查一下三方面
①、是否使能 Linux 内核 KEY 驱动。
②、设备树中 gpio-keys 节点是否创建成功。
③、在设备树中是否有其他外设也使用了 KEY 按键对应的 GPIO但是我们并没有删除掉 这些外设信息。
检查 Linux 启动 log 信息看看是否有类似下面这条信息
gpio-keys gpio_keysFailed to request GPIO 18, error -16
上述信息表示 GPIO 18 申请失败失败的原因就是有其他的外设正在使用此 GPIO。