DSP

6713中断寄存器配置及存储映射

2019-07-13 17:28发布

2016-07-11

总结中断寄存器配置,存储映射

1 中断寄存器配置

1.1 中断的分类和服务表的设置

硬件中断装置是中断系统的机制部分,负责捕获中断源发出的中断请求,以一定方式响应中断源,然后将处理器控制权交给特定的中断处理程序; 软件中断处理程序是中断系统的策略部分,负责辨别中断类型并作出相应的操作。引入中断的目地是解决主机与外设的并行工作问题,实现实时控制。 分类:RESET(复位)中断,不可屏蔽中断(NMI),可屏蔽中断(INT4-INT15)。优先级:复位中断>不可屏蔽中断>可屏蔽中断。 中断应答信号:IACK信号指出CPU已将开始处理一个中断,INUMx(INUM3-INUM0)信号指出正在处理的是哪一个中断,其四位值大小对应于IFR(中断标志寄存器)中的位的位置。 中断服务表:中断服务的地址表,表中包含中断服务代码的取址包。IST包含16个连续的中断取指包,在每一个中断取指包中,都具有8条指令,其中每条指令都包含32位指令字,表中是以32位字节进行增长的。
图1.1 中断服务表IST 中断服务表指针寄存器(ISTP): 该寄存器确定中断服务程序在中断服务表中的地址。
图1.2 ISTP结构
图1.3 ISTP各字段作用

1.2 中断的描述和相关寄存器配置

6813CPU支持16个优先级中断,最高优先级中断是INT_00(专用于复位),最低优先级中断时INT_15。前四个中断为非屏蔽和固定中断,其余的中断(4-15)为可屏蔽和默认中断源。 中断选择寄存器描述:
图1.4 中断选择寄存器描述 根据其地址在头文件中定义中断选择寄存器: // 定义中断选择寄存器 #define MUXH_REG             0x019C0000 #define MUXL_REG             0x019C0004 #define EXTPOL_REG           0x019C0008 所有中断控制寄存器描述:
图1.5 中断控制寄存器描述 状态控制寄存器(CSR): 状态控制寄存器有两个位用于控制中断:GIE和PGIE,GIE-全局中断使能(global interruppt enable)是状态控制寄存器的(CSR)的bit0,控制GIE的值可以使能或者禁止所有的可屏蔽中断。PGIE是控制寄存器(CSR)的bit1,PGIE包含之前的GIE,当处理可屏蔽中断期间PGIE保存GIE的值,而GIE被清零,这样在处理一个可屏蔽中断期间,就防止了另外一个可屏蔽中断的发送,当中断返回时,通过写程序指令把PGIE的值重新返回到GIE中。
图1.6 CSR结构图
图1.7 GIE和PGIE字段描述 禁止全局中断: CSR = 0x00000100; 使能全局中断: CSR = CSR | 1; 中断使能寄存器(IER): 中断使能寄存器(IER)控制每一个中断源是否被使能。通过IER中相应的个别中断为的置1或者清零可以使能或者禁止个别中断。
图1.8 IER结构 IER的bit0对应于复位,该位可读(读作1)不可写,由于bit0始终为1,所以复位总被使能。Bit IE4-IE15写1或者写0分别使能或禁止相关中断。NMIE = 0时,禁止所有非复位中断;NMIE = 1时,GIE和相应的IER位一起使能INT15-INT4中断,对NMIE写0无效。只有复位和NMI发生时清零,NMIE的置1靠执行B NRP指令和写1完成。 使能中断NMI和IE14-IE15:  IER= 0x0000C003; 中断标志寄存器(IFR): 中断标志寄存器(IFR)包括INT4-INT15和NMI的状态。当一个中断发生时,IFR中的相应中断位被置1,否则为0。使用MVC指令读取IFR,可检查中断状态。
图1.9 IFR结构 中断设置寄存器(ISR): 中断设置寄存器(ISR)可以手动设置中断标志寄存器(IFR)中的可屏蔽中断位。对ISR的IS4-IS15位写1,则引起IFR对应中断标志位置1;对ISR任何为写0无效,设置ISR的任何位都不影响NMI和复位。进入的中断具有优先权,当同时ICR和ISR的同一位写入时,ISR写入优先。
图1.10 ISR结构 中断清除寄存器(ICR): 中断清除寄存器(ICR)可以手动清除中断标志寄存器(IFR)中的可屏蔽中断位。对ICR的IC4-IC15位写1,则引起IFR对应标志位置0。对ICR的任何位写0无效,清除ICR的任何位都不影响NMI和复位。
图11 ICR结构 清除所有中断标志位: ICR = 0xFFFF; 不可屏蔽中断返回指针寄存器(NRP): 不可屏蔽中断返回指针寄存器(NRP)包含从不可屏蔽中断返回时的指针,该指针引导CPU返回到原来程序执行的正确位置,当NMI复位完成时,为返回到被中断的源程序中,在中断服务程序结尾处,必须插入一条跳转到NRP的指令(即 BNRP)。不可屏蔽中断返回指针寄存器(NRP)包含由于NMI而未执行的程序流程中第一个执行包的32位地址。尽管可以对这个寄存器写值,但任何接下来的中断处理将刷新这个值。
图12 NRP结构 可屏蔽中断返回指针寄存器(IRP): 可屏蔽中断返回指针寄存器(IRP)的功能与不可屏蔽中断返回指针寄存器(NRP)基本相同,不同的地方是中断源,该寄存器中为可屏蔽中断源。
图13 IRP结构

1.3 中断源与中断信号

6713的外设部分最多可以提供32种中断源,但是CPU只能利用其中的12个,用户是通过中断选择来定义中断源和中断信号之间的映射关系的,在中断选择中还可以定义外中断信号的极性。
图16 中断源与中断信号的映射关系 外部中断极性寄存器是用来定义外部中断的触发极性的。XIP4-XIP7分别控制EXT_INT4-EXT_INT7的触发极性,当XIP = 0时,外部中断信号为上升沿有效,当XIP = 1时,外部中断信号为下降沿有效。  

2 存储器映射

系统地址映射定义: #define CCFG                      0x01840000 #define DPRAMSTART           0xA0000000   #define PLL_PLLCSR           0x01B7C100 #define PLL_PLLM             0x01B7C110 #define PLL_PLLDIV0          0x01B7C114 #define PLL_PLLDIV1          0x01B7C118 #define PLL_PLLDIV2          0x01B7C11C #define PLL_PLLDIV3          0x01B7C120 #define PLL_OSCDIV1          0x01B7C124   #define EMIF_GBLCTL          0x01800000 #define EMIF_CECTL0          0x01800008 #define EMIF_CECTL1          0x01800004 #define EMIF_CECTL2          0x01800010 #define EMIF_CECTL3          0x01800014 #define EMIF_SDCTL           0x01800018 #define EMIF_SDTIM           0x0180001C #define EMIF_SDEXT           0x01800020   定时器地址映射定义: #define TIMER_CTL0           0x01940000            //定时器0 #define TIMER_PRD0           0x01940004 #define TIMER_CTL1           0x01980000            //定时器1 #define TIMER_PRD1           0x01980004