TI C66x DSP 系统events及其应用 - 4.2(Exception Combiner)

7 篇文章 0 订阅

Exception Combiner允许系统设计者只选择一部分system events作为CPU EXCEP的输入。为此,Exception Combiner提供了四个exception mask寄存器(EXPMAKS[3:0])用于禁掉不想要CPU EXCEP处理的event。因为单个CPU仅有一个exception输入,所以需要四个mask寄存器协调工作combine 128个events为一个CPU EXCEP输入。

The default value of the EXPMASKx registers are all 1s. This means that all events are masked; therefore, no system events generate an exception unless you program this register.

Exception Combiner也提供了4个masked exception flag寄存器(MEXPFLAG[3:0]),与excepton mask寄存器结合使用。masked exception flag寄存器表示对event falg 寄存器(EVTFLAG[3:0])mask(通过exception mask寄存器实现)后的值,即除去了通过exception mask寄存器禁止掉的event,即使INTC收到了被禁掉的event,也不会在MEXPFLAG寄存器中置位,不被CPU处理

其中event falg 寄存器(EVTFLAG[3:0])将捕获INTC接收到的所有system events,这四个32bit寄存器将cover 124个system events(即4~127,其中0~3是INTC内部combine的event,将不作为INTC的输入,在INTC内部,event 0~3是Interrupt Selector的输入。与处理中断的Event Combiner不同,Exception Combiner不会对event 4~127分组,见corPac user guide Figure9-1可知),每个event映射到event falg 寄存器的1位。当INTC收到event后,相应为被置1,该寄存器是read-only的,只能通过EVTCLR[3:0]清除相应位。

Exception Combiner涉及三种寄存器:
event falg 寄存器(EVTFLAG[3:0]);
exception mask寄存器(EXPMAKS[3:0]);
masked exception flag寄存器(MEXPFLAG[3:0])

#define CORE_PAC_INTC_BASE_ADDR (SCorePacINTCRegs *) 0x01800000
/* INTC寄存器的起始地址是0x01800000 */
/*******************************************************************
* @brief SCorePacINTCRegs structure definition for CorePac Interrupt
* Controller registers.
*******************************************************************************/
typedef struct SCorePacINTCRegs

{
volatile u32 EVTFLAG[4]; /**< Event flag registers */
volatile u8 RSVD1[16];
volatile u32 EVTSET[4]; /**< Event set registers */
volatile u8 RSVD2[16];
volatile u32 EVTCLR[4]; /**< Event clear registers */
volatile u8 RSVD3[48];
volatile u32 EVTMASK[4]; /**< Event mask registers */
volatile u16 RSVD4[8];
volatile u32 MEVTFLAG[4]; /**< Masked Event flag registers */
volatile u8 RSVD5[16];
volatile u32 EXPMASK[4]; /**< Exception Mask registers */
volatile u8 RSVD6[16];
volatile u32 MEXPFLAG[4]; /**< Masked Exception Flag registers */
volatile u8 RSVD7[20];
volatile u32 INTMUX[3]; /**< Interrupt mux registers: INTMUX1, INTMUX2,INTMUX3 */
volatile u8 RSVD8[48];
volatile u32 AEGMUX[2]; /**< Advanced event generator mux registers */
volatile u8 RSVD9[56];
volatile u32 INTXSTAT; /**< Interrupt exception status register */
volatile u32 INTXCLR; /**< Interrupt exception clear register */
volatile u32 INTDMASK; /**< Dropped interrupt mask register */
}SCorePacINTCRegs;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值