IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> i.MX6ULL驱动开发 | 25 - 基于Linux自带的KEY驱动检测按键 -> 正文阅读

[系统运维]i.MX6ULL驱动开发 | 25 - 基于Linux自带的KEY驱动检测按键

一、Linux内核自带的驱动

Linux内核已经集成了采用 platform 框架编写的KEY驱动·,无需我们自己编写,只要按照要求在设备树文件中添加相应的LED节点即可。

1. 如何使能

(1)在内核源码目录中,打开 menuconfig 进行配置:

make menuconfig

(2)打开KEY驱动配置项

按下?可以打开此选项的帮助信息:

可以看到,如果此选项打开,.config文件中就会开启LEDS_GPIO:

配置改动后,重新编译内核,下载到开发板。

二、设备树节点编写

1. 设备树节点格式

在文档Documentation/devicetree/bindings/input/gpio-keys.txt中。

(1)需要的属性

  • compatible:应该是"gpio-keys"

(2)描述

Each button (key) is represented as a sub-node of “gpio-keys”。

(3)KEY子节点的属性

- gpios: OF device-tree gpio specification.
- interrupts: the interrupt line for that input.
- label: Descriptive name of the key.
- linux,code: Keycode to emit.

(4)示例

	gpio_keys {
			compatible = "gpio-keys";
			#address-cells = <1>;
			#size-cells = <0>;
			autorepeat;
			button@21 {
				label = "GPIO Key UP";
				linux,code = <103>;
				gpios = <&gpio1 0 1>;
			};
			button@22 {
				label = "GPIO Key DOWN";
				linux,code = <108>;
				interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
			};

其中linux\code表示按键映射的键值,定义在文件include/uapi/linux/input.h中,这里找出回车键:

#define KEY_ENTER		28

2. 编写KEY节点——作为回车按键

(1)添加设备树节点

在自己的设备树描述文件中修改:

// 用于内核自带的KEY驱动——作为回车按键
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>;
	};
};

(2)编译设备树,使用新的设备树启动内核

编译设备树,使用该设备树启动:

make dtbs

启动后查看是否有对应的platform驱动:

启动后查看是否有对应的platform设备:

(3)操作按键

如果屏幕作为控制终端,按下回车按键,就会在屏幕进行交互:

三、Linux自带KEY驱动浅析

1. 如何找到对应的驱动文件?

搜索该宏定义,找对应的Makefile:

grep -nR "CONFIG_LEDS_GPIO" * | grep Makefile


找到KEY驱动对应的文件为:drivers/input/keyboard/gpio_keys.c

2. platform驱动的注册与删除

3. 驱动兼容性

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:43:39  更:2022-07-05 23:46:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 22:48:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码