- 博客(14)
- 收藏
- 关注
转载 Linux中断(interrupt)子系统之五:软件中断(softIRQ)
软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。/*******************************************************************************
2015-03-11 11:29:15 368
转载 Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层
在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc
2015-03-11 11:28:02 414
转载 Linux中断(interrupt)子系统之三:中断流控处理层
1. 中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应;mask_irq和unmask_irq的处理;中断控制器是否需要eoi回应?何时打开cpu的本地irq中断?以便允许irq的嵌套;中断数据结构的同
2015-03-11 11:26:31 330
转载 Linux中断(interrupt)子系统之二:arch相关的硬件封装层
Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对中断的进一步处理和控制。对底层的封装主要包括两部分:实现不同体系结构中断入口,这部分代码通常用asm实现;中断控制器进行封装和实现;本文的内容正
2015-03-11 11:23:14 573
转载 Linux中断(interrupt)子系统之一:中断系统基本原理
这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变。 /****************************************************
2015-03-11 11:19:27 425
转载 IDR--Integer ID Management
IDR是用来管理小整形ID数的库函数集合。这些代码最早是在2003年2月作为POSIX clocks补丁的一部分加入的;现在,在内核的许多地方都可以看到IDR的应用。IDR算法的实现采用了radix tree的思想,从本质上讲,IDR是一个稀疏数组,能将整形ID号映射到任意指针上。应用IDR机制时要包含头文件(注:本文内核版本为2.6.32.10),IDR结构体如下struct idr
2015-03-02 11:19:40 376
转载 IDR机制
IDR机制在Linux内核中指的是整数ID管理机制。实质上来讲,这就是一种将一个整数ID号和一个指针关联在一起的机制。这个机制最早在03年2月加入内核,当时作为POSIX定时器的一个补丁。现在,内核中很多地方都可以找到它的身影。 IDR机制原理:IDR机制适用在那些需要把某个整数和特定指针关联在一起的地方。例如,在IIC总线中,每个设备都有自己的地址,要想在总线上找到特定的设备
2015-03-02 11:18:00 341
转载 linux内核中ffs(x)宏
linux内核中ffs(x)宏是平台相关的宏,在arm平台,该宏定义在arch/arm/include/asm/bitops.h#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })static inline int fls(int x){ int ret; if (__built
2015-02-14 15:56:37 839
转载 多媒体卡和SD卡的卡识别过程
多媒体卡和SD卡的卡识别过程是有区别的; 对于多媒体卡,卡识别过程以时钟频率Fod开始,所有SDIO_CMD输出为开路驱动,允许在这个过程中的卡的并行连接,识别过程如下:1. 总线被激活2. SDIO卡主机广播发送SEND_OP_COND(CMD1)命令,并接收操作条件3. 得到的响应是所有卡的操作条件寄存器内容的“线与”4. 不兼容的卡会被置于非激活状态5.
2015-02-14 15:30:32 1400
转载 Paint_Bmp
(原创)裸奔 第2章 学习总结 修改浏览权限 |删除 上次,做图片显示实验,没有看如果转换的图片不是320X240,将会显示什么。这次玩LCD,提示我,看看在显示图片的时候,不是屏幕分辨率大小的,会是什么现象。 首先,调用显示图片的函数: Paint_Bmp(int x0,int y0,int h,int l,unsigned char bmp[]
2012-01-27 14:55:51 1282
转载 Main函数之Delay分析
void Delay(int time){U32 val = (PCLK>>3)/1000-1; ------由前面知,PCLK频率为50MHz。此时val的值为6249,减1是因为,计数时包括0。所以相当于计数了6250次。rTCFG0 &= ~(0xffrTCFG0 |= 3 //prescaler = 3+1rTCFG1 &= ~(0xfrTCFG1 |=
2012-01-26 21:32:36 683
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人