板牙  
失败是什么?没有什么,只是更走近成功一步;而成功是走过了所有通向失败的路...只要你心够决!

2012年1月9日

摘要: 1. Don't answer questions to which you don't know the answer(不回答自己不知道答案的问题) 2. Explain yourself (解释给自己) 如果自己是提问者,你的回答是否能让自己明白? 3. Give as little assistance as necessary (尽可能的给最少的帮助) 有的时候启发性的回答更为有效. 4. Show your workings (展示你的做法) 5. Use humour judiciously (明智地使用幽默) 有的时候因为不同语境/语言的问题,你的俏皮话可能会让提 阅读全文
posted @ 2012-01-09 09:38 板牙 阅读(115) 评论(0) 推荐(0) 编辑

2011年9月12日

摘要: 17.4 evdev输入事件驱动分析 evdev输入事件驱动,为输入子系统提供了一个默认的事件处理方法。其接收来自底层驱动的大多数事件,并使用相应的逻辑对其进行处理。evdev 输入事件驱动从底层接收事件信息,将其反映到sys文件系统中,用户程序通过对sys文件系统的操作,就能够达到处理事件的能力。下面先对evdev的初 始化进行简要的分析。 17.4.1 evdev的初始化 evdev以模块的方式被组织在内核中,与其他模块一样,也具有初始化函数和卸载函数。evdev的初始化主要完成一些注册工作,使内核认识evdev的存在。 1.evdev_init()初始化函数 evdev模块定义在/dri 阅读全文
posted @ 2011-09-12 23:19 板牙 阅读(453) 评论(0) 推荐(0) 编辑
 
摘要: 17.3 input子系统 为了对输入子系统有一个清晰的认识,本节将分析输入系统的初始化过程。在Linux中,输入子系统作为一个模块存在,向上,为用户层提供接口函数, 向下,为驱动层程序提供统一的接口函数。这样,就能够使输入设备的事件通过输入子系统发送给用户层应用程序,用户层应用程序也可以通过输入子系统通知驱动 程序完成某项功能。 17.3.1 子系统初始化函数input_init() 输入子系统作为一个模块存在,必然有一个初始化函数。在/drivers/input/input.c文件中定义了输入子系统的初始化函数input_init(),该函数的代码如下:01staticint__initi 阅读全文
posted @ 2011-09-12 23:11 板牙 阅读(298) 评论(0) 推荐(0) 编辑
 
摘要: 17.2 handler注册分析 input_handler是输入子系统的主要数据结构,一般将其称为handler处理器,表示对输入事件的具体处理。 input_handler为输入设备的功能实现了一个接口,输入事件最终传递到handler处理器,handler处理器根据一定的规则,然后对事件 进行处理,具体的规则将在下面详细介绍。在此之前,需要了解一下输入子系统的组成。 17.2.1 输入子系统的组成 前面主要讲解了input_dev相关的函数,本节将总结前面的知识,并引出新的知识。为了使读者对输入子系统有整体的了解,本节将对输入子系统的组成进行简要的介绍。后面的章节将围绕输入子系统的各个组 阅读全文
posted @ 2011-09-12 23:08 板牙 阅读(361) 评论(0) 推荐(0) 编辑
 
摘要: 本文是摘自《Linux驱动开发入门与实战》第17章输入子系统设计的内容,在这里备份一下,以后查找方便。第17章 输入子系统设计 本章将介绍Linux输入子系统的驱动开发。Linux的输入子系统不仅支持鼠标、键盘等常规输入设备,而且还支持蜂鸣器、触摸屏等设备。本章将对Linux输入子系统进行详细的分析。 17.1 input子系统入门 输入子系统又叫input子系统。其构建非常灵活,只需要调用一些简单的函数,就可以将一个输入设备的功能呈现给应用程序。本节将从一个实例开始,介绍编写输入子系统驱动程序的方法。17.1.1 简单的实例 本节将讲述一个简单的输入设备驱动实例。这个输入设备只有一个按键,. 阅读全文
posted @ 2011-09-12 23:01 板牙 阅读(948) 评论(0) 推荐(0) 编辑

2011年9月4日

摘要: 我用busybox建的根文件系统,没有这个tree命令,可以下载此命令的源码,交叉编译一下,再放到根文件系统中的/bin目录中就好。源码下载地址:ftp://mama.indstate.edu/linux/tree/ 我是在arm平台下,所以把makefile 文件中的CC那行改为“CC=arm-linux-gcc”,再把生成的tree文件通过nfs弄到开发板的bin文件下就可以了现在的最新版本是1.6.0,下载地址:/Files/dekun_1986/tree-1.6.0.rar 阅读全文
posted @ 2011-09-04 13:36 板牙 阅读(873) 评论(0) 推荐(0) 编辑

2011年8月29日

摘要: 看了一段时间的驱动编程,从LDD3的hello wrod到后来的字符设备以至于更加复杂的驱动,越看越是觉得对linux驱动的结构不清楚,越看越是迷糊。于是就停下脚步搜索一下资料理一下头绪:以下四个方面来总结一些内容: 1.底层数据结构:kobject,kset.2.linux设备模型层次关系:bus_type,device,device_driver.3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析. 4.面向对象的思想在linux设备模型中的应用分析. 一、底层数据结构:kobject,kset先说说模型的意义: 总体来说是为了系统地管理所有设备。 在具体实现方面分... 阅读全文
posted @ 2011-08-29 23:10 板牙 阅读(328) 评论(0) 推荐(0) 编辑

2011年8月16日

摘要: 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行 接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示 器…… 对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个寄存器(也称为端口),访问设备实际上是访问相关的端口,所有的信息 会由接口转给它的设备。那么CPU会准备数据到数据总线,但是诸多接口,该发给谁呢?这时就须要为各接口分配一个地址,然后把地址放在地址总线上,需要的控制信息. 阅读全文
posted @ 2011-08-16 22:00 板牙 阅读(593) 评论(0) 推荐(0) 编辑

2011年8月7日

摘要: mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优 的选择。 mdev使用mdev的使用在busybox中的mdev.txt文档已经将得很详细了。但作为例子,我简单讲讲我的使用过程: (1)在编译时加上对mdev的支持(我是使用的是busybox1.10.1): Linux System Utilities ---> mdev Support /etc/mdev.conf Suppo 阅读全文
posted @ 2011-08-07 12:19 板牙 阅读(412) 评论(0) 推荐(0) 编辑

2011年8月1日

摘要: ARM920T的异常向量表有两种存放方式,一种是低端存放(从0x00000000处开始存放),另一种是高端存放(从0xffff0000处开始存 放)。关于为什么要分两种方式进行存放这点我将在介绍MMU的文章中进行说明,本文采用低端模式。ARM920T能处理有8个异常,他们分别是:Reset,Undefined instruction,Software Interrupt,Abort (prefetch),Abort (data),Reserved,IRQ,FIQ下面是某个采用低端模式的系统源码片段: _start:bHandle_ResetbHandleUndefbHandleSWIbHand 阅读全文
posted @ 2011-08-01 22:58 板牙 阅读(206) 评论(0) 推荐(0) 编辑