- 博客(27)
- 收藏
- 关注
转载 可延迟函数、内核微线程以及工作队列
本文研究多个用于在内核环境当中延迟处理的方法(特别是在 Linux 内核版本 2.6.27.14 当中)。 尽管这些方法针对 Linux 内核,但方法背后的理念, 对于系统架构研究具有更广泛的意义。例如, 可以将这些理念应用到传统的嵌入式系统当中,取代原有的调度程序来进行任务调度 。在开始研究用于内核中的可延
2011-06-30 16:46:00 1266
转载 Linux中Workqueue机制分析
Linux中Workqueue机制分析 走入Linux的殿堂已经有一年有余了,在这里我想将Linux的各种实现机制分析一遍,一方面对自己来说也是温故而知新,另一方面,促进大家的交流,最好能够给大家一些抛砖引玉的启迪。我是硬件出身,搞硬件已经好多年了,从是专门软件开发也接近两年了,在这一段时间内我越发认为软硬件协同设计是未来发展的主流,软硬件的界限越来越
2011-06-30 16:14:00 726
转载 inux输入子系统(8)--input core
第3章 输入子系统核心层上面两章分别讲了Linux输入子系统的设备驱动层和事件处理层,这两层的实现都是建立在输入核心层的基础之上的。核心层负责管理所有的资源并连接驱动层和事件处理层。3.1 inputcore初始化输入子系统的核心层的实现都在driver/input/input.c文件中,初
2011-06-23 16:57:00 1172
转载 linux输入子系统(7)--mouse_handler的实现
2.4 mouse_handler的实现在内核的driver/input/mousedev.c中内核已经实现了一个专门处理鼠标事件的mousedev_handler。这个handler占用的次设备号是32~63。虽然有32个次设备号可用,但是只有前31个可被用户所用,系统保留了最后一个,所以最多连接31
2011-06-23 16:55:00 1140
转载 linux输入子系统(6)--- evdev_handler的实现
2.3 evdev_handler的实现Linux输入子系统已经建立好了几个handler,用来处理几类常见的事件,如鼠标、键盘、摇杆等。其中最为基础的是evdev_handler,它是在driver/input/evdev.c中实现的。它能够接收任意类型的事件,任意id的设备都可以和它匹配连接,它对应的设备节点为
2011-06-23 16:54:00 943
转载 linux输入子系统(5)
第2章 输入子系统的事件驱动上一章已经说过输入子系统分为三层,最上面的一层是事件处理层,我们暂时称它为事件驱动,这是相对于上一章的设备驱动来讲的。上一章介绍了设备驱动注册时要与匹配的handler连接,报告的事件也会分发给连接的handler,这一章介绍handler的相关操作。2.1 重要的数据结构首
2011-06-23 16:53:00 1117
转载 linux输入子系统(4)
1.5 事件报告的传递输入子系统设备报告各种事件通过input_report_XXX族函数,例如程序清单 1.5中报告按键事件。按键、相对坐标、绝对坐标和同步事件报告的函数如程序清单 1.12所示。 程序清单 1.12 事件报告函数
2011-06-23 16:52:00 1246
转载 linux输入子系统(2)
1.3 输入子系统设备驱动讲解1.3.1 打开和关闭函数struct input_dev中有open和close两个函数指针。在与handler第一次连接之后会调用open函数,断开连接会调用close。open中应该完成硬件初始化的相关工作,并且申请用到的其他资源,如中断号。c
2011-06-23 16:51:00 1117
转载 linux输入子系统(3)
1.4 input_dev的注册在输入设备驱动的初始化函数的最后一步就是调用input_register_device注册设备。这个函数如程序清单 1.9所示。程序清单 1.9 input_register_device/* driver/in
2011-06-23 16:51:00 865
转载 linux输入子系统(1)
第1章 Linux输入子系统设备驱动Linux输入子系统将输入驱动抽象为三层:事件处理层、核心层、设备驱动层。应用程序只需要跟事件处理层打交道,不需要察觉设备的变化。核心层是负责管理输入设备,并将消息在事件处理层和设备驱动层之间传递。由于事件处理和设备驱动的分离,使得应用程序读取输入信息的接口固定不变就可以适应新的同类输入设备。表示事件处理层的数据结
2011-06-23 16:48:00 1161
原创 中断详解
1 中断 1.1 中断的类型依据中断的来源,中断可以分为两类:Synchronous Interrupts and Exceptions:同步中断以及异常,他们由 CPU 本身产生,主要针对当前执行的程序。 异常 (Exceptions) 的发生有很多原因,例如:程序的运行时错误 (Runtime error), 例如一个数字被0除之类;
2011-06-21 15:25:00 2942
转载 中断注册方法
中断注册方法在驱动程序中,要想使设备能够产生中断,则首先需要调用request_irq()来分配中断线。在通过request_irq()函数注册中断服务程序的时候,将会把设备中断处理程序添加进系统,以在中断发生的时候调用相应的中断处理程序。我们来看一下request_irq()函数的定义:-------------------------------------------------------
2011-06-21 15:05:00 2818
转载 Linux 内核驱动--多点触摸接口
译自:linux-2.6.31.14/Documentation/input/multi-touch-protocol.txt简介 为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。 使用说明 单点触摸信息是以ABS承载并按一定顺序发送,如BT
2011-06-21 14:20:00 1298
转载 Linux操作系统内核启动参数详细解析
Linux操作系统内核启动参数详细解析 Linux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。 如果不使用启动管理器,比如直接从BIOS或者把内核文件用“cp zImage /dev/fd0”等方法直接从设备启动,
2011-06-16 16:19:00 476
转载 嵌入式linux启动信息完全注释
摘要我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。嵌入式linux的启动信息是一个很值得我们去好好研究的东西,它能将一幅缩影图呈现在我们面前,来指导我们更加深入地理解li
2011-06-16 16:17:00 797
转载 linux内核地址的确定
内核编译链接过程是依靠vmlinux.lds文件,以arm为例vmlinux.lds文件位于kernel/arch/arm/vmlinux.lds,vmlinux-armv.lds的生成过程在kernel/arch/arm/Makefile中ifeq ($(CONFIG_CPU_32),y)PROCESSOR = armvTEXTADDR = 0xC0008
2011-06-16 16:15:00 654
转载 分析kernel的initial函数
分析kernel的initcall函数分析kernel的initcall函数Author: DongasData: 08-07-15 先来看看这些initcall函数的声明:/* includ
2011-06-16 16:09:00 1077
转载 关于内核进程0和进程1
关于内核进程0和进程1关于内核进程0和进程1 Kernel Version: Linux 2.6.18_Pro500 (for Arm) Process 0 下面这段对进
2011-06-16 16:07:00 867
转载 Linux内核访问外设I/O资源的方式
Linux内核访问外设I/O资源的方式Linux内核访问外设I/O资源的方式 Author: DongasDate: 08-08-02 我们知道默认外设I/O资源是不在
2011-06-16 16:04:00 477
转载 Request_irq和setup_irq的区别
Author: DongasData: 08-07-19 Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。 /* * Internal function to register an irqaction - typically used to * allocate special inter
2011-06-16 16:00:00 508
转载 Kernel硬件中断的初始化流程
Kernel硬件中断的初始化流程 Kernel硬件中断的初始化流程 Porting kernel到一个全新的开发板时,通常hardware irq的初始化函数是要我们自己实现的。那我们实现了自己硬件的中断初始化函数之后,内核是如何调用到它的呢?内核有自己的一套支持多平台的架构。下面我们分析内核中断初始化的过程以及如何调用到一个新平台的irq初始化函数。这里我们以s3c2410平台为例,他的中断初
2011-06-16 15:50:00 594
转载 深入分析request_irq的dev_id参数作用
深入分析request_irq的dev_id参数作用深入分析request_irq的dev_id参数作用 Author : DongasData : 08-07-12 注:若对kernel中断处理模型不是很清楚的话(如:irqaction的作用
2011-06-16 15:26:00 500
转载 Linux 内核驱动--多点触摸接口
输入子系统----硬件设备驱动 按键、触摸屏、键盘、鼠标等输入都可以利用input接口函数来实现设备驱动,驱动层负责和底层硬件打交道,向系统报告按键、触摸屏、键盘、鼠标等输入事件,驱动报告的事件经过InputCore和 Eventhandler最终到达用户空间。 通过input子系统,具体的输入设备驱动只需要完成如下工作: 1.
2011-06-10 11:44:00 1269
转载 Linux设备驱动之I2C总线适配器驱动分析
Linux设备驱动之I2C总线适配器驱动分析------------------------------------------ 本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言在前面已经分
2011-06-09 12:20:00 1988
转载 Linux设备驱动之I2C架构分析
Linux设备驱动之I2C架构分析------------------------------------------ 本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言I2c是phili
2011-06-09 12:18:00 657
转载 Linux I2C驱动源码分析(二)
下面开始分析linux/drivers/i2c/busses/i2c-s3c2410.c,在设备与驱动匹配成功后,会执行s3c24xx_i2c_probe()函数,其源码如下:/* s3c24xx_i2c_probe called by the bus driver when a suitable device is found*/static int s3c24x
2011-06-09 10:48:00 1343
转载 Linux I2C驱动源码分析(一)
内核版本:2.6.31.6 首先在S3C2440平台的初始化函数中,主要是将开发平台的设备注册进了系统,也就是将device注册到了platform虚拟的总线上,并进行了一些初始化的工作,这里我们只关注I2C的部分。 static void __init smdk2440_machine_init(void)
2011-06-09 10:46:00 1137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人