跳转到主要内容

中断

探讨i.MX RT下FlexSPI driver实现Flash编程时对于中断支持问题

cathy /
前段时间有客户在官方社区反映i.MX RT1170下,使用官方SDK里FlexSPI驱动去擦写Flash时不能很好地支持全局中断。客户项目里用了两块NOR Flash,分别挂在不同的 FlexSPI上,一块Flash用于存储XIP代码(FlexSPI1),另一块Flash用于存储项目资源数据(FlexSPI2),显然这样的设计原理上是没有问题的,那为什么使能了中断会出问题呢?今天就来分析下这个问题:

硬中断与软中断是怎么回事?

demi /

<font color="blue"><strong>概述</strong></font>

从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。

<center><img src="http://mcu.eetrend.com/files/2019-01/wen_zhang_/100017127-57471-dbg2.jp…; alt=""></center>

如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,

跳到中断处理程序的入口点,进行中断处理。

<font color="blue"><strong>硬中断</strong></font>

什么是单片机的中断响应时间?

demi 提交于

中断响应时间:从外部中断请求有效(外部中断请求标志置1)到转向中断入口地址所需要的响应时间。每个机器周期的S5P2时刻,INTx引脚的电平被锁存到内部寄存器中,待下一个周期查询。

1. 最短时间:中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔3个机器周期。

<center><img src="http://mcu.eetrend.com/files/2018-12/博客/100016509-55356-77.jpg&quot; alt="什么是单片机的中断响应时间?"></center>

2. 最长时间:如果中断信号发生在前面所说的3种情况时,响应时间就要变长:

(1)响应时间取决于正在执行的同级或高级中断的执行时间;

单片机STM32——中断与事件的区别

demi /

<strong>1、简述</strong>

下面这张图是一条外部中断线或外部事件线的示意图。图中的蓝色虚线箭头,标出了外部中断信号的传输路径;图中红色虚线箭头,标出了外部事件信号的传输路径。

<center><img width="600" src="http://mcu.eetrend.com/files/2018-08/wen_zhang_/100013097-46156-225.png…; alt="单片机STM32——中断与事件的区别"></center>

图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。

<strong>2、概念</strong>

事件:是表示检测到某一动作(电平边沿)触发事件发生了。

中断:有某个事件发生并产生中断,并跳转到对应的中断处理程序中。

中断有可能被更优先的中断屏蔽,事件不会。

MCS-51 单片机的中断系统

demi /

MCS-51中断系统:5个中断源(两个外部中断, 两个定时器, 一个串口),2个优先级

<center><img width="600" src="http://mcu.eetrend.com/files/2018-07/wen_zhang_/100012781-45435-70.jpg&…; alt="MCS-51 单片机的中断系统"></center>

<font size="3"><strong>中断相关概念</strong></font>

中断:当CPU正在处理某件事情时,单片机外部或内部发生的某一紧急事件请求CPU立即去处理,于是,CPU暂时中止当前的工作,转去处理这个紧急事件,待处理完毕后,再回到原来被中止的地方,继续原来的工作。

中断过程

中断发生:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理;