首页
学习
活动
专区
工具
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子系统剖析

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

    1K30

    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.2K20

    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

    90730

    基于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

    3K71

    基于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.6K41

    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。

    4K30

    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 设备提供注册操作函数

    44230

    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.3K40

    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 层,然后给你一些数据结构让你填充,就可以将这个子系统用起来了。

    20510

    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.9K40

    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.4K20

    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.4K60

    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.9K40
    领券