目录
一、内核图形化配置
二、设备树修改
Linux 内核自带了 KEY 驱动,如果要使用内核自带的 KEY 驱动的话需要配置 Linux 内核。
一、内核图形化配置在内核目录下,输入以下指令打开Linux图像配置界面
make menuconfig
按照如下路径找到相应的配置选项
-> Device Drivers -> Input device support -> Generic input layer (needed for keyboard, mouse, ...) (INPUT [=y]) -> Keyboards (INPUT_KEYBOARD [=y]) ->GPIO Buttons
选中GPIO Buttons选项,将其编译进 Linux 内核中
选中以后会在.config 文件中出现CONFIG_KEYBOARD_GPIO=y这一行, Linux 内核就会根据这一行来将 KEY 驱动文件编译进 Linux 内核。
重新编译 Linux 内核,然后使用新编译出来的 zImage 镜像启动开发板。
二、设备树修改Linux 内核自带的 KEY 驱动文件为drivers/input/keyboard/gpio_keys.c, gpio_keys.c 采用了 platform 驱动框架,在 KEY 驱动上使用了 input 子系统实现。所以,并不需要修改这个源文件。
要使用Linux内核自带的按键驱动程序只需要根据Documentation/devicetree/bindings/input/gpio-keys.txt 这个文件在设备树中添加指定的设备节点。
节点要求如下:
①节点名字为gpio-keys
②gpio-keys 节点的 compatible 属性值一定要设置为gpio-keys
③所有的 KEY是 gpio-keys 的子节点,每个子节点可以用如下属性描述自己: gpios: KEY 所连接的 GPIO 信息 interrupts: KEY 所使用 GPIO 中断信息,不是必须的 label: KEY 名字 linux,code: KEY 要模拟的按键,如键盘上的按键
④如果按键要支持连按的话要加入 autorepeat
gpio-keys {
compatible = "gpio-keys";
#address-cells = ;
#size-cells = ;
autorepeat;
key0 {
label = "GPIO Key Enter";
linux,code = ;
gpios = ;
};
};
这里键按键设置为电脑上的Enter按键。
重新编译设备树,然后用编译出来的dtb 启动 Linux 系统,系统启动以后查看/dev/input 目录
使用hexdump 命令来查看/dev/input/event1 文件
hexdump /dev/input/event2
如果按下按键以后会在终端上输出上面的信息那么表示 Linux 内核的按键驱动工作正常。