摘要: 一、I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的 阅读全文
posted @ 2016-03-03 22:49 jetli 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 一. 输入子系统核心分析。 1.输入子系统核心对应与/drivers/input/input.c文件,这个也是作为一个模块注册到内核的。所以首先分析模块初始化函数。 1 static int __init input_init(void) 2 { 3 int err; 4 5 input_init_ 阅读全文
posted @ 2016-02-28 18:55 jetli 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 设备层:直接操作硬件,所有事件上报核心层或者通过核心层得到需要硬件执行什么操作 input子系统按键驱动实例: 1 /* 参考drivers\input\keyboard\gpio_keys.c */ 2 3 #include <linux/module.h> 4 #include <linux/v 阅读全文
posted @ 2016-02-27 13:55 jetli 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 一、字符设备、字符设备驱动与用户空间访问该设备的程序三者之间的关系。 如图,在Linux内核中使用cdev结构体来描述字符设备,通过其成员dev_t来定义设备号(分为主、次设备号)以确定字符设备的唯一性。通过其成员file_operations来定义字符设备驱动提供给VFS的接口函数,如常见的ope 阅读全文
posted @ 2016-02-26 22:28 jetli 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 1.input_dev结构体 是硬件驱动层,代表一个input设备 1 struct input_dev { 2 const char *name; 3 const char *phys; 4 const char *uniq; 5 struct input_id id; //与input_hand 阅读全文
posted @ 2016-02-24 17:25 jetli 阅读(554) 评论(0) 推荐(0) 编辑
摘要: 输入设备总类繁杂,包括按键,键盘,触摸屏,鼠标,摇杆等等,它们本身都是字符设备,不过内核为了能将这些设备的共性抽象出来,简化驱动的开发,建立了一个Input子系统.Input子系统分为三层,从下至上分别是输入设备驱动层,输入核心层以及输入事件驱动层. 核心层: 高效,无bug,可重用 事件处理层: 阅读全文
posted @ 2016-02-24 17:00 jetli 阅读(266) 评论(0) 推荐(0) 编辑