dsp中断系统

上传人:第*** 文档编号:56547662 上传时间:2018-10-13 格式:PPT 页数:34 大小:1.94MB
返回 下载 相关 举报
dsp中断系统_第1页
第1页 / 共34页
dsp中断系统_第2页
第2页 / 共34页
dsp中断系统_第3页
第3页 / 共34页
dsp中断系统_第4页
第4页 / 共34页
dsp中断系统_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《dsp中断系统》由会员分享,可在线阅读,更多相关《dsp中断系统(34页珍藏版)》请在金锄头文库上搜索。

1、第6章 DSP中断系统,TMS320C6000的中断概述,中断控制,编程注意事项,中断选择器与外部中断,6.1 TMS320C6000的中断概述,TMS320C6000 DSP的CPU有3种类型的中断。这3种类型的中断是根据其优先级的不同而划分的,如表6-1所示为中断的优先级。,6.1 TMS320C6000的中断概述,1复位( RESET) 复位是优先级最高的中断,用来暂停CPU并且返回一个已知的状态,复位中断具有以下的特点: RESET信号低电平有效,而其他中断信号都是高电平有效。 为了正确重新初始化CPU, RESET在恢复高电平之前,必须保持10个时钟周期的低电平。 停止正在执行的指令

2、,所有寄存器恢复到初始状态。 复位中断服务取指包必须放在地址为0的位置。 信号不受分支跳转的影响。 2不可屏蔽中断(NMI) 不可屏蔽中断(NMI)为第二优先级的中断,通常用来向CPU发出类似突然掉电之类的硬件问题告警。为了处理该中断,中断使能寄存器中的NMIE位必须置1。如果NMIE位置1,阻止NMI处理的唯一条件是在分支跳转的延迟时间段内发生不可屏蔽中断。,6.1.1 中断类型和中断信号,6.1.1 中断类型和中断信号,3可屏蔽中断(INT4INT15) 假设一个可屏蔽中断不在分支跳转的延迟阶段发生,则必须满足如下条件时可屏蔽中断才能被处理: 控制状态寄存器(CSR)中的全局中断使能位(G

3、IE)置1; 中断使能寄存器(IER)中的NMIE位置1; IER中的相应中断使能位置1; 相应的中断发生,将中断标志寄存器(IFR)的相应为置1,且在IFR中设置更高优先级的中断标志(IF)位。,6.1.1 中断类型和中断信号,4中断应答(IACK和INUMX) IACK和INUMX信号通知TMS320C6000外部硬件,正在对发生的中断进行处理。IACK信号指出CPU已经开始处理一个中断。INUMX信号(INUM3INUM0)指出正在处理的是哪个中断。 例如: INUM3 = 0 (MSB) INUM2 = 1 INUM1 = 1 INUM0 = 1 (LSB),6.1.2 中断服务表(I

4、ST),IST的地址和内容如图6-1所示。由于每个取指包都含有8条指令字(或者32个字节),因此表中的地址以32位字节(20h)增加。,6.1.2 中断服务表(IST),1中断服务取指包(ISFP) 中断服务取指包ISFP(Interrupt Service Fetch Packet)是用于服务中断的取指包。图6-2说明当中断服务程序很小时,可以将其放在一个单独的取指包内。,6.1.2 中断服务表(IST),图6-3所示为INT4的中断服务程序,由于程序太长不能放在单个的FP内,一部分程序放在地址为1234h开始的存储区,以便完成整个中断服务程序。,6.1.2 中断服务表(IST),2中断服务

5、表指针寄存器(ISTP) 中断服务表指针ISTP(Interrupt Service Table Pointer)寄存器用于定位中断服务程序的位置。ISTP中的一个字段ISTB确定IST的地址基数部分;另一个字段HPEINT确定特定的中断并定位特定的取指包在IST中的位置。图6-4所示为ISTP的各字段,表6-2描述了各字段及其如何使用。,6.1.2 中断服务表(IST),【例6.1】 中断服务部的重定位。 (1)重定位IST到800h: 将地址为0h200h的IST复制到地址800hA00h之间。 写800h到ISTP寄存器: MVK 800h, A2 MVC A2, ISTP ISTP =

6、 800h = 1000 0000 0000b (2)ISTP引导CPU到重定位的IST对应的ISFP: 假设:IFR = BBC0h = 1011 1011 1100 0000b IER = 1230h = 0001 0010 0011 0001b,6.1.3 中断控制寄存器,TMS320C6000 DSP有8个中断控制寄存器,分别说明如下: CSR控制状态寄存器(Control status register),控制全局使能或者禁止中断处理。 IER中断使能寄存器(Interrupt enable register),使能或者禁止中断处理。 IFR中断标志寄存器(Interrupt fla

7、g register),显示中断状态。 ISR中断设置寄存器(Interrupt set register),手动设置IFR中的标志位。 ICR中断清零寄存器(Interrupt clear register),手动清除IFR中的标志位。 ISTP中断服务表指针(Interrupt service table pointer),指向中断服务表的起始地址。 NRP不可屏蔽中断返回指针(Nonmaskable interrupt return pointer),包含从不可屏蔽中断返回的地址,该中断返回通过B NRP指令完成。 IRP中断返回指针(Interrupt return pointer),

8、包含从可屏蔽中断返回的地址,该中断返回通过指令B IRP完成。,6.1.3 中断控制寄存器,控制状态寄存器(CSR)包含两个用于控制中断的字段:GIE和PGIE。CSR结构如图6-5所示。,6.1.3 中断控制寄存器,表6-3给出了GIE和PGIE字段的描述。,6.1.3 中断控制寄存器,【例6.2】 禁止可屏蔽全局中断的代码顺序。 MVC CSR,B0 ;获取 CSR AND -2,B0,B0 ;准备清除 GIE MVC B0,CSR ;清除 GIE 该例说明如何禁止可屏蔽的全局中断。 【例6.3】 使能可屏蔽全局中断的代码顺序。 MVC CSR,B0 ;获取 CSR OR 1,B0,B0

9、;准备清除 GIE MVC B0,CSR ;清除 GIE,6.1.3 中断控制寄存器,【例6.4】 获取CSR中GIE字段的值同时设置GIE字段的值。 #define IDEF static inline /*-*/ /* 该函数通过清除CSR寄存器的GIE位进行全局的禁用中断, */ /* 返回GIE的旧值,这对暂时的禁用全局中断很有用,然后将它们返回。*/ /* 没有参数;返回值为GIE的旧值。 */ /*-*/ IDEF Uint32 IRQ_globalDisable() Uint32 gie = CHIP_FGET(CSR,GIE); /*获取CSR中GIE字段的值*/ CHIP_F

10、SET(CSR,GIE,0); /*设置CSR中GIE字段值为0*/ return gie; ,6.2 中断控制,6.2.1 中断使能寄存器(IER) 各个中断源能否被使能,是由中断使能寄存器(IER)控制的,IER的格式如图6-6。通过IER中相应中断位的置1或清零可以使能或禁止相应的中断。,6.2.1 中断使能寄存器(IER),【例6.5】 使能中断INT9的代码顺序。 MVK 200h,B1 ;设置第9位 MVC IER,B0 ;获取 IER OR B1,B0,B0 ;准备设置IE9 MVC B0,IER ;设置IER中的第9位 【例6.6】 禁止中断INT9的代码顺序。 MVK FDF

11、Fh,B1 ;清除第9位 MVC IER,B0 AND B1,B0,B0 ;准备清除IE9 MVC B0,IER ;清除IER的第9位 【例6.7】 通过设置和清除IER各位使能和禁止各中断。,6.2.2 设置和清除中断的状态 (IFR,ISR和ICR),中断标志寄存器(IFR)包含INT4INT15和NMI的状态。当发生一个中断时,IFR中的相应中断位置1,否则为0。如果用户想检查中断的状态,则使用MVC指令去读取IFR。图6-7为IFR的格式。,6.2.2 设置和清除中断的状态 (IFR,ISR和ICR),中断设置寄存器(ISR)和中断清除寄存器(ICR)允许用户手动设置和清除IFR的可屏

12、蔽中断位。ISR和ICR格式分别如图6-8和图6-9所示。,6.2.2 设置和清除中断的状态 (IFR,ISR和ICR),【例6.8】 设置中断(INT6)和读取中断标志寄存器的代码。 MVK 40h,B3 MVC B3,ISR NOP MVC IFR,B4 【例6.9】 清除中断(INT6)和读取中断标志寄存器的代码。 MVK 40h,B3 MVC B3,ICR NOP MVC IFR,B4 【例6.10】 ISR中断设置寄存器和ICR中断清除寄存器以及IFR中断标志寄存器的应用代码。,6.2.3 中断返回服务,(1)从不可屏蔽中断返回指针寄存器(NRP) 当NMI服务完成时,为返回到被中断

13、的程序中,在中断服务程序结束必须安排一条跳转到NRP指令(B NRP)。从NMI返回的程序: B NRP ; 返回, 设置NMIE NOP 5 ; 延迟时隙 NRP包含由于不可屏蔽中断而为执行的程序流中的第一个执行包的32位地址,尽管可以对这个寄存器写入值,但任何随后而来的中断处理将刷新该值。图6-10给出了NMI返回指针寄存器的格式。,6.2.3 中断返回服务,(2)可屏蔽中断返回指针寄存器(IRP) 可屏蔽中断返回指针寄存器(IRP)的功能与NRP基本相同,其区别是中断源不同,IRP是可屏蔽中断源。IRP寄存器格式如图6-11所示。 从一个可屏蔽中断返回的代码: B IRP ; 返回, 将

14、 PGIE 复制到 GIE NOP 5 ; 延迟时隙,6.3 编程注意事项,6.3.1 单任务编程 当发生一个中断时,在中断开始处理前进入E1流水线阶段的所有指令可以允许执行完成,其他指令被废除,当中断返回后重新取指。从中断返回后的指令与中断前的指令之间,比无中断时有更长的延迟。例6.11给出不使用单任务编程的代码,例6.12给出使用单任务编程的代码。 【例6.11】 不使用单任务编程的代码。 LDW .D1 *A0,A1 ADD .L1 A1,A2,A3 NOP 3 MPY .M1 A1,A4,A5 ;使用新的 A1 【例6.12】 使用单任务编程的代码。 LDW .D1 *A0,A6 AD

15、D .L1 A1,A2,A3 NOP 3 MPY .M1 A6,A4,A5 ;使用 A6,6.3.2 嵌套中断,当CPU进入一个中断服务程序时,其他中断均被禁止。然而,当中断服务程序是可屏蔽中断INT4INT15中的一个时,NMI可以中断一个可屏蔽中断的处理过程。 有时希望一个中断服务程序被另一个优先级更高级别的中断所中断,尽管中断服务程序不允许除NMI之外的中断所中断,但在软件控制下实现嵌套中断是可能的。这一过程要求将原来的IRP(或NRP)和IER保存到不使用的存储器或者寄存器中。通过ISR建立一套新的使能位,存CSR后置GIE位。,6.3.3 手动中断处理,用户可以通过测试IFR和IER位来手动检测中断,然后将程序分支跳转到ISTP指向的地址,如例6.13所示。 【例6.13】 手动中断处理实例。 MVC ISTP,B2 ;获取相应的ISFP地址 EXTU B2,23,27,B1 ;提取HPEINT B1 B B2 ;分支跳转到中断 | B1 MVK 1,A0 ;设置ICR字 B1 MVK RET_ADR,B2 ;产生返回地址 B1 MVKH RET_ADR,B2 B1 MVC B2,IRP ;保存返回地址 B1 SHL A0,B1,B1 ;创建ICR字 B1 MVC B1,ICR ;清除中断标志 RET_ADR: (中断服务程序代码),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号