Chinaunix首页 | 论坛 | 博客
  • 博客访问: 677118
  • 博文数量: 516
  • 博客积分: 4119
  • 博客等级: 上校
  • 技术积分: 4288
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-30 17:29
文章分类

全部博文(516)

文章存档

2014年(4)

2013年(160)

2012年(352)

发布时间:2013-01-04 17:45:49

一,前言:1, 近日要写一个很特殊的键盘驱动,故对linux的input子系统分析了一番,写下分析笔记,以防不日即忘。2,  使用input子系统的一般流程为:input_allocate_device()申请一个input_dev设备――>初始化该 input_dev――>input_register_device()向子系统注册该设备――>中断时input_event()向子系 统报告事件。此流程一目了然,即使不看input子系统,我们按照它给出的一般流程也可以把自己写的IO驱动加入到input子系统里去,但 input_event()提交完数......【阅读全文】

阅读(453) | 评论(0) | 转发(0)

发布时间:2013-01-04 17:44:26

最近看到linux的设备驱动模型,关于Kobject、 Kset等还不是很清淅。看到了struct  device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞 s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices  {}中加入设备也会调用。但从来就没有想过具体的驱动注册并调用probe的过程。于是打开SourceInsight追踪了一下:从driver_register看起:in......【阅读全文】

阅读(447) | 评论(0) | 转发(0)

发布时间:2013-01-04 17:44:16

1、I/O 端口和 I/O 内存每个外设都是通过读写其寄存器来控制的。通常一个设备有几个寄存器,它们位于内存地址空间或者I/O地址空间,并且地址是连续的。在硬件层上,内存区和I/O区域没有概念上的区别: 它们都是通过在地址总线和控制总线上发出电信号来存取(即,读写信号),并且通过数据总线来读写数据。在一些CPU制造商在其芯片上实现了一个单地址空间(统一编址)的同时,其它的CPU制造商认为外设不同于内存,应该有一个独立的地址空间给外设(单独编址),其生产处理器(特别是x86家族)的I/O端口有自己的读写信号线和特殊的CPU指令来存取端口。因为外设要与外设总......【阅读全文】

阅读(404) | 评论(0) | 转发(0)

发布时间:2013-01-04 17:44:05

一、统一编址与独立编址该部分来自于:http://blog.chinaunix.net/space.php?uid=21347954&do=blog&id=443670,感谢mason_hu的分享。  从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、 并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘, 显示器……对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个......【阅读全文】

阅读(689) | 评论(0) | 转发(0)

发布时间:2013-01-04 17:39:33

一.  输入子系统核心分析。    1.输入子系统核心对应与/drivers/input/input.c文件,这个也是作为一个模块注册到内核的。所以首先分析模块初始化函数。 [cpp] view plaincopy static int __init input_init(void)   {       int err;         ......【阅读全文】

阅读(491) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册