C66x CorePac用户指南 中文版(3)

2019-06-11 15:35

INTERR事件是从中断控制器输出的,并在内部路由回到系统事件96.

由于INTXERR只能容纳一个下降DSP ID。异常状态清理寄存器(INTXCLR)是由单个的清除位组成的。中断异常状态通过它被清理。在INTXCLR寄存器的CLEAR区域写入1可以重置INTXSTAT寄存器至0.在被硬件清理之后,一个新的IDROP事件才能够被检测到。 当处理一个下降中断错误事件时,其处理流程是: 1) 读取INTXSTATE寄存器 2) 检查错误状态

3) 通过INTXCLR寄存器清理错误

为了防止一个或多个DSP中断产生下降中断错误,通常通过编程下降中断屏蔽寄存器(INTDMASK)来忽略它们。

5.异常组合器

C66X DSP有一个简单的系统极、可屏蔽的、异常的事件输入。这个输入由EXCEP决定。异常组合器允许多个系统事件组合成单一的异常事件,如下图所示。这就允许DSP处理所有的可用系统事件,即使只有一个DSP异常输入是可用的。

异常组合器允许系统设计者选择一个执行OR运算的系统事件标志的子集,以决定EXCEP的值。

框图显示;了通过异常组合器来控制系统异常的路径。

注意:重置和不可屏蔽中断也在方框图中表示出来了。实际上,当异常在C66X DSP中启用的时候,NMI信号也被用作不可屏蔽异常输入。在DSP中,这两种信号和其他种类的DSP 异常组合在一起。

为了在DSP中只允许系统任务的部分子集产生异常,异常组合器提供了一组四个屏蔽寄存器,即EXPMASK[3:0]。用来禁用期望之外的事件。因为只有一个到DSP的异常输入,所有的屏蔽寄存器协同工作,以最多将128个事件送入一个单一的EXCEP输出。这就让DSP能够处理所有的系统异常。

EXPMASKx寄存器的默认值全是1.这就意味着所有的事件都是屏蔽的。因此,没有系统事件产生一个异常除非你编辑这个寄存器。

这和事件组合器类似。异常组合器提供了一组屏蔽异常标志位(MEXPFLAGx)和异常屏蔽寄存器相互联系。屏蔽异常标志寄存器提供了一个事件标志寄存器屏蔽视图。通过读取屏蔽异常标志寄存器,只有DSP看见和DSP异常输入有关的事件标志。

通常的屏蔽异常标志寄存器的结构如图所示

DSP应该运行一个异常处理程序并且寻找异常的成因。并在接收到一个异常时响应一个合适的事件。当处理异常的时候处理程序必须首先确定是否在DSP的内部,通过不可屏蔽异常或者EXCEP信号,来产生一个异常信号。

如果发现EXCEP是异常的源头,程序应该读取屏蔽异常标志寄存器来确定是哪个不可屏蔽事件触发了异常。

当处理一个组合中断时,必须做到: 1) 读取MEXFLAG(3:0)寄存器; 2) 检查待处理事件

3) 将MEXPFLAG[3:0]的值写入到EVTCLR[3:0寄存器]。

利用EVTCLR寄存器中MEXPFLAGx的值只能清理组合事件的值来产生EXCEP。任何在EXPMASK中被屏蔽的事件都将被清理,即使在EVTFLAGx寄存器中设置过。这就使得它们能够被利用来产生组合中断事件。 4) 在返回异常处理程序前,DSP应该在步骤1和步骤3迭代。直到没有

待处理事件被发现。这就保证了任何在异常程序处理期间接收到的事件都被捕捉到。

注意:如果DSP需要响应任何新的异常,步骤四直观重要。

以下两个事实解释了为什么是这样:

1) 当有任何的不可屏蔽事件标志位输入是活跃的时候,异常组合器的输出也是活跃的。

2) DSP识别请求是从0到1的转换。

因此,在DSP能够识别一个新的从低到高的转变时,所有的不可屏蔽事件标志均需要清理。

四、C66X 内核事件

C66X 内核的各种组件会产生各种时间。这些事件在被发现时会被路由到中断控制器,它们能够被DSP处理。

这些事件如图所示:

注意:这些可见的事件对C66X COREPAC而言是芯片级的。因此,每个新的C66X 程序能够在必要时利用这些事件作为输入。

七、 中断控制器——DSP的互动 1.DSP——中断控制器的互动

作为异常组合器和中断选择器的产生的中断控制器的输出,将会提供给C66X DSP。

十二个中断信号反映在DSP的中断标志寄存器上(IFR)。如下图示。

为了能使DSP识别出中断,我们必须启动中断。DSP要求单独的通过启用中断使能寄存器和中断任务寄存器中的全局中断使能区来驱动中断。

同时,也应该注意到异常信号是记录在DSP异常标志寄存器的。必须在如图示的异常标志寄存器被识别前启用异常。为了系统设计和之后的兼容性,异常识别在设备重置后需要禁用。你可以在中断任务寄存器中设置全局异常使能区域打开异常。

在启用任何中断之前,应该其启用中断,以保证不可屏蔽信号没有被接收而且其模式已经改变。

当DSP中的系统异常没有启动,不可屏蔽中断作为一个中断,并且在被接收时会发送一个标志到IFR寄存器的BITI区域。当DSP中的异常启用的时候,该标志是没有设定的。相反,异常源通常在异常标志寄存器中被识别,以确定异常源到底是不可屏蔽信号、EXCEP、一个内部异常还是硬件异常(SWE/SWENR).。

所有的不可屏蔽信号在处理过程中共享NMI中断向量,不管是拿它作为一个中断还是代表一个异常。相对于NMI向量,DSP只使用它的REP寄存器作为向量。在这种情况下,SWENR产生一个异常而不是SWE指令。

中断事件的DSP处理

在DSP处理单一事件中断的情况下(系统事件被直接导入中断处理器),没有必要去读取或清理中断控制器中的事件标志寄存器。

但是,当处理组合系统事件时,必须应用一个中断服务程序或者一个异常服务程序中的事件标志。这些标志用于确定事件是用于中断还是异常。从另一方面来讲,DSP中断标志寄存器(或者异常标志寄存器)告诉DSP一个组合事件已经发生了,接着服务程序必须利用这些事件标志寄存器来确定具体的原因。

同样重要的是,早处理程序中,相应的事件标志寄存器位必须由软件清除,以接收随后的事件。如果事件标志不被清理,则新的系统事件将无法识别。这会造成新的系统事件不能被识别为一个下降的中断。这是因为DSP下降中断逻辑应用在DSP中断输入上(而不是中断控制器的事件输入)。一旦事件被中断控制器组合在一起,则DSP就不能检测到。

在许多系统中,服务程序可能会立即读取中断控制器,接着清除整个事件标志寄存器。这对一些系统是好的,但是必须注意有些特定事件是不能被任何系统代码轮询的。如果一个特殊事件必须被轮询(由内部的一些代码偶尔读取系统,而不是让该事件中断DSP),然后盲目地清除标志位可能会导致意想不到的结果。


C66x CorePac用户指南 中文版(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:内部会计控制规范(全)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: