电阻屏驱动基础理论

SoC系统中集成的独立的外设控制器,挂接在SoC内存空间确不依附于PCI/I2C/SPI此类总线。
在Linux设备驱动中,有一类设备被称为“平台设备”,通常把SoC系统中集成的独立外设单元都当作平台设备来处理。


来自精通Linux设备驱动程序开发:平台设备驱动中的平台可看做一种伪总线,通常用于将集成进片上系统的轻量级设备和Linux设备模型连接在一起。平台由平台设备和平台设备驱动程序组成。

内核在初始化过程中,首先初始化虚拟总线,其次将设备添加到虚拟总线上,最后注册设备驱动,它会扫描虚拟总线寻找与之匹配的设备(如果设备名相符,就进行探测,探测成功后进行绑定)。

在make menuconfig时生成 .config 然后再make zImage时就会由.config生成autoconf.h 都是脚本做的



/dev/input/event0  /dev/input/ts0  /dev/input/mice    /dev/console
/dev/input/event1  /dev/input/ts1  /dev/input/mouse0  /dev/ttyn
--------------------------------------------
Event handler   evdev.c  tsdev.c
--------------------------------------------
Input core      input.c
--------------------------------------------
Input driver    s3c2410ts.c  usbmouse.c

需要从底层设备驱动-->核心层-->事件处理层-->用户空间
应用这个 input 子系统如下优点:
  1.统一了各种输入设备的处理方法
  2.提供了用于分布给用户使用的简单接口
  3.提炼了输入驱动程序的通用部分,简化了驱动程序的开发和移植



Input子系统分为三个层级:

事件处理层:evdev.c 、joydev.c、mousedev.c
核心层:input.c
设备驱动层:touchscreen、mouse、fingerprint 等
事件处理层:通过核心层的API获取输入事件上报的数据,定义API与应用层交互
核心层:为事件处理层和设备驱动层提供接口API
设备驱动层:采集输入设备的数据信息,通过核心层提供的API上报数据


struct input_dev:会在具体设备驱动层中被填充
struct input_handle:会在事件处理层和设备驱动层注册设备时通过input_dev或input_handler间接调用

struct input_handler:会在事件处理层如evdev.c中被实例化

Linux不同类型的输入设备,设计并实现了一个对上层应用统一的视图的抽象层,即是Linux输入子系统




你可能感兴趣的:(内核,嵌入式,跟踪)