- 博客(34)
- 资源 (2)
- 收藏
- 关注
转载 二级中断实现机制
在很多芯片平台上,为了节省中断线的使用,时常会有些二级中断,本文简单给大家介绍一下二级中断驱动的实现。思想:使用一根中断线,来实现多个中断传达的目的(通常是32个,因为一个寄存器是32位,每一个bit代表一个中断标志)。实现:首先,我们需要一个结构体:typedef void (*voidfuncptr)(u32 para) //函数指针
2014-06-25 09:06:41 907
转载 ARM寄存器总结:
ARM有16个32位的寄存器(r0到r15)。 r15充当程序寄存器PC,r14(link register)存储子程序的返回地址,r13存储的是堆栈地址。ARM有一个当前程序状态寄存器:CPSR。一些寄存器(r13,r14)在异常发生时会产生新的instances,比如IRQ处理器模式,这时处理器使用r13_irq和r14_irq ARM的子程序调用是很快的,因为子程序的返回地址
2014-06-25 00:57:53 528
转载 堆栈桢的生成原理
一直比较好奇,调试器是如何生成堆栈的调用过程的,比如如下代码:int add(int a, int b){ return a + b;}int main(){ int c = add(1, 2); system("pause"); return 0;}调用Add时的堆栈截图如下:调试器究竟是如何生成这个
2014-06-25 00:53:17 1162
转载 Android源码分析:硬件适配层HAL(1)之总述
Android源码分析:硬件适配层HAL(1)之总述红狼博客硬件模块库的通用写法将Android移植到不同的硬件平台上,这些平台可能包含诸如GSenor、 Compass、Light和overlay等。Android Framework通过JNI通过调用这些硬件模块库来使用操控这些硬件。Google已经为这些提供了一个完整的框架,移植开发者只需编写相应的函数即可,不需考虑太
2014-06-24 08:43:40 2779
转载 怎样实现Android系统的HAL(硬件适配层)
你实现自己硬件平台的硬件适配层,那么 Android系统将会调用你的硬件适配层来为系统加速。如果你未定义自己平台硬件适配层(HAL),那么Android系统将调用软实现,这样的话不会 发挥出你的硬件平台的最大效能。本文简略介绍一下Android系统的HAL层,进而介绍怎样实现HAL层,以起到抛砖引玉的作用。 Android系统HAL层位于hardware目录下面。HAL层是
2014-06-24 00:20:33 1861
转载 将整数的第n位清零或置1,其他位不变
假设有一个整数为x,编写两个函数将x的二进制位的第n位置1或清零,其他位不变如有x=10,二进制表示为:00000000 00000000 00000000 00001010,二进制位的最右边称为第一位,比如将第二位的1清为0,则为:00000000 00000000 00000000 00001000 = 8,将第三位置为1,则为: 00000000 00000000 000
2014-06-24 00:13:38 6933
转载 操作系统的硬件环境
一、中央处理器 CPU1. 每个CPU都拥有自己的指令系统。2. CPU由运算器、控制器、寄存器和高速缓存组成。3. 寄存器具有最快的访问速度,高速缓存位于CPU和内存之间,访问速度大于内存,低于寄存器。4. CPU中的寄存器分为:用户可见寄存器、控制和状态寄存器。5. 用户可见寄存器有:数据寄存器、地址寄存器和条件码寄存器。6. 控制和状态寄存器有
2014-06-24 00:11:58 699
转载 DMA寄存器设置
1.设置DMA模式: 寄存器名:DMAMODE0 寄存器类型:DMA配置寄存器 寄存器地址:PCIBAR0+80h(LCS) 寄存器值:DMAMODE0[1:0]=11:定义DMA总线宽度为32位; DMAMODE0[9]=0:设置DMA传输模式为BLOCK模式; DMAMODE0[6]
2014-06-24 00:10:44 4438
转载 ARM体系结构介绍
下图所示的是ARM构架图。它由32位ALU、若干个32位通用寄存器以及状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。1. ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。2. 桶形移位寄存器:ARM采用了32×32位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以
2014-06-24 00:09:10 2227
转载 AMBA总线介绍
本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/mr_raptor/article/details/6558233++++++++++++++++++++++++++++++++++++++++++ The Advanced Microcontroller Bus Architecture (AMBA) specification define
2014-06-22 01:00:22 759
转载 arm 总线问题,初学,大家指教
所谓的数据地址总线都是指arm上的哪个管脚接口,是gpio吗?想知道通常所说的三总线即地址、数据、控制总线在arm上都是哪些接口?1、而通过arm去控制外设,比如aic31,控制是i2c,数据是什么呢?(通常)地址总线又是什么呢?2、arm上一般都有哪些总线接口?(可以指定具体型号)
2014-06-22 00:58:17 1649
转载 编辑文章 - 博客频道 - CSDN.NET
一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。3评论:郑彦兴 (mlinux@163.com)国防科大计算机学院关闭 [x]
2014-06-21 20:00:18 425
转载 进程/线程同步的方式和机制,进程间通信
一、进程/线程间同步机制。临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的
2014-06-21 10:52:42 413
转载 #ifdef,#else,#endif,#if用法详解(转)
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。 关于预处理命令中的文件包含(#i nclude),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行
2014-06-20 19:19:54 441
转载 ARM体系结构介绍
下图所示的是ARM构架图。它由32位ALU、若干个32位通用寄存器以及状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。1. ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。2. 桶形移位寄存器:ARM采用了32×32位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以
2014-06-19 23:05:12 1049
转载 ARM中,总线如何连接?
ARM中,总线如何连接?ARM中,总线如何连接? 在ARM系统中,总线要连接很多东西,如FLASH,RAM,SD卡等等.我的问题是:系统设计中,各芯片地址如何分配,分配后总线的各控制pin又如何连接(重点问题)?为什么ARM的地址位和外部芯片的地址位会错位(例如ARM接A15--A0而FLASH接A17--A2)(重点问题)? 我有2000分,有满意的答案尽你要谢谢 arthux,
2014-06-19 00:50:37 1198
转载 ARM中,总线如何连接?
ARM中,总线如何连接? 在ARM系统中,总线要连接很多东西,如FLASH,RAM,SD卡等等.我的问题是:系统设计中,各芯片地址如何分配,分配后总线的各控制pin又如何连接(重点问题)?为什么ARM的地址位和外部芯片的地址位会错位(例如ARM接A15--A0而FLASH接A17--A2)(重点问题)?
2014-06-19 00:37:46 894
转载 Source Insight中的parse too complex问题
SI,Source Insight,阅读代码的利器,目前它的最新版本为3.50.0064。 SI的一个很有用的功能是可以列出所有的函数名和变量名,然而在Source Insight的工程中,偶尔会遇到那么一两个文件,里面的函数名和变量名无法解析,提示“parse too complex”。难道这段程序真的复杂到SI都不认识了吗?非也。这其中的罪魁祸首就是条件预编译指令。 在一个
2014-06-17 20:13:47 8575 2
转载 总线
技术指标1、总线的带宽(总线数据传输速率)总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:总线的带宽=总线的工作频率*总线的位宽/8或者 总线的带宽=(总线的位宽/8 )/总线周期2、总线的位宽总线的位宽指的是总线能同时传送的二进制数据的位数
2014-06-15 10:54:38 924
转载 AMBA、AHB、APB、ASB总线简介
AMBA简介随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主
2014-06-15 10:45:03 6303
转载 从PC的总线到ARM内部总线
从PC的总线到ARM内部总线我在学习《Linux设备驱动程序(第3版)》的 第九章 与硬件通信 时,对 I\O总线的概念 不是很清晰,所以查找了有关资料。现在总结如下:本文的参考资料:1、 《AMBA、AHB、APB总线简介》 作者 adamzhao 日期 2006-11-16 19:33:00转载网址:http://www.openhard.org/myspace/blo
2014-06-15 10:36:41 687
转载 FIQ和IRQ区别
FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的,为了合理,要求系统更快响应,自身处理所耗时间也很短的中断设置为FIQ,否则就设置了IRQ。如果该中断设置为了IRQ,那么当该中
2014-06-15 10:01:08 890
转载 驱动中读写硬件寄存器的方式
1.驱动中读写硬件寄存器的方式比如想控制某寄存器。先查找datasheet中该寄存器的物理地址。然后调用ioremap()函数。该函数返回一个虚拟地址。内核空间可以直接访问它。比如我们要访问s3c2410平台上的I2S寄存器, 查看datasheet 知道IIS物理地址为0x55000000,我们把它定义为宏S3C2410_PA_IIS,如下:#define S3C2410
2014-06-15 00:09:01 5087
转载 linux系统下操作硬件寄存器
经过一两天的摸索,基本上对在linux控制硬件有了个初步的认识:在linux下控制硬件和在无操作系统下控制硬件的不同主要在于硬件的地址不一样,在linux下要使用va(虚拟地址),而在无操作系统下可以直接使用硬件的pa(物理地址)。在linux-2.6.8.1/include/asm-arm/arch-s3c2410/map.h中定义了大部分硬件的物理地址和他们的虚拟地址。现以gpio F
2014-06-15 00:08:03 3304
转载 操作系统的硬件环境
一、中央处理器 CPU1. 每个CPU都拥有自己的指令系统。2. CPU由运算器、控制器、寄存器和高速缓存组成。3. 寄存器具有最快的访问速度,高速缓存位于CPU和内存之间,访问速度大于内存,低于寄存器。4. CPU中的寄存器分为:用户可见寄存器、控制和状态寄存器。5. 用户可见寄存器有:数据寄存器、地址寄存器和条件码寄存器。6. 控制和状态寄存器有
2014-06-14 09:40:00 878
转载 中断解析
中断解析一、中断是什么中断的汉语解释是半中间发生阻隔、停顿或故障而断开。那么,在计算机系统中,我们为什么需要“阻隔、停顿和断开”呢?举个日常生活中的例子,比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开——如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。等啊等啊,外边突然传来了惊奇的叫声“怎么不关水龙头?”于是我惭愧的发现,刚才接水之后只顾着抱怨这份无聊的差事,居然
2014-06-14 09:24:55 690 1
转载 影响操作系统实时性的要素
嵌入式所谓的实时性,也就是从事件发生到系统响应的时间。或者更广泛一点,也就是从用户输入一个信息到系统处理完返回给用户的这个反应时间。这个时间可以划分为几个阶段:1.中断响应时间;2.RTOS进程调度响应时间;3.应用程序响应时间; 细分:1.中断响应时间: 一般情况下所有外部消息都是通过中断方式来触发的。外部硬件给处理器一个中断,告诉处理器说外部有一个事件
2014-06-14 09:07:39 2731
转载 嵌入式实时操作系统中断延时
由于外部事件的发生常常是以一个中断申请信号的形式来通知处理器,然后才运行中断服务程序中来处理该事件,所以中断延时是影响系统实时性的一个重要因素。那么都有哪些问题影响中断延时呢? 一般情况下,都认为处理器是随时可以响应中断申请的。其实并非如此,首先在处理器关闭中断时不能响应中断申请;另外处理器在正在执行一条指令时也不能响应中断申请。因此,当某个事件向处理器发出中断请求时,处理器可
2014-06-14 08:54:13 2500
转载 MIUI ROM适配之旅第一天——认识Android手机2
3. system分区 在讲system分区之前,我们先来看下面这张Android的软件系统架构图。 从上到下依次为: 核心应用层:这一层就是大家平常所接触的各种各样的系统自带应用,比如联系人,电话,音乐等。应用层往下就是开发人员所接触的。 框架层:这一层是Android系统的核心,它提供了整个Android系统运作的机制,像窗口管理,
2014-06-02 23:26:26 839
转载 android系统硬件抽象层(HAL)原理及实现之原理
Android系统硬件抽象层(HAL)原理在android开发过程中,我们经常看到HAL这个概念,这就android的硬件抽象层的(Hardwaere Abstraction Layer)缩写,它是Goolge应某些厂商不希望公开源码所添加的一个适配层,能以封闭源码的方式提供硬件驱动模块,目的就是把android framework层和linux kernel层隔离开来,使android系统不
2014-06-02 23:21:31 859
转载 《Linux内核设计与实现》读书笔记(十九)- 可移植性
linux内核的移植性非常好, 目前的内核也支持非常多的体系结构(有20多个).但是刚开始时, linux也只支持 intel i386 架构, 从 v1.2版开始支持 Digital Alpha, Intel x86, MIPS和SPARC(虽然支持的还不是很完善).从 v2.0版本开始加入了对 Motorala 68K和PowerPC的官方支持, v2.2版本开始新增了 ARM
2014-06-02 22:34:45 622
转载 《Linux内核设计与实现》读书笔记(五)- 系统调用
主要内容:什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现1. 什么是系统调用简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。 比如:用户
2014-06-02 22:31:09 696 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人