Linux驱动
文章平均质量分 78
Tina_Chan
这个作者很懒,什么都没留下…
展开
-
关于IO内存
在平台设备驱动中: 内存空间: 内存地址寻址范围,32位操作系统内存空间为2的32次幂,即4G。 物理内存: 实实在在的物理设备,一般 IO空间: X86特有的一个空间,与内存空间彼此独立的地址空间,32位X86有64K的IO空间。 IO端口: 当一个寄存器或转载 2011-10-07 14:57:12 · 395 阅读 · 0 评论 -
Linux工作队列解析(二)
工作、工作队列和工作者线程 如前所述,我们把推后执行的任务叫做工作(work),描述它的数据结构为work_struct,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct,而工作线程就是负责执行工作队列中的工作。系统默认的工作者线程为events,自己也可以创建自己的工作者线程。 表示工作的数据结构 工作用中定义的work_转载 2012-01-12 22:44:39 · 524 阅读 · 0 评论 -
LCD驱动学习笔记
2. Linux 驱动 2.1 FrameBuffer Linux是工作在保护模式下,所以用户态进程是无法像DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux仿显卡的功能,将显抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer原创 2011-11-05 09:08:05 · 1296 阅读 · 0 评论 -
input子系统——linux驱动学习笔记(三)
整个Input子系统的结构: 前面一片文章我们介绍的属于输入子系统核心层,该层主要负责对驱动层提供接口,比如之前介绍input_allocate_device()、 input_register_device(button_dev)、input_report_key(button_dev, BTN_0, 1)、input_sync(button_dev)等。 同时向上提原创 2011-11-10 13:01:16 · 1469 阅读 · 1 评论 -
input子系统——linux驱动学习笔记(二)
为了更深入的了解input子系统,光把一个按键驱动写好是不够的,我们下面来看input子系统跟我们写的程序是怎么联系起来的。 我们首先来看在前面的按键输入驱动中的 struct input_dev * button_dev = input_allocate_device(); struct input_dev *input_allocate_device(void) { struc原创 2011-11-10 12:58:35 · 3402 阅读 · 0 评论 -
input子系统——linux驱动学习笔记(一)
我们下面通过自己编译个最简单的按键输入程序,来学习和理解input子系统。 程序的功能就是一个单独的按键,按下后产生中断并执行相应的程序,代码如下: #include #include #include #include #include #include #include #include #include #include #include #include原创 2011-11-10 12:53:32 · 1394 阅读 · 0 评论 -
内核定时器 struct timer_list
本文来自:http://hi.baidu.com/zhlg_hzh/blog/item/d298b49b57a1cab2c8eaf42b.html 定时器,有时也称为动态定时器或内核定时器,是管理内核时间的基础。内核经常要推后执行某些代码,比如下半部机制就是为了将工作推后执行。我们需要一种工具,使工作能够在指定时间点上执行,正好在希望的时间点上,内核定时器正是这样一种工具。 定时器使用简转载 2011-11-08 20:53:23 · 567 阅读 · 0 评论 -
request_irq()——注册中断服务
在 2.4 内核和 2.6内核中都使用 request_irq() 函数来注册中断服务函数。在 2.4 内核中,需要包含的头文件是 #include ,2.6 内核中需要包含的头文件则是 #include 。函数原型如下: 2.4 内核 int request_irq (unsigned int irq, void (*handler)(int, void *, struct转载 2011-11-08 14:59:16 · 1385 阅读 · 0 评论 -
s3c2440的ADC触摸屏驱动——学习笔记
我们首先来分析drivers/input/touchsreen/s3c2410_ts.c这个文件: static struct device_driver s3c2410ts_driver = { .name = "s3c2410-ts", //在注册这个driver的时候,系统就是以这个结构的.name来查找相同name的设备的。原创 2011-11-08 09:56:33 · 1328 阅读 · 0 评论 -
驱动学习之——内核等待队列的使用
在中,结构体定义如下: struct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t; 且 struct list_head { struct list_head *next, *p原创 2011-11-06 17:50:29 · 507 阅读 · 0 评论 -
RTC驱动程序——学习笔记
一、RTC简介: RTC(Real Time Clock)是为了给操作系统提供一个可靠的时间,且在断电情况下使用备用电池供电(即在断电情况下,也能确保时间的正确性)。 RTC是通过依靠一个频率为32.768KHZ的外部晶振,产生周期的脉冲信号,每一个脉冲信号到来,计数器(TICNT)减一,来完成计时功能的。 从下图可以看出来,XTIrtc和XTOrtc产生脉冲信号,传给2^15分频器原创 2011-11-06 18:39:49 · 1466 阅读 · 0 评论 -
中断处理之RTC——陈莉君老师(经典)
中断絮说(三)-从外而内,Linux对中断的支持 在Linux中,中断处理程序看起来就是普普通通的C函数。只不过这些函数必须按照特定的类型声明,以便内核能够以标准的方式传递处理程序的信息,在其他方面,它们与一般的函数看起来别无二致。中断处理程序与其它内核函数的真正区别在于,转载 2011-10-07 18:07:08 · 1516 阅读 · 0 评论 -
linux工作队列解析(一)
INIT_DELAYED_WORK()是一个宏,我们给它传递了两个参数.&hub->leds和led_work.对设备驱动熟悉的人不会觉得INIT_DELAYED_WORK()很陌生,其实鸦片战争那会儿就有这个宏了,只不过从2.6.20的内核开始这个宏做了改变,原来这个宏是三个参数,后来改成了两个参数,所以经常在网上看见一些同志抱怨说最近某个模块编译失败了,说什么make的时候遇见这么一个错误:转载 2012-01-12 22:43:19 · 882 阅读 · 0 评论