欢迎来到天天文库
浏览记录
ID:46578423
大小:717.59 KB
页数:16页
时间:2019-11-25
《08实验八 Linux环境下的中断实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验八Linux环境下的中断实验一、实验目的1、了解中断的原理,加深对中断向量表的理解。2、理解系统是如何响应外部中断的。3、学习设置中断,注册中断以及清除中断等函数的使用。二、实验内容1、编写程序实现Linux下的外部中断;2、编写Makefile生成可执行文件;3、验证中断功能。三、实验设备1、硬件:PC机;DM2410实验系统;串口线;机对机网线;2、软件:PC机操作系统(WINDOWS2000,REDHATLinux并使用KDE界面);Linux下ARMGCC交叉编译环境;实验系统附带文件;四、预备知识1、了解Linux操作系
2、统的原理;2、掌握Linux操作系统的使用;3、掌握实验一和实验二的内容。五、基础知识中断概念1、基本定义计算机系统的“中断”是指中央处理器CPU正在处理某件事情的时候,发生了异常事件(如定时器溢出等),产生一个中断请求信号,请求CPU迅速去处理。CPU暂时中断当前的工作,转入处理所发生的事件,处理完以后,再回到原来被中断的地方继续原来的工作,这样的过程称为中断,实现这种功能的部件称为中断系统,产生中断的部件或设备称为中断源。一个计算机系统一般有多个中断请求源。当多个中断源同时向CPU请求中断时,就存在CPU优先响应哪一个中断请求源的
3、问题。一般根据中断源(所发生的事件)的轻重缓急,规定中断源的优先级,CPU优先响应中断优先级高的中断源请求。当CPU正在处理一个中断请求时,又发生了另外的中断请求,如果CPU能暂时中止对原中断的处理,转去处理优先级更高的中断请求,待处理完以后,再继续处理原来的中断事件,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统。而没有中断嵌套功能的系统称为单级中断系统。2、中断向量每个中断都可以用一个无符号整数来标识,称之为“中断向量(InterruptVector)”。所有的ARM系统都有一张中断向量表,当出现中断需要处理时,必须调用向
4、量表。向量表一般要位于0地址处。表8-1中断向量表地址异常0x0000,0000复位0x0000,0004未定义指令0x0000,0008软件中断0x0000,000C终止(预取指令)0x0000,0010终止(数据)0x0000,0014保留0x0000,0018IRQ0x0000,001CFIQ(a)复位:当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。(b)未定义指令:当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。采用这种机制,可以通过软件仿真扩展ARM或Thumb指令集。(c)软件
5、中断:该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用。(d)指令预取中止:若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。(e)数据中止:若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。(f)IRQ(外部中断请求):当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务。(g)FIQ(快速中断请求):当处理
6、器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。3、ARM的中断过程1)中断的进入(1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。(2)将CPSR复制到相应的SPSR中。(3)根据异常类型,强制设置CPSR的运行模式位。(4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序。也可以设置中断禁止位来阻止其他无法处理的异常嵌套。2)从中断返回(1)将连接寄存器LR的值减去相应的偏移量后送到PC中。(2)将SPSR复制回CPSR中。(3)如果进
7、入时设置了中断禁止位,那么清除该标志。3)标准中断过程下面详细说明IRQ中断的过程。(1)AIC已经正确编程,AIC_SVR也已经写入正确的中断服务程序的入口地址。且中断已经使能。(2)地址0x18(IRQ的中断向量地址,参见上面的向量表)的指令为LDRPC,[PC,#&F20]当NIRQ到来,且CPSR的I位为0时,步骤如下:(a)CPSR被拷贝到SPSR_irq,当前程序计数器PC的值被保存到IRQ链接寄存器(R14_irq),同时PC(R15)自身也被赋予了新值0x18。在接下来的时钟里(处理器向0x1C取指令),ARM核使R1
8、4_irq减4。(b)ARM内核进入IRQ模式。(c)当指令LDRPC,[PC,#&F20]得到执行(ARM为流水线结构,当前PC之前还有两条指令)后,PC被赋予了AIC_IVR的内容。读取AIC_IVR具有如下作用:(
此文档下载收益归作者所有