2016 - 2024

感恩一路有你

arm中断是怎么实现的 简述ARM对异常中断的处理过程?

浏览量:2935 时间:2021-04-14 15:46:59 作者:admin

简述ARM对异常中断的处理过程?

1. 请求中断当中断源需要CPU提供中断服务时,它输出中断请求信号,设置中断控制系统的中断请求触发器,并向CPU请求中断。系统要求中断请求信号一直保持到CPU响应为止。2中断响应CPU必须响应来自系统内部中断源的中断请求,并自动获取中断服务子程序的入口地址并执行中断服务子程序。对于外部中断,CPU在执行当前指令的最后一个时钟周期中查询intr引脚。如果中断请求信号有效,同时,当系统中断(即If=1)时,CPU向发出中断请求的外设发回低电平有效中断响应信号,作为对中断请求intr的响应,系统自动进入中断响应周期。三。关闭中断。CPU响应中断后,输出中断响应信号,自动将状态标志寄存器fr或EFR的内容推入堆栈进行保护,然后清除fr或EFR中的中断标志位if和陷阱标志位TF,从而自动关闭外部硬件中断。因为CPU刚进入中断保护场景,主要涉及堆栈操作,此时无法再响应中断,否则会造成系统混乱。4保护断点保护断点是将CS和IP/EIP的当前内容推送到栈中保存,使中断处理后可以返回中断的原程序继续执行。这个过程也由CPU自动完成。5中断源识别系统中有多个中断源时,一旦有中断请求,CPU必须确定提出中断请求的中断源,中断控制器给出中断服务子程序的入口地址,并加载CS和IP/EIP寄存器。CPU传输到相应的中断服务子程序以执行。6为了保护主程序和中断服务子程序,应该使用CPU内部寄存器和其他资源。为了防止中断处理程序损坏主程序中寄存器的内容,在进入中断处理之前,应将断点处寄存器的内容推入堆栈进行保护。现场保护由用户使用push命令实现。7中断服务是中断执行的主要部分。不同的中断请求具有不同的中断服务内容。中断服务子程序应根据中断源的功能预先写入存储器。8还原场景中断处理时,用户会通过pop指令弹出堆栈中存储的每个寄存器的内容,即还原主程序断点处寄存器的原始值。9中断返回中断返回指令IRET应安排在中断服务子程序的末尾。指令执行时,系统会自动弹出堆栈中存储的IP/EIP和CS值,从而恢复主程序断点处的地址值。同时,标志寄存器fr或EFR的内容将自动恢复,以便CPU可以继续在中断的程序中执行。

arm什么时候用中断?

ARM7TDMI core CPU响应中断后将切换到异常模式:FIQ中断进入快速中断模式,IRQ中断进入中断模式(ARM7TDMI core有七种模式:用户模式、系统模式、快速中断模式、中断模式、管理模式、中止模式和未定义模式,后五种被称为异常模式。中断处理,ARM7进入和退出快速中断模式和中断模式(中断响应过程)如下:①将下一条指令的地址复制到LR(R14)(处于arm状态)。② 将CPSR复制到适当的SPSR(CPSR在所有模式下都是通用的,而SPSR在不同的异常模式下是不同的)。③ 根据异常,CPSR模式被强制为快速中断模式或中断模式。④ 强制PC从相关异常向量获取指针。(这就完成了进入中断服务程序的操作)5。执行异常服务程序。⑥ 从LR中减去偏移量并将其移动到PC。在arm状态快速中断模式和中断模式中,偏移量为4,因为LR存储由于FIQ或IRQ抢占而未执行的指令的地址。⑦ 将SPSR的值复制回CPSR。⑧ 重置在入口设置的中断禁用标志。一旦IRQ中断产生,微控制器将切换到IRQ模式并跳到矢量表0x0000018的地址以执行程序。一旦FIQ中断产生,微控制器将切换到FIQ模式并跳转到矢量表0x000001c的地址以执行程序。如下图所示,0x00000080和0x0000001c位置必须有一条跳转指令,分别跳转到IRQ和FIQ中断处理的代码。0x00000000处的通用向量表称为异常向量表。在ARM7中断向量表的前8个中断向量中,后两个是IRQ和FIQ。您可以从这两个中断向量跳到相应的中断服务函数。在ARM7中,经常使用IRQ中断。当产生IRQ中断时,应首先保存当前工作状态的环境,然后将中断服务功能地址分配给PC机,以跳转到中断服务功能。中断后,函数返回正常操作模式。

arm7中断和定时器使用的详细讲解?

ARM7是内核的名称www.arm.com我们应该根据CPU的具体型号从相应的官方网站下载数据表

arm中断是怎么实现的 arm中断处理过程描述 arm有几种外部中断

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。