这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 2440中断体系结构

共5条 1/1 1 跳转至

2440中断体系结构

工程师
2012-05-26 22:45:29     打赏

中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。中断可以高效的提高CPU的利用效率和程序运行的效率。本章对中断的学习进行一下总结。 

一、相关概念介绍 

1、中断的相关概念 

1)        异常

在处理器执行到由于编程失误而导致的错误指令(例如除数是0)的时候,或者在执行期间出现特殊情况(例如缺页),需要靠操作系统来处理的时候,处理器就会产生一个异常。对大部分处理器体系结构来说,处理异常和处理中断的方式基本是相同的,x86架构的CPU也是如此。异常与中断还是有些区别,异常的产生必须考虑与处理器时钟的同步。实际上,异常往往被称为同步中断。

2)        中断向量

中断向量代表的是中断源――从某种程度上讲,可以看作是中断或异常的类型。中断和异常的种类很多,比如说被0除是一种异常,缺页又是一种异常,网卡会产生中断,声卡也会产生中断,CPU如何区分它们呢?中断向量的概念就是由此引出的,其实它就是一个被送往CPU数据线的一个整数。CPU给每个IRQ分配了一个类型号,通过这个整数CPU来识别不同类型的中断。这里可能很多朋友会寻问为什么还要弄个中断向量这么麻烦的东东?为什么不直接用IRQ0~IRQ15就完了?比如就让IRQ0为0,IRQ1为1……,这不是要简单得多么?其实这里体现了模块化设计规则,及节约规则。

3)        中断服务程序(ISR,Interrupt Service Routine)

在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interrupt handler)或中断服务程序(interrupt service routine(ISR))。产生中断的每个设备都有相应的中断处理程序。例如,由一个函数专门处理来自系统时钟的中断,而另外一个函数专门处理由键盘产生的中断。一般来说,中断服务程序要负责与硬件进行交互,告诉该设备中断已被接收。此外,还需要完成其他相关工作。比如说网络设备的中断服务程序除了要对硬件应答,还要把来自硬件的网络数据包拷贝到内存,对其进行处理后再交给合适的协议栈或应用程序。每个中断服务程序根据其要完成的任务,复杂程度各不相同。一般来说,一个设备的中断服务程序是它的设备驱动程序(device driver)的一部分――设备驱动程序是用于对设备进行管理的内核代码。

2、ARM    CPU的7种工作模式 

1.         用户模式(USR):      ARM处理器正常的程序执行状态。

2.         快速中断模式(FIQ):用于高效数据传输或通道处理。

3.         中断模式(IRQ):       用于通用的中断处理。

4.         管理模式(SVC):      操作系统使用的保护模式。

5.         数据访问终止模式(ABT):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。

6.         系统模式(SYS):      运行具有特权的操作系统的任务。

7.         未定义指令中终止模式(UND):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。

以上七种工作模式可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式。除了用户模式外,其它6种工作模式均为特权模式。大部分程序是运行在用户模式状态下的,进入特权模式是为了处理中断、异常或者是访问被保护的系统资源。

另外,ARM体系的CPU有以下两种状态:

ARM状态:此时CPU执行32的字对齐指令。

THUMB状态:此时处理器执行的是16位的半字对齐的指令。

CPU一上电就是处于ARM状态的,博客中的程序也是ARM状态的。

3、中断的处理过程 

1)        中断控制器汇集各类外设发出的中断信号,然后告诉CPU。

2)        CPU保存当前程序的运行环境,调用中断服务程序处理中断(在实例分中会讲到代码)。

3)        在中断服务程序中通过读取中断控制器、外设的相关寄存器来识别这是个哪个中断,并进行相应的处理。

4)        清除中断:通过读写中断控制器和外设的相关寄存器来实现。

5)        中断返回:最后恢复被中断程序的运行环境,继续执行。

对于不同的CPU,中断处理的过程可能细节上略有不同,但这里要注意,有些初学者对中断返回有些误解,请大家记住:从哪里中断,返回到哪里。

4、FIQ和IRQ 

为什么要有中断呢?那是因为外设的速度远远低于CPU的速度,如果让CPU一直等待外设的话,那么效率就低得可怜了,因此才会有中断的概念被引出,它的目的也正是为了更好的、更高效的完成工作。

那么IRQ是普通中断,FIQ是又是什么呢?两者有什么区别呢?这里主要体现嵌套和原子性的概念。

也就是说,IRQ中断是可以嵌套的,即在执行一个IRQ服务程序的时候,更高级的中断可以打断它,从而执行一个新的中断。而FIQ是具有原子性的,是不可以被打断,直至完成整个FIQ。




关键词: 中断     体系结构     执行     程序     异常     处理     一个     模式    

菜鸟
2012-06-01 11:47:12     打赏
2楼

讲的不够细 我还是没懂 


高工
2012-07-28 17:49:09     打赏
3楼
确实不够细,但很系统

菜鸟
2012-09-18 10:54:45     打赏
4楼
深圳市元世通电子有限公司是一家专业从事半导体集成电路销售与服务的独立分销机构,是实力供应商,长时间的经营,公司积累了大量的现货库存,并在美洲、欧洲、亚洲等地建立了良好的供货渠道,使得我们公司具有非常有竞争力的价格优势。公司主要经营的品牌有:SANSUNG, TOSHIBA,MICRON,INTEL,SANDISK,AD、AMD、ATMEL、ALTERA、ALLEGRO、AGILNET、XILINX、TI/BB、FAIRCHILD、ST、PHILIPS、MOTOROLA、IR、ON、NSC、SHARP、TOSHIBA、VISHAY、BROADCOM等等。       S3C2440  S3C2410  S3C6410  S5PV210      
  联 系 人:刘小姐
  联系方式:0755-83782851
            15989485008
  QQ     : 2270533726    
网     址:http://ystlm.b2b.hc360.com/
           http://ystlm928.cnokcn.com

高工
2012-09-19 18:16:33     打赏
5楼
不要随便散发广告!!!

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]