dsp第三章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三、非屏蔽 中断
• 非屏蔽中断不受任何使能位关闭。 • 检测到不可屏蔽位时立即进入相应的中断服务子程序 • 当CPU在停止模式中被暂停时,不影响任何中断。 1、INTR+标号 标号有#INT1~#INT14、DLOGINT、RTOSINT、#NMI。用来进行执行对 应的中断服务程序。不同的标号的主要事项有: (1)用INTR指令执行可屏蔽中断时,IFR位不置1,无关中断使能位。 (2)对#NMI非屏蔽中断,效果如同引脚上的硬件请求。 2、TRAP+数值 初始化任何中断,如对#INT1可用 TRAP #1 无论IFR和IER的位任何,都不受该指令影响。TRAP指令对中断的初 始化功能流程图如下图所示。
以下方法可清除IFR标志:
CPU 确认了该中断 器件复位
与IER寄存器相关的指令有: MOV IER,loc16;加载 MOV loc16,IER;存储 OR IER,#16bit;设置IER位 AND IER,#16bit;清除IER位 但AND和OR指令对非实时操作系统模式时的位15(RTOSINT)不要修改。 中断调试寄存器(DBGIER)在CPU处于仿真模式且暂停时使用,被定义为实时 中断。可通过写来使能或关闭中断,置1使能,清0关闭。相关指令: PUSH DBGIER;读 POP DBGIER;写 3、可屏蔽中断的标准操作 当有多个中断同时发出请求时,按优先级的高低依次进行操作。过程如下图所示。
开始 Yes 阶段A PIEIF Rx.y= 1? Yes Yes 等待任何 PIEIERx.y=1 阶段B PIEIE Rx.y= 1? Yes 阶段C PIEA CKx= 0? Yes 硬件设置 PIEACKx=1 No 阶段G INTM =0? Yes No No 阶段F IERx= 0? No 阶段E IFRx位置1
3、从外设到CPU的多路复用中断请求流程 步骤1:PIE组内产生中断,向PIE模块请求 步骤2:PIEIFRx.y=1 步骤3:中断从PIE到CPU要满足的条件 PIEIERx.y=1 PIEACKx=0 步骤4:如果上述俩条件满足,则提交给CPU,同时PIEACKx=0 步骤5:CPU IFRx=1 步骤6和7:如果CPU IER.x=1或DBGIERx=1且INTM=0,CPU将提供中断 服务 步骤8:CPU识别中断,执行自动上下文保存、清除IER位、设置 INTM=1并清除EALLOW。 步骤9:CPU向PIE请求合适的向量。对于多路复用中断,PIE模块使用 PIEIERx和PIEIFRx寄存器中的当前值来解码使用哪个矢量地址。 经过上述步骤后,PIEIFRx.y=0,且CPU转移到从PIE提取的中断矢量。 4、PIE矢量表 PIE矢量表大小为256×16位的SRAM。 优先级为PIE1.1→PIE1.8→PIE2.1→PIE2.8→……→PIE12.1→PIE12.8 TRAP1到TRAP12或INT1到INT12指令从矢量表每组的第一个位置提取矢 量。
等待任何 PIEIFRx.y=1
等待清除 PIEACKx
No
阶段H CPU响应,IFRx=0,IERx=0, INTM=1 EALLOW=0,完成上下文保存
阶段I 从PIE取出向量,清除PIEIFRx.y, CPU转入ISR
送往 CPU中断
阶段D 送往CPU的INTx
阶段J 执行中断服务程序 给PIEACKx位置0,清除PIEIFRx位

向CPU发中断请求:引脚信号电平低或者指令 设置相应的IFR标志位 中断使能INTM和IER的相应位 清除相应的IFR位 清空流水线 PC加1或2(指向返回地址)并存储 取回中断向量(在当前的PC中) SP加1,为保存自动上下文做准备 执行自动上下文存储 清除相应的IER位,阻止同一中断再次进入 设置INTM、DBGM,清除LOOP、EALLOW、IDLESTAT。前者是阻 止新的中断和调试,后者是为中断服务子程序产生新的上下文。 取回向量赋值给PC,控制ISR。 执行中断服务程序 继续执行程序
阻止新的中 断和调试, 产生新的上 下文 转向中断服 务程序
取向量给PC赋值 执行中断服务程序
程序继续
四、CPU中断向量和优先级 32位向量,每个向量地址22位 向量地址为中断服务程序ISR的入口地址 32位向量保存在中断向量表的连续两个地址中,低16位保 存在地址的低16位,高16位保存在地址的高16位。 中断确定后,取回32位地址,但高10位被忽略。 优先级如P80表3-7所示。 向量表可在程序空间的顶部或底部,由ST1的向量映射位 VMAP决定。即VMAP=0,在底部(从0X000000H开始), 为1在顶部(从0X3FFFFC0H开始)。
3.2 外设中断扩展
一、PIE控制器概述 外设中断扩展(PIE)模块,管理96个单个中断,分为12组,分别 对应CPU中断的#INT1#INT12,每组8个中断复用成一个CPU中断 #INTx。 96个中断的每一个都由存储在RAM中的矢量表支持。矢量表中存 储系统内每一个中断服务程序(ISR)的地址(矢量),每个中断源 (多路复用和非复用的)都有一个矢量。
(3)使用PIEIER禁用中断 如果用PIEIER寄存器用于先使能一个中断,进入中断后,要禁用这个中 断。 2、启用和禁用多路复用外设中断的规范 正确规范是通过外设中断启用/禁用标志完成。 方法1:使用PIEIERx寄存器以禁用中断并保留关联的PIEIFRx的标志 采用的规范操作如下: (1)禁用全局中断(INTM=1) (2)清除PIEIERx.y位,以禁用给定的外设中断。可以为同一组内的一 个或多个外设执行此操作。 (3)等待5个周期。确保在CPU寄存器内位正在进入CPU 的任何中断设 置了标志。 (4)清除外设组的CPU IFRx位2。 (5)清除外设组的PIEACKx位。 (6)启用全局中断(INTM=0) 方法2:使用PIEIERx寄存器以禁用中断并清除关联的PIEIFRx标志。 (1)禁用全局中断(INTM=1)
结束 CPU中断控制
二 、矢量表映射 PIE矢量表映射模式由下列模式位/信号控制: (1)VMAP:复位为1,对于F2812为1. (2) M0M1MAP:复位为1,为0只为TI测试使用。 (3)ENPIE:复位为0。 可能的矢量表有:M1矢量、M0矢量、BROM矢量、PIE矢量、XINTF矢量。M0 矢量和M1矢量仅供TI测试用,复位后的矢量表为BROM或XINTF(由MP/#MC引 脚决定)。 复位后,PIE矢量表被禁止,然后,应用程序启用PIE矢量表,从中提取中断矢 量。 (4)F2812的CPU兼容性操作模式由OBJMODE和AMODE位的组合决定,如下 表所示:
TRAP指令取指令
清空流水线
TRAP指令 后为中断向 量,其它中 完成以达到流水 断不能抢夺 线第二阶段的指 令,清除余下指 令 保存返回地址 PC地址的向 量将装入P C 为保存上下 文做准备
增加PC值并保存
取中断向量
SP+1 寄存器成对 存储
自动上下文存储
清除IER位
INTM、DBGM置位 LOOP、EALLOW、 IDLESTAT清除
(2)设置EALLOW位 (3)修改PIE矢量表以便将特定外设中断的矢量临时映射到空的ISR,执 行中断返回。这是清除单个pieifrx.y位而不丢失任何来自组内其它外设的 中断的安全方法。 (4)在外设寄存器上禁用外设中断 (5)启用全局中断 (6)等待空的ISR对来自外设的任何暂挂中断提供服务。 (7)禁用全局中断 (8)修改PIE矢量吧以将外设矢量表映射回其原始ISR。 (9)清除EALLOW位 (10)清除给定外设的PIEIER位。 (11)清除给定外设组的IFR位 (12)清除PIE组的PIEACK位 (13)启用全局中断
操作模式 C28x模式
OBJMODE 1
AMODE 0
C2xLP兼容
C27x兼容
1
0
1
0(复位时默认)
三、中断源 1、处理多路复用中断的规范 清除PIEIFR、PIEIER寄存器的位时,应遵循的三个规范: (1)切勿通过软件清除PIEIER位 对于PIEIER的写入或读-修改-写操作,可能丢失引入的中断。清除时的 规范: 1)设置EALLOW位以允许修改PIE矢量表 2)修改PIE矢量表以便外设服务程序的矢量指向临时ISR,此临时ISR只 执行从中断返回。 3)启用中断以便由临时ISR对中断提供服务。 4)临时ISR执行后,清除PIEIFR位。 5)修改PIE矢量表,将外设的ISR重新映射到正确的服务程序。 6)清除EALLOW 清除IFR位不会造成已经进入的中断丢失。 (2)通过软件划分中断优先级的规范 1)使用CPU的IER寄存器作为全局优先级,各个PIEIER寄存器位组优先 级。 (2)对来自非相关组的中断提供服务时,切勿禁用组的PIEIER位。
表 使能可屏蔽中断的请求
中断处理过程 标准 实时模式且CPU暂停
中断使能 如果INTM=0,IER的位为1,则中断使能 如果IER和DBGIER位为1,则中断使能
与IFR相关的指令有:
OR IFR,#16bit;设置IFR位
PUSH IFR;识别未确定中断 AND IFR,#16bit;清除未决中断
向CPU发送中断请求 设置相应的IFR标志位 SP+1
自动执行上下文存储 IER内的中 断是否使能? 清除相应的IER位
INTM位是 否使能中断?
设置INTM、DBGM;清 除LOOP、EALLOW、 Fra Baidu bibliotekDLESTAT
清除相应的IFR标志位 取回向量赋给PC 清空流水线 执行中断服务程序 增加PC值并且暂存PC值 取中断向量 程序继续
1、外设中断 外设中断事件发生,对应的寄存器设置中断标志位(IF),如果设置了 中断使能位(IE),则外设中断请求发送到PIE控制器。外设中断标志的 清除必须通过软件进行。 2、PIE级中断 对于非复用的中断,PIE直接传递到CPU。 对于复用的中断,PIE有两个与中断组相关的寄存器标志寄存器 (PIEFRx)和启用寄存器(PIEIERx)PIEFRx.y和PIEIERx.y对应PIE的x 组的中断y。 每个中断组有一个确认位(PIEACK)。 中断确认的过程如下:某一中断向PIE中断发出中断请求→PIEIFRx.y 置位→如果PIEIERx.y启用→检查PIEACKx位,若清除→向CPU发中断请 求INTx。 3、CPU级中断 INTx向CPU发出中断,IFR对应位置1,如果IER和INTM位合适,该中 断才会得到响应。
第3章 中断系统
计算机学院硬件教研室 2009-11-25
程建
3.1 F2812的CPU中断
• 中断的作用:CPU与外设之间较高效的通信方式,实现并行工作和 实时控制。 • 中断特点:随机 可恢复 自动处理 • 中断系统组成:硬件中断装置(捕获 响应) 软件中断处理程序 一、F2812概述 支持32个CPU级中断源,软件中断和硬件中断。也可以分为:可 屏蔽中断及不可屏蔽中断两种。 处理中断步骤: (1) 接受中断请求:硬件或软件中断指令 (2) 响应中断:对非屏蔽和软件中断立即响应,可屏蔽中断的响应要满 足一定条件。 (3) 准备执行:执行完当前指令清流水线 保持寄存器值 取入口中断服 务程序地址 (4) 执行中断服务子程序
2、可屏蔽中断
包括14个通用中断(INT1~INT14)、CPU数据标志中断DLOGINT、 实时操作系统中断RTOSINT。前者是GPIO中断用使用有关,后者与实时 仿真有关。 三种中断相关的中断寄存器为:中断标志寄存器IFR、中断使能寄存 器IER、调试中断寄存器 DBGIER。 状态寄存器ST1的0位INTM起全局屏蔽作用为1时全局关闭,为0全局 使能。 IFR寄存器的每一位对应着一个中断,为1表示正暂挂,为0表示没有 暂挂。 IER寄存器和DBGIER寄存器的每一位也对应着一个中断,可分别设置 中断屏蔽位,即为1启用,为0禁用。
保留的中断可在以下两种安全的情况下,用作软件中断: (1)组内没有外设发出中断。 (2)未给该组指定外设中断 四、PIE寄存器 1、PIE中断寄存器(PIECTRL)
相关文档
最新文档