微机第六次作业(最新版)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微机原理与接口技术第五次作业学院:电子信息工程学院专业:轨道交通信号与控制班级:自动化1302姓名:安若琳13212144刘佳丽13212153刘琛13212155研究课题:不同CPU中断技术对比专题研究本文从3种CPU(X86、80C51、ARM)的中断源、中断申请方式、中断优先级管理方式、中断的处理过程、中断向量等方面进行了综合的比较。以表格的形式呈现出来。一、中断源CPU中断源X86外部中断和内部中断。其中外部中断是指来自CPU外部,由外设的请求引起,通过外部硬件产生,外部中断又分为两类,可屏蔽中断和不可屏蔽中断。可屏蔽中断指的是通过INTR引脚引入CPU,只有当中断允许标志位IF=1时,才能被CPU响应。通过8259A,一个系统中可有多个可屏蔽中断。而不可屏蔽中断指的是通过NMI引脚引入CPU,不受中断允许标志IF的屏蔽,一个系统一般只允许有一个非屏蔽中断。而内部中断则是指来自CPU内部,由执行指令引起的。分为软件中断和微处理器内部中断。80C51两个外部中断源INT0、INT1和三个内部中断源T0、T1定时/计数谥出中断源和串行口发送或接收中断源。外部中断是由外部信号引起的,它们的中断请求信号分别从引脚INT0和INT1上引入ARM7TDMIARM7TDMI具有常规中断(IRQ)、快中断(FIQ)和软件中断(SoftWareInterrupt)三种中方式。常规中断和快中断都是硬件中断。快中断是为支持数据传输或快速数据通道而设计的,为快速处理快中断。软件中断允许运行在用户模式的程序进入监督模式,并运行监督态下的函数。二、中断申请方式CPU中断申请方式X861、对于除法出错,单步中断,不可屏蔽中断NMI,断点中断和溢出中断,CPU分别自动提供中断类型号0~4。2、对于用户自己确定的软件中断INTn,类型号由n决定。3、对外部可屏蔽中断INTR,可以用可编程中断控制器8259A获得中断类型号。8个中断请求信号接到8259A。当外设申请中断时,8259A响应优先权高的中断源,将中断请求信号送到CPU的INTR端。8259A收到CPU发出的第二个中断响应信号时,将对应中断源的中断类型号送给CPU,CPU获取中断类型号后,自动转入相应的中断服务程序。80C51中断处理过程:中断申请、中断响应、中断处理、中断返回80C51外部中断请求有两种信号触发方式。可通过设置有关控制位进行定义。中断采样:针对外部中断请求信号进行的,而内部中断请求都发生在芯片内部,可以直接置位TCON或SCON中的中断请求标志。在每个机器周期的S5P2期间,各中断标志采样相应的中断源,并置入相应标志。中断查询:若查询到某中断标志为1,则按优先级的高低进行处理,即响应中断。80C51的中断请求都汇集在TCON和SCON中。中断响应:硬件自动生成长调用指令为LCALLaddr16,而addr16就是各中断源的中断矢量地址(见附表一)。ARM7TDMI进入异常过程:1.程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;2.用户程序运行时发生IRQ中断,硬件完成以下动作:*置位I位(禁止IRQ中断)*清零T位(进入ARM状态)*设置MOD位,切换处理器模式至IRQ模式*将下一条指令的地址存入IRQ模式的LR寄存器*将CPSR寄存器内容存入IRQ模式的SPSR寄存器*将跳转地址存入PC,实现跳转附表一中断源中断矢量地址外部中断0(INT0)0003H定时器/计数器0(T0)000BH外部中断1(INT1)0013H三、中断优先级管理方式CPU中断优先级管理方式X86在8086中各类中断源的优先级:优先级中断类型1、(高)内部中断(除单步中断)2、NMI3、INTR(IRQ0,...,IRQ7)4、(低)单步中断80C51在80C51中,只有两级中断优先级。通过IP来设定,IP寄存器中各位设置为0时,为低中断优先级,为1时,设为高中断优先级。系统复位后IP寄存器中各位均为0,全部设定为低中断优先级。(IP寄存器见附表二)中断优先级控制,还有两个不可寻址的优先级状态触发器,一个用于指示某一高优先级中断正在进行服务,而屏蔽其它高优先级中断;另一个用于指示某一低优先级中断正在进行服务,从而屏蔽其它低优先级中断,但不能屏蔽高优先级中断。中断优先级由高到低为:外部中断0,定时器T0中断,外部中断1,定时器T1中断,串行口中断,定时器T2中断。ARM7TDMIARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(DataAbort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(PrefetchAbort)、软件中断(SWI)、未定义指令异常(Undefinedinstruction)。附表二、80C51IP寄存器如下:位地址BFHBEHBDHBCHBBHBAHB9HB8H符号________PSPT1PX1PT0PX0中断处理过程:中断申请、中断响应、中断处理、中断返回四、中断申请CPU中断申请X86当外设需要中断服务时,由硬件产生一个中断请求信号INTR发送给CPU80C5180C51外部中断请求有两种信号触发方式。可通过设置有关控制位进行定义。当设定为电平有效方式时,若INT0或INT1引脚上采样到有效的低电平,则向CPU提出中断请求;当设定为跳变有效方式时,若INT0或INT1引脚上采样到有效负跳变,则向CPU提出中断请求ARM7TDMI当异常发生时,处理器会把PC设置为一个特定的存储器地址。异常种类细说:1、当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行;2、当ARM处理器执行协处理器指令时,它必须等待一个外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,则发生未定义指令异常3、软中断异常发生时,处理器进入特权模式,执行一些特权模式下的操作系统功能。4、预取指令异常是由系统存储器报告的。当处理器试图去取一条被标记为预取无效的指令时,发生预取异常。5、数据访问中止异常是由存储器发出数据中止信号,它由存储器访问指令Load/Store产生。当数据访问指令的目标地址不存在或者该地址不允许当前指令访问时,处理器产生数据访问中止异常。6、当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断IRQ异常。系统中各外部设备通常通过该异常中断请求处理器服务。7、当处理器的快速中断请求引脚有效且CPSR寄存器的F控制位被清除时,处理器产生快速中断请求FIQ异常。五、中断响应CPU中断响应X86如果发生了一个中断和异常,那么控制单元执行下列操作:1、确定与中断或异常关联的向量i(0≤i≤255)2、读由idtr寄存器指向的IDT表中的第i项。3从gdtr寄存器获得GDT的基地址,并在GDT中查找,以读取IDT表项中的选择符标识的段描述符。这个描述符指定中断或异常处理程序所在的段的基地址。4、确信中断是由授权的(中断)发生源发出的。首先将当前特权级CPL(存放在cs寄存器的低两位)与段描述符(存放在GDT中)的描述符特权级DPL比较。如果CPL小于DPL,就产生一个“通常保护”异常,因为中断处理程序的特权级不能低于引起中断的程序的特权。对于编程异常,则做进一步的安全检查:比较CPL与处于IDT中的门描述符的DPL,如果DPL小于CPL,就产生一个“通常保护”异常,这最后一个检查可以避免用户应用程序访问特殊的陷阱门和中断门。5、检查是否发生了特权级的变化,也就是说,CPL是否不同于所选择的段描述符的DPL。如果是,控制单元必须开始使用与新的特权级相关的栈,通过执行以下步骤来保证这一点:A.读tr寄存器,以访问运行进程的TSS段。B.用与新特权级相关的栈段和栈指针的正确值装载ss和esp寄存器。这些值可以在TSS中找到。C.在新的栈中保存ss和esp以前的值,这些值定义了与旧特权级相关的栈的逻辑地址。6、如果故障已发生,用引起异常的指令地址装载cs和eip寄存器,从而使得这条指令能再次被执行。7、在栈中保存eflag、cs和eip的内容。8、如果异常产生了一个硬件出错码,则将它保存在栈中。9、装载cs和eip寄存器,其值分别是IDT表中第i项门描述符的段选择符和偏移量字段。这些值给出了中断或者异常处理程序的第一条指令的逻辑地址。控制单元所执行的最后一步就是跳转到中断或异常处理程序。换句话说,处理完中断信号后,控制单元所执行的指令就是被选中处理程序第一条指令。80C51硬件自动生成长调用指令为LCALLaddr16,而addr16就是各中断源的中断矢量地址(参见附表三)。中断响应是有条件的,在接受中断申请时,如遇下列情况之一时,硬件生成的长调用指令“LCALL”将被封锁:⑴CPU正在执行同级或高一级的中断服务程序中。因为当一个中断被响应时,其对应的中断优先级触发器被置“1”,封锁了同级和低级中断;⑵查询中断请求的机器周期不是执行当前指令的最后一个周期;⑶当前正在执行RETI指令或执行对IE、IP的读/写操作指令。80C51中断系统的特性规定,在执行完这些指令之后,必须再继续执行一条指令,然后才能响应中断。ARM7TDMI系统运行时,异常可能会随时发生。当一个异常出现以后,ARM微处理器会执行以下几步操作:1、将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。2、将CPSR复制到相应的SPSR中。3、根据异常类型,强制设置CPSR的运行模式位。4、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。这些工作是由ARM内核完成的,不需要用户程序参与。附表三、80C51各中断源的中断矢量地址:中断源中断矢量地址外部中断0(INT0)0003H定时器/计数器0(T0)000BH外部中断1(INT1)0013H定时器/计数器1(T1)001BH串行口(RI、TI)0023H定时器/计数器2(T2)002BH中断处理:执行中断服务程序中规定的操作六、中断返回CPU中断返回X86由中断服务程序中的中断返回指令IRET完成的,执行该指令时,将压入堆栈的断点和标志位弹出,CPU转向被中断的现行程序中继续执行80C51RETI的功能:将压入堆栈的断点地址从栈顶弹回PC;将优先级状态触发器清0ARM7TDMI异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:1、将连接寄存器LR的值减去相应的偏移量后送到PC中。2、将SPSR复制回CPSR中。3、若在进入异常处理时设置了中断禁止位,要在此清除。七、中断向量CPU中断向量X86中断矢量表占据内存的地址范围是:0000H:0000H~0000H:03FFH,既是内存单元的最低的1K地址范围。只要有中断类型号,就可根据中断类型号与中断矢量所在位置之间的对应关系,很方便地就能判断出中断关系矢量表的地址。中断矢量在中断矢量表中的地址=中断类型号×4(中断向量表见附图四)80C51当CPU响应中断时,由硬件直接产生一个固定的地址,即矢量地址,由矢量地址指出每个中断源设备的中断服务程序的入口。当CPU识别出某个中断源时,由硬件直接给出一个与该中断源相对应的矢量地址,从而转入各自中断服务程序(见附表五)。ARM7TDMI在32位ARM系统中,一般都是在中断向量表中放置一条分支指令或PC寄存器加载指令,实现程序跳转到中断服务例程的功能。一般ARM嵌入式系统的程序都是固化在从00000000H开始的低端ROM空间中,中断向量表VectorTable也是固化在ROM中,所以无法在程序运行时动态随机修改中断向量表,在ARM向量表中存放的是与中断服务例程入口有关的一条分支指令,设置中断向量都相当繁琐,必须修改ARM的C程序的启动代码。附图四附表五向量地址中断类型工作模式优先级返回地址0x8软件中断SWI模式6Pc-40x18常规则中断IRQ模式4Pc-80x1c快中断FIQ模式3Pc-8

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功