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

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






  • 4
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值