本文章摘自下面的网友:http://blog.sina.com.cn/s/blog_6e5b342e0100m87d.html一、内核中如何记录时间任何程序都需要时间控制,其主要目的是:测量时间流逝和比较时间知道当前时间指定时间量的延时操作为达到这个目的,应用程序使用日历时间(年月日时分秒)或者自1...
分类:
系统相关 时间:
2015-06-04 15:31:34
阅读次数:
236
被文章摘自一下几位网友。非常感谢他们。http://blog.sina.com.cn/s/blog_57330c3401011cq3.htmlLinux的内核中定义了一个定时器的结构:#includestruct timer_list{ struct list_head list; unsign.....
分类:
系统相关 时间:
2015-06-04 13:21:03
阅读次数:
147
1、设备模型引入
Linux 2.6内核最初为了应付电源管理的需要,提出了一个设备模型来管理所有的设备。在物理上,外设之间是有一种层次关系的,比如把一个U盘插到笔记本上,实际上这个U盘是接在一个USB Hub上,USB Hub又是接在USB 2.0 Host Controller (EHCI)上,最终EHCI又是一个挂在PCI Bus上的设备。这里的一个层次关系是:PCI->EHCI->USB Hub->USB Disk。如果操作系统要进入休眠状态,首先要逐层通知所有的外设进入休眠模式,然后整个系统才可以...
分类:
系统相关 时间:
2015-06-04 11:53:00
阅读次数:
248
今天刚开始学习linux驱动的编写。在网上开了许多网友的博客,感觉比较好的摘抄下来,以便以后忘记可以随时查看。下面是摘抄文章的地址,非常感谢他们。http://blog.chinaunix.net/uid-26833883-id-4366882.html -------草根老师
分类:
系统相关 时间:
2015-06-04 11:38:00
阅读次数:
173
1
HAL程序必须要一个HAL-MODULE-INFO——SYM(hw_module_t)变量,有了这个才能被Android系统调用。类似于(C函数的main()和linux驱动程序的init()函数)
2 HAL编程是三个关键结构体:
struct hw_module_t; (HAL模块 中)
struc...
分类:
移动开发 时间:
2015-06-03 21:40:22
阅读次数:
407
1、定时器
之前说过两类跟时间相关的内核结构。
1、延时:通过忙等待或者睡眠机制实现延时。
2、tasklet和工作队列,通过某种机制使工作推后执行,但不知道执行的具体时间。
接下来要介绍的定时器,能够使工作在指定的时间点上执行,而且不需要使用忙等待这类的延时方法。通过定义一个定时器,告之内核在哪个时间需要执行什么函数就可以了,等时间一到,内核会就执行指定的函数。...
分类:
系统相关 时间:
2015-06-03 19:40:30
阅读次数:
167
1、工作队列的使用
按惯例,在介绍工作队列如何实现之前,先说说如何使用工作队列实现下半部。
步骤一、定义并初始化工作队列:
创建工作队列函数:
struct workqueue_struct *create_workqueue(const char *name)
函数传参是内核中工作队列的名称,返回值是workqueue_struct结构体的指针,该结构体用来维护一个等待队列。
我的代码如下:
struct workqueue_struct * ZP1015_wq; //定义工作队列
ZP101...
分类:
系统相关 时间:
2015-06-03 17:48:40
阅读次数:
172
【摘要】我们都知道,编写Linux驱动程序,查询一个函数,我们可以用source insight,但是有时候里面注释太少了 ,理解起来有点费时间,对于我这种小白来说,还是得做一些注释笔记,所以本文主要是献给像我这种小白的人用的,大神勿喷~~
1、ARRAY_SIZE
宏,是求设备结构体中设备的个数,
定义在linux/kernel.h中
#define ARRA...
分类:
系统相关 时间:
2015-06-03 15:43:41
阅读次数:
243
1 Android为什么要加入硬件抽象层HAL
A 统一硬件调用接口,所以利用HAL屏蔽linux驱动的复杂不统一的接口
B 解决GPL版权问题,由于linux内核基于GPL协议,这个GPL协议需要开源,而Android遵守Apache License2.0协议,这个协议不要求开源,因此google玩了个穿越,将原本位于Linux驱动中的敏感代码(业务逻辑代码)向上移动了...
分类:
移动开发 时间:
2015-06-02 22:04:04
阅读次数:
314
linux驱动程序中的异步编程
A
前面介绍的等待队列和轮询编程提供了较好的解决设备访问的机制,但是这些机制都
是由应用程序发起的,都需要应用程序主动访问设备。更完美的方式是由驱动程序主
动通知应用程序,也就是说,当驱动程序满足某些条件后,会主动通知应用程序处理
,这些处理方式有些像面向对象编程的事件,而在linux内核使用的事件是接下来要介
绍的信号。
#include...
分类:
系统相关 时间:
2015-05-29 12:07:48
阅读次数:
146