首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux input子系统(1)《Rice linux 学习开发》

Linux input子系统,分为三篇文章,第一篇:Linux input子系统概念,第二篇:Linux input子系统代码分析(input core),第三篇:Linux input子系统驱动程序编写...linux系统输入设备繁多,例如按键、键盘、触摸屏、鼠标。这些输入设备都属于字符设备。不过这些输入设备不同类型,不同原理,不同输入输出信息。那么是如何统一这些输入设备呢?...答案:linux中将所有的输入设备抽象出input子系统这套软件体系,提供了统一接口函数,实现了大统一。 input子系统分为三层: 1.输入子系统设备驱动层。...综上所述:在linux中,输入子系统作为一个内核模块存在,向上为用户层提供接口函数,向下为驱动程序提供统一接口函数。...这样就能够将输入设备事件通过输入子系统发送给应用层应用程序,应用程序也可以通过输入子系统通知驱动程序完成某些任务。 下一篇:Linux input子系统代码分析(input core)

1.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

linux input子系统(3)《Rice linux 学习开发》

前面两篇文章写了《input子系统概念》和《分析input子系统代码》。这一篇文章来说说input子系统驱动程序编写。...input设备是使用input_dev结构体描述,使用input子系统实现输入设备驱动,驱动核心是向系统报告输入事件,不在关心文件操作接口,驱动报告事件经过input核心层,input handler...从这句话中,可以看出input子系统驱动部分会变得简单。 input子系统驱动还是比较简单,因为大部分工作,都在input核心层,input handler做完了。...input驱动代码,我是在之前文章《linux 中断机制》和input子系统驱动编写要点结合进行修改。你会发现代码很简单。 上面说到,input设备是使用input_dev结构体来描述。...其它代码含义请参看include/linux/input.h文件。 事件值(value):事件值。如果事件类型是EV_KEY,当按键按下时值为1,松开时值为0。

1.8K10

Input子系统-上篇

在进入这个行业之后,我才发现原来屏幕分触控层和显示层,我们触摸屏幕事件会通过"驱动-系统-应用-应用某个UI控件"这一个完整流程。 Input子系统流程图 ?...知识准备-epoll epoll有关知识可以看我好友博客Linux基础知识之IO多路复用epoll 简单解释一下epoll作用,类似于java中某个锁wait,可以让线程block,并不占用cpu...初始化运行以后,会启动两个线程InputReader和InputDispatcher Input事件设备节点 我们可以通过adb shell getevent指令看到手机上所有的input事件设备节点...总结 一个event时间传递前半段旅程 第一步:驱动将屏幕event写到了/dev/input/event1 第二步:InputReader线程通过EventHubgetEvents方法获得...这个问题我们将会在[018]Input子系统-下篇中讲解 参考文章 Input系统—启动篇 Input系统—InputReader线程 Input系统—InputDispatcher线程

1.1K20

input子系统剖析

概述 ---- linuxinput子系统与I2C子系统类似,也被主观分成三部分:输入驱动、输入设备和输入核心。...在linux系统中(linux4.9.88),构建了input子系统,所有采用input子系统设备,在有输入事件后都会主动上报输入事件。 在输入设备中会有以下几个问题:a. 何时上报?...---- 输入核心(driver/input/input.c): 此代码主要负责搭建linuxinput子系统架构,从入口函数进行分析: /* include/uapi/linux/major.h *...在linux中是这样,当有按键被按下时,输入设备代码中中断就会被触发,此时我们只需要在中断中获取按键状态并调用input子系统提供上报函数直接上报即可。...input子系统其实就是linux针对不同输入设备搭建一个架构,抽象出相同代码,然后提供用户通用接口,按linux标准来就能上报标准输入数据。

95030

01_Input子系统视频介绍

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 Input子系统视频介绍 参考资料: Linux 5.x内核文档 Documentation\input\input-programming.rst Documentation...\input\event-codes.rst Linux 4.x内核文档 Documentation\input\input-programming.txt Documentation\input...输入设备驱动程序框架 有没有一个驱动程序,能支持那么多设备?没有! 有没有一套驱动程序,容易扩展,最终能支持那么多设备?有! 这就是输入子系统驱动程序,框架如下: 3....讲什么内容 3.1 框架 3.2 evdev.c剖析 3.3 input_dev驱动编写 3.4 GPIO按键驱动分析与使用 分析内核自带GPIO按键驱动:drivers\input\keyboard

88330

基于input子系统sensor驱动调试(一)

子系统sensor架构: ?...由图上可知,input子系统sensor是由三个子系统构成: 1、input子系统(负责上报给设备节点数据); 2、I2C子系统负责sensor driver与sensor传感器进行通信; 3、xSensor...,上有Input core,下有I2C,驱动需要通过I2C采集信息,并准确及时上报数据至input core。...驱动上报数据,是被input core管理并被上层使用,应符合input core和上层应用框架要求; 下面以stk3311(drivers/input/misc)为例: 1、makefile和kconfig...boot.img,所以没有像linux那样make menuconfig之后调用mconf.c那样图形界面;但.config文件依旧会生成在out目录下; 所以我们只需要配置相应芯片类型: ?

2.4K41

基于input子系统sensor驱动调试(二)

(stk3x1x_data)连接到设备client(i2c_client)中;(bma255会增加一步:读取i2cid); 3、将stk3x1x驱动注册到linux input子系统; 4、创建工作队列...(主要是对sensor数据采集); 5、创建sysfs接口; 2.1 创建input子系统: http://blog.csdn.net/ielife/article/details/7798952 1...并且需要在必要时候提交硬件数据(键值/坐标/状态等等); 3、将输入设备注册到输入子系统中; 1   ps_data->als_input_dev = devm_input_allocate_device...上面代码中我们看到INIT_WORK(&ps_data->stk_ps_work, stk_ps_work_func);,其实是一个宏定义,在include/linux/workqueue.h中。...stk_ps_work_func()就是我们定义功能函数,用于查询读取Sensor距离传感器数据,并上报Input子系统,代码如下: 1 static void stk_ps_work_func

2.9K71

Linux 时钟子系统

一文搞懂 | Linux 时钟子系统 Clock 时钟就是 SoC 中脉搏,由它来控制各个部件按各自节奏跳动。比如,CPU主频设置,串口波特率设置,I2S采样率设置,I2C速率设置等等。...中间节点有很多种,包括 PLL(锁相环,用于提升频率),Divider(分频器,用于降频),Mux(从多个clock path中选择一个),Gate(用来控制ON/OFF)。...叶节点是使用 clock 做为输入、有具体功能 HW block。...fixed rate clock 这一类clock具有固定频率,不能开关、不能调整频率、不能选择parent,是最简单一类clock。可以直接通过 DTS 配置方式支持。...(即multiplier和divider),clock频率是由parent clock频率,乘以mul,除以div,多用于一些具有固定分频系数clock。

3.9K30

Linux RTC 子系统

rtc 一般负责系统关机后计时、闹钟等,Linux 内核提供了一个 rtc 子系统,来支持所有的 rtc 设备。...rtc 设备本质上是一个字符设备,rtc 子系统在字符设备基础上抽象与硬件无关部分,并在这个基础上拓展 sysfs 和 proc 文件系统下访问。...rtc-xxx.c:各平台 RTC 设备实际驱动 rtc.h:定义与 RTC 有关数据结构 RK3399 以博主手边 RK3399 为例,RTC 驱动在 /kernel/drivers/rtc/...rx8010_set_alarm rx8010_set_time 软件逻辑就不在这里赘述了,大家可以参考下面链接 https://jasper1024.com/jasper/c089e4b/ 大家多看几个 Linux...子系统就会发现,基本上每个子系统都差不多,Linux 都会封装上中下 3 层,然后给你一些数据结构让你填充,就可以将这个子系统用起来了。

10910

Linux Regmap 子系统

这样 Linux 内核中就会充斥着大量重复、冗余代码,但是这些本质上都是对寄存器操作,所以为了方便内核开发人员统一访问 I2C/SPI 设备时候,为此引入了 Regmap 子系统。...1、什么是 Regmap Linux 下大部分设备驱动开发都是操作其内部寄存器,比如 I2C/SPI 设备本质都是一样,通过 I2C/SPI 接口读写芯片内部寄存器。...I2C/SPI 芯片又非常多,因此 Linux 内核里面就会充斥了大量 i2c_transfer 这类冗余代码,再者,代码复用性也会降低。...regmap 是 Linux 内核为了减少慢速 I/O 在驱动上冗余开销,提供了一种通用接口来操作硬件寄存器。...Linux 内核提供了针对不同接口 regmap 初始化函数。

2.7K40

Linux IIO 子系统

Linux 内核为了管理这些日益增多 ADC 类传感器,特地推出了 IIO 子系统,我们学习如何使用 IIO 子系统来编写 ADC 类传感器驱动。...大家一般在搜索 IIO 子系统时候,会发现大多数讲都是 ADC,这是因为 IIO 就是为 ADC 类传感器准备,当然了 DAC 也是可以。...1、iio_dev 结构体 IIO 子系统使用结构体 iio_dev 来描述一个具体 IIO 设备,此设备结构体定义在include/linux/iio/iio.h 文件中 2、iio_dev 申请与释放...Linux 内核使用 iio_chan_spec 结构体来描述通道,定义在 include/linux/iio/iio.h 文件中。...2、IIO 驱动框架创建 分析 IIO 子系统时候大家应该看出了,IIO 框架主要用于 ADC 类传感器,比如陀螺仪、加速度计、磁力计、光强度计等,这些传感器基本都是 IIC 或者 SPI 接口

2.1K40

Linux Led 子系统

2、概述 led 子系统驱动框架: 所有 led 共性: 有和用户通信设备节点 亮和灭 不同点: 有的 led 可能是接在 gpio 管脚上,不同 led 有不同 gpio 来控制 有的 led...可能由其他芯片来控制(节约 cpu pin,或者为了控制 led 电流等) 可以设置亮度 可以闪烁 所以 Linux led 子系统把所有 led 共性给实现了,把不同地方留给驱动工程师去做...led 子系统核心文件: driver/leds/led-class.c driver/leds/led-core.c driver/leds/led-triggers.c include/linux/...led 子系统是一个简单 Linux 子系统 ,在目录 /sys/class/leds 下展示该子系统设备,每个设备都有自己属性: brightness:设置 LED 亮度,范围 0 ~ max_brightness...LED_FULL = 255, //最大亮度 }; 3、代码框架分析 led-class.c (led 子系统框架入口) 维护 LED 子系统所有 LED 设备,为 LED 设备提供注册操作函数

30830

windowsLinux子系统安装

1.启用子系统功能 需要win系统支持子系统 进入控制面板 -> 程序和功能 -> 启用或关闭windows功能: 勾选适用于Linuxwindows子系统,确定,等待后,确认重启设备 2.下载子系统...acc status="" title="如果微软商店打不开"] 方案一:核实windows update服务是否启动 计算机右击管理→展开服务和应用程序→点击服务→核实windows update服务状态是否是正在运行...,点击获取 默认安装到C盘(若不想安装到C盘,看本篇最后),点击安装 等待下载完成后,启动即可, 3.子系统相关配置 启动后,会提示创建用户和设置密码,根据提示操作即可 [card title="修改...root密码" color="info"] 直接输入sudo passwd root修改 [/card] [card title="修改Linux国内镜像源并更新" color="success"] 输入...-18.04 d:\ubuntu18.04.tar 注:版本根据自己修改 (3)注销当前分发版 wsl --unregister Ubuntu-18.04 注:版本根据自己修改 (4)重新导入并安装分发版在

5.3K20

input子系统事件处理层(evdev)环形缓冲区【转】

头指针head以input_event事件为单位,记录缓冲区入口偏移量,而包指针packet_head则以“数据包”(一到多个input_event事件)为单位,记录缓冲区入口偏移量。 ?...”操作,使内核运作更高效,input子系统环形缓冲区采用了“求与”算法,这要求bufsize必须为2幂,在后文中可以看到bufsize值实际上是为64或者8n倍,符合“求与”运算要求。...环形缓冲区构造以及初始化 用户层通过open()函数打开input设备节点时,调用过程如下: open() -> sys_open() -> evdev_open() 在evdev_open()...函数中完成了对evdev_client对象构造以及初始化,每一个打开input设备节点用户都在内核中维护了一个evdev_client对象,这些evdev_client对象通过evdev_attach_client...环形缓冲区生产者 内核驱动作为生产者,通过input_event()上报input_event事件时,最终调用___pass_event()函数将事件写入环形缓冲区: static void __pass_event

1.3K60

Windows下Linux子系统安装

安装 以管理员模式打开Windows PowerShell wsl --list -online查看可以安装Linux发行版 wsl --install -d Ubuntu-20.04(安装后需要重启...) 输入用户名和密码即可,回到开始菜单,找到Ubuntu图标即可打开 wsl子系统,位置在\\wsl$直接在任务管理器搜索即可 查看版本wsl -l -v 定期更新:sudo apt update &&...,等待下载VS Code Server for x64并安装 链接到vs code(左下角出现WSL:Ununtu-20.04) 安装miniconda 参考链接:Python环境搭建:基于Win10子系统...f bash Miniconda3--py38_4.11.0-Linux-x86_64.sh 一直点Enter/yes,直到出现“Do you wish the installer to intialize...但是,下载目录为windows某一个磁盘,无法复制到wsl子系统中(不知道怎么解决,我目前又用不到,先不弄了) 使用命令行,首先加载到windows下含有cudnn文夹 sudo

2.8K40
领券