
Input
文章平均质量分 61
input子系统,触摸相关的驱动学习
习惯就好zz
一个无趣的人
展开
-
UInput分析_用户态创建input_dev
参考资料Linux 4.x 内核drivers\input\misc\uinput.c一、概念uinput是一个内核模块(驱动),它允许应用程序模拟输入设备(input_dev)。应用程序通过访问/dev/uinput或/dev/input/uinput创建一个虚拟的输入设备设置它的属性APP发送数据给它,让它产生输入事件uinput就会把这些输入事件分发给其他使用者(APP或内核里其他模块)uinput_open:static int uinput_open(struct原创 2021-11-09 21:44:34 · 1140 阅读 · 0 评论 -
I2C接口触摸屏驱动分析
参考资料:Documentation\devicetree\bindings\input\touchscreen\goodix.txtdrivers/input/touchscreen/gt9xx/gt9xx.c设备树:IMX6ULL:Linux-4.9.88/arch/arm/boot/dts/100ask_imx6ull-14x14.dtsSTM32MP157:Linux-5.4/arch/arm/boot/dts/stm32mp15xx-100ask.dtsi一、设备树示例1.1原创 2021-11-06 16:31:37 · 1720 阅读 · 0 评论 -
GPIO按键驱动分析与使用
GPIO按键驱动分析和使用参考资料:Documentation\devicetree\bindings\input\gpio-keys.txtdrivers\input\keyboard\gpio_keys.c一、驱动程序框架输入子系统被分为两个部分,左边表示硬件信息,右边是各种处理程序。大部分系统都已经做好了。我们需要做的就是分配、设置、注册input_dev。至于这些操作是在platform架构下包含进去的。二、设备树示例2.1 设备树讲解属性说明:必备:compatible原创 2021-10-31 15:42:02 · 2354 阅读 · 0 评论 -
编写简单的触摸屏驱动程序——基于QEMU
参考资料Documentation/input/input-programming.txtDocumentation/input/event-codes.txt一、准备QEMU二、QEMU触摸屏操作方法2.1 原理:鼠标在屏幕上按下、松开:QEMU改变GPIO电平、产生中断在touch_pressure_register中记录压力值鼠标在屏幕上滑动在touch_x_register、touch_y_register中记录坐标2.2 寄存器说明地址寄存器原创 2021-10-22 21:59:39 · 1513 阅读 · 0 评论 -
编写input_dev驱动框架
一、参考资料Documentation/input/input-programming.txtDocumentation/input/event-codes.txt二、编写input_dev驱动2.1 分配/设置/注册 input_dev2.2 硬件相关的操作申请中断在中断服务程序里读取硬件获取数据上报数据三、现场编程在设备树里创建一个节点指定硬件资源等信息编译一个platform_driver驱动在probe函数里从设备树获得资源分配/设置/注原创 2021-10-10 15:46:08 · 295 阅读 · 0 评论 -
Input子系统框架学习
一、参考资料Documentation/input/input-programming.txtDocumentation/input/event-codes.txt二、Input子系统框架三、Input子系统内部实现3.1 重要结构体左边的input_dev表示输入设备右边的input_handler表示“处理程序”匹配之后使用input_handler保存2者之间的联系设备获取、上报数据:input_event3.2 注册流程演示注册input_dev:input_re原创 2021-10-05 10:17:16 · 137 阅读 · 0 评论 -
tslib框架分析
tslib时一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以输入给设备添加各种"filter",地址这里编译tslib后,可以得到libts库,还可以得到各种工具:校准工具、测试工具一、tslib框架分析tslib主要代码如下:├── src # src/ 接口函数│ ├── ts_setup.c│ ├── ts_open.c│ ├── ts_config.c├── plugins # plugins/ 插件/module│ ├── linear.c│原创 2021-10-02 17:02:28 · 1704 阅读 · 0 评论 -
电阻屏和电容屏
一、电阻屏1. 电阻屏原理电阻屏基于欧姆定律,它有上下两层薄膜,薄膜就是电阻。当上下两层接触时,上下两层薄膜接触,这时可以测量触点电压。X坐标:当xp、xm两端加3.3v电压,yp和ym不加电压时,yp相当于探针,测量yp的电压。电压和距离就成正比了。Y坐标:同理Y轴坐标也可求出2. 电阻屏数据Linux驱动程序中,会上报触电的X、Y数据。这不是LCD的坐标值,需要APP再此处理才能转换成坐标值。对应的input_event结构体中,"type、code、value"如下://按下时原创 2021-09-25 11:18:19 · 1266 阅读 · 0 评论 -
异步通知读取输入事件
异步通知简单来说就是linux里的signal信号机制。//include/uapi/asm-generic/signal.h#define SIGHUP 1#define SIGINT 2#define SIGQUIT 3#define SIGILL 4#define SIGTRAP 5#define SIGABRT 6#define SIGIOT 6#define SIGBUS 7#define SIGFPE 8#define SIGKILL原创 2021-09-21 20:22:27 · 163 阅读 · 0 评论 -
poll/select方式读取event信息
一、poll功能介绍poll机制和select机制是完全一样的,只是App接口函数不一样poll/select函数可以传入"超时时间",这段时间内,如果条件满足,就会立刻返回(比如有数据可读、有空间可写),否则就会超时,返回错误。1.1 poll用法App先调用open函数准备struct pollfd和ntds_t结构体 struct pollfd fds[1]; nfds_t nfsd = 1; fds[0].fd = fd; fds[0].events = POLL原创 2021-09-21 17:14:41 · 499 阅读 · 0 评论 -
查询_休眠唤醒方式读取数据(block nonblock)
查询方式(nonblock)App调用open函数时,传入"O_NONBLOCK"表示"非阻塞"。App调用read函数时读取数据时,如果驱动程序中有数据,那么App的read函数会返回数据,否则也会立刻返回错误。休眠-唤醒方式(block)App调用open函数时,不要传入"O_NONBLOCK"App调用read函数时,如果驱动程序中有数据,那么App的read函数会返回数据。否则App就会在内核态休眠,当有数据时驱动程序会把App唤醒,read函数恢复执行并返回给数据App。查看内核中的r原创 2021-09-21 13:06:46 · 214 阅读 · 0 评论 -
编写App获取信息
一、获取设备信息App通过调用ioctl获取设备信息,ioctl的函数原型如下: #include <sys/ioctl.h> int ioctl(int fd, unsigned long request, ...);有些驱动程序对request的格式有要求,request的格式如下,之前学习过ioctl:// include/uapi/asm-generic/ioctl.h#define _IOC_NRSHIFT 0#define _IOC_原创 2021-09-20 20:55:15 · 301 阅读 · 0 评论 -
输入系统框架及调试
一、框架概述在应用开发中,只需要知道API使用输入子系统。但是如果了解更多的内核中子系统框架,了解数据流程,有助于解决开发过程中碰到的硬件问题、驱动问题。输入子系统的框架如下:核心层把五花八门的硬件数据转换成统一的格式,发送给事件层,事件层会统一分发给App。假设用户程序直接访问/dev/input/event0设备节点,或者使用tslib访问设备节点,数据的流程如下:App发起读操作,若无数据则休眠用户操作设备,硬件产生中断输入系统驱动层对应的驱动程序处理中断。读取到数据,转换位标准原创 2021-09-20 16:41:10 · 822 阅读 · 0 评论 -
Input子系统学习准备
参考资料Documentation\input\input-programming.txtDocumentation\input\event-codes.txt输入子系统的种类输入设备很多中,如GPIO按键、电阻触摸屏,USB盘、遥控手柄等按键: EV_KEY,如键盘相对位移:EV_REL,如鼠标绝对位移:EV_ABS,如触摸屏杂项:EV_MSC软件:EV_SWLED:EV_LED声音:EV_SND自动重复按键:EV_REP电源开关:EV_PWR输入子系统的驱动程序框架需原创 2021-09-17 20:13:15 · 139 阅读 · 0 评论