收藏 分享(赏)

C66x CorePac用户指南 中文版.doc

上传人:HR专家 文档编号:11564301 上传时间:2020-06-25 格式:DOC 页数:17 大小:1.03MB
下载 相关 举报
C66x CorePac用户指南 中文版.doc_第1页
第1页 / 共17页
C66x CorePac用户指南 中文版.doc_第2页
第2页 / 共17页
C66x CorePac用户指南 中文版.doc_第3页
第3页 / 共17页
C66x CorePac用户指南 中文版.doc_第4页
第4页 / 共17页
C66x CorePac用户指南 中文版.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、C66x CorePac Users Guide一、 概述中断控制器:DSPC66X提供了两种类型的信号同步服务:中断;异常;中断由于外部或者内部的硬件信号而提供使正常程序流重新定向的方法。异常也是如此,也通过重新定向程序流。但是异常通常和系统的错误条件有关。C66X可以接收12种可屏蔽/配置中断,一种可屏蔽异常,和一种不可屏蔽中断/异常。DSP也可以响应各种内部异常情况这些在C66X CPU和指令集参考指南中都有记录。因为它们全都包含在DSP内部。C66X 内核包括一个中断控制器,允许多达128个和DSP中断/异常有关的系统事件。这128个系统事件可以直接连接到可屏蔽中断,或者组合起来作为中

2、断或者异常。这些不同的路由选择允许的事件具有很大的灵活性处理。在DSP中一个中断被标记,则一个错误事件也被标记,这时该中断的标志就会被挂起。除了路由事件以外,当CPU丢失了一个中断,中断控制器也会检测。在CPU丢失一个实时事件时,可以利用这个错误事件去通知CPU。中断控制器的硬件设备会在一个寄存器中保存丢失中断的编号以纠正CPU的行为。二、 C66X 内核中断控制器的目的C66X提供了大量的西永事件。中断控制器提供了一种方法选择必要的事件,并将它们路由到相应的DSP中断和异常输入。虽然可以利用许多这样相同的系统事件去驱动其他外围设备,例如EDMA,但是C66X内核中断控制器是用来专门管理DSP

3、的。三、 特点中断控制器将希同事件映射到DSP的中断和异常输入。中断控制器支持128个系统事件。这128个系统事件作为输入进入中断控制器。它们包含内部产生的事件和芯片级事件。事件的列表将在9.3节列举。另外,除了这128个事件,中断控制器寄存器还能够接收不可屏蔽和复位事件,并且直接路由给DSP。中断控制器从这些事件中输出各种信号到C66X DSP:一一个可屏蔽、硬件异常(EXCEP)12个可屏蔽硬件中断(从INT4-INT15)一个利用中断或者异常的不可屏蔽信号(NMI)一个复位信号(RESET)中断控制器包括以下模块,以方便事件路由到中断和异常。1) 中断选择器:路由任何系统事件到12个可屏

4、蔽中断2) 事件连接器:减少庞大的事件数目至四种3) 异常连接器:让任何系统事件组合在一起作为单一的硬件异常输入四、 系统功能图五、 术语和定义在本章中特别重要的一条是:1) 系统事件:为了通知DSP一些已经发生的活动或者需要一个响应而产生的以个内部或者外部的信号。2) 中断:中断由于外部或者内部的硬件信号而提供使正常程序流重新定向的方法。异常和中断类似,他们也重新定位程序流,但是异常通常和系统的错误状态相关。六、 中断控制器的结构中断控制器设计来提供对系统事件的灵活的管理。这个功能是通过列出的这一组寄存器实现的。这些寄存器在本章中具有涉及。在第9.5节中有详细的说明。1) 事件寄存器中断控制

5、器包含一系列寄存器以管理由控制器收到的系统事件的状态。寄存器可按以下分租:1) 事件标志寄存器(EVTFLAAGx)2) 清理标志寄存器(EVTCLRx)3) 设置标志寄存器(EVTSETx)事件标志寄存器捕捉所有被控制器接收到的系统事件。共有四个32位寄存器覆盖124个系统事件输入。每个系统事件都会被映射到其中一个事件标志寄存器的一个特殊标志位(EFXX)上。通用的系统事件标志位结构如下图所示:所有的124个系统事件都被独立地映射到四个32位EVTFLAGx寄存器的一位上。这就使得EVTFLAG0 (EF03:EF00)的至少四位和系统事件没有关联。这四位始终保持为0.也就是说这些地址域是没

6、有相应的系统事件输入的。相反,如图所示,和通过事件连接器内部产生(被送到中断控制器)的事件00到事件03的系统事件被路由到中断选择器,事件标志(EFxx)是锁定寄存器位,在任何事件被接收时保留值1.事件标志寄存器是只读的,并且必须被只写的事件清理寄存器EVTCLR清理。利用事件清理寄存器清理事件标志寄存器。有一个32位事件清理寄存器。这些寄存器的地地址域和事件标志寄存器的地址域是一一映射的。Writing a 1 to a specific field in an event clear register causes the corresponding event flag register

7、 field to clear.事件清理寄存器EVTCLR的结构如图所示。事件设置寄存器在概念上类似于事件清除寄存器。利用该寄存器可以手动的设置事件标志寄存器的任意位(例如:可利用事件组寄存器测试中断服务程序时产生中断)。总共有四个32位的事件设置寄存器,其地址域是和事件标志寄存器一一映射的。在事件设置寄存器写1到一个特殊的位会使事件标志寄存器相应的位置1.事件设置寄存器的结构如图所示。中断控制器利用事件清理和事件设置寄存器,不需要直接对事件标志寄存器进行写入,可以防止潜在的竞争状况,没有这些额外的寄存器,DSP可能在对标志位进行读-修改-写操作的时候存在其他方面的清理标志组的隐患。如果在同一

8、个周期内接收到一个新的事件,则清理是由EMT CLRx指定的,新的事件输入优先作为对丢失事件的额外预防。2.事件连接器事件连接器允许多个系统事件组合成一个单一事件。合并事件路由到中断选择器。这使得DSP能够服务所有可能的系统事件,即使DSP只含有12个可用中断。中断连接器的基本原则是在一个系统事件标志的子集上执行一个OR运算(如表1所示)。OR运算的结果作为一个新的连接事件。事件连接器将124个系统事件分成四组。第一组包括从事件4到31,第二组包括从事件32到事件63,第三组包括事件64到事件95,第四组包括事件96到127.在每个组中可以将时间连接组成一个新的组合事件。这些新的事件被写入EV

9、T0/EVT1/EVT2/EVT3.这些事件会通过最初的124个系统事件作为一个128个事件的整体组合路由到中断选择器。每个组合都有一个事件屏蔽寄存器。事件屏蔽寄存器的通常结构如下事件屏蔽寄存器中的事件屏蔽位的作用是启用或者屏蔽接收到的系统事件使之组合在一起。该寄存器默认为0.因此所有的系统事件均是未屏蔽的且是组合在一起的,以形成相互关联的EVTx。如果要屏蔽一个事件源,相应的屏蔽位必须置1.注意时间0到3的事件屏蔽位是被保留的,并且总是被屏蔽的。除了基于可编程事件产生一个组合输出活动,事件组合器提供事件标志寄存器的屏蔽视图。事件组合寄存器的结构示于图9-7。对于在事件屏蔽寄存器中启用的事件,

10、屏蔽事件标志寄存器的内容和事件标志寄存器的内容是相同的。通过读取屏蔽事件标志寄存器,DSP仅能够看见事件标志潜在的响应的组合事件(EVT3:0)。在中断服务程序组合事件中这是有用的。在处理一个组合中断的时候,你必须:1) 阅读MEVTFLAGxJ寄存器相应的组合事件EVTx。2) 检查第一个待处理(即标记事件)3) 将MEVTFLAGx值写到EVTCLRx寄存器4) 在步骤2中处理该事件5) 重复步骤1到4直到MEVTFLAGX寄存器为0.此过程只评估并清除相结合的EVTx的事件。此外,任何在EVTMASKx寄存器中被屏蔽的事件不会被清除(它们不需要被清除),即使它们在EVTFLAGx寄存器中

11、被设置(这样就可以使用它们生成异常)。注意 - DSP应重复步骤1至步骤4,直到没有未处理的事件被发现之前。在中断服务程序中返回。这确保了任何在中断服务程序中接收到的事件被捕获(如果在同一时间接收到事件EVTx,在EVTCLRy寄存器中其标志是清除的,那么它就不会清除)。3.中断选择器中断选择器的操作DSP有12个可屏蔽中断。中断选择器允许128个系统事件中的任何一个路由到12个DSP中断输入中。如下图所示这128个事件既有事件输入也有事件组合经过事件组合器产生。事件组合器逻辑具有将多个事件输入分成四个可能的事件输出的能力。接着这些输出将被输送给中断选择器并被当作额外的系统事件(EVT0到EV

12、T3)。系统组合器允许除了中断选择器以外的中断路由方式。在INTC模块的这种灵活性使得大量系统中断可以在C66x CorePac内提供服务。它也允许大量的中断到DSP内同时提供服务,从而提高中断效率。C66X内核事件。中断选择器包含中断复用寄存器。INTMUX3:1允许调用12个DSP可用中断中的任何一个。每个事件都在中断寄存器中列出,并且都有一个事件数目,用以运行这些寄存器。DSP中断的顺序(从DSPINT4到DSPINT15)决定待处理中断的优先级。因为任何中断都是原子的(不可嵌套),因此DSP中断优先级只适用于待处理中断。4.中断错误事件每当DSP检测到一个中断已经被删除,C66XDSP

13、利用中断控制器能够产生一个系统事件(EVT96)。当相关的DSP中断标志位已经设置好,DSP中断已经接收到,则该事件就会产生。错误事件可能预示着在代码中可能出现的问题。例如是否长期停用中断或者不可中断代码段是否太长。由于中断下降检测逻辑存在于DSP中,故只有来源于单一系统事件的中断才能被检测。组合事件仅能指示在造成这个错误的组内的一个或者多个中断。当DSP检测下降错误条件时它将信息传回到中断控制器的中断/异常状态寄存器。该寄存器记录了下降中断数目以及声称一个系统事件。以下方框图展示了和异常产生有关的信号:INTERR事件是从中断控制器输出的,并在内部路由回到系统事件96.由于INTXERR只能

14、容纳一个下降DSP ID。异常状态清理寄存器(INTXCLR)是由单个的清除位组成的。中断异常状态通过它被清理。在INTXCLR寄存器的CLEAR区域写入1可以重置INTXSTAT寄存器至0.在被硬件清理之后,一个新的IDROP事件才能够被检测到。当处理一个下降中断错误事件时,其处理流程是:1) 读取INTXSTATE寄存器2) 检查错误状态3) 通过INTXCLR寄存器清理错误为了防止一个或多个DSP中断产生下降中断错误,通常通过编程下降中断屏蔽寄存器(INTDMASK)来忽略它们。5.异常组合器C66X DSP有一个简单的系统极、可屏蔽的、异常的事件输入。这个输入由EXCEP决定。异常组合

15、器允许多个系统事件组合成单一的异常事件,如下图所示。这就允许DSP处理所有的可用系统事件,即使只有一个DSP异常输入是可用的。异常组合器允许系统设计者选择一个执行OR运算的系统事件标志的子集,以决定EXCEP的值。框图显示;了通过异常组合器来控制系统异常的路径。注意:重置和不可屏蔽中断也在方框图中表示出来了。实际上,当异常在C66X DSP中启用的时候,NMI信号也被用作不可屏蔽异常输入。在DSP中,这两种信号和其他种类的DSP 异常组合在一起。为了在DSP中只允许系统任务的部分子集产生异常,异常组合器提供了一组四个屏蔽寄存器,即EXPMASK3:0。用来禁用期望之外的事件。因为只有一个到DS

16、P的异常输入,所有的屏蔽寄存器协同工作,以最多将128个事件送入一个单一的EXCEP输出。这就让DSP能够处理所有的系统异常。EXPMASKx寄存器的默认值全是1.这就意味着所有的事件都是屏蔽的。因此,没有系统事件产生一个异常除非你编辑这个寄存器。这和事件组合器类似。异常组合器提供了一组屏蔽异常标志位(MEXPFLAGx)和异常屏蔽寄存器相互联系。屏蔽异常标志寄存器提供了一个事件标志寄存器屏蔽视图。通过读取屏蔽异常标志寄存器,只有DSP看见和DSP异常输入有关的事件标志。通常的屏蔽异常标志寄存器的结构如图所示DSP应该运行一个异常处理程序并且寻找异常的成因。并在接收到一个异常时响应一个合适的事

17、件。当处理异常的时候处理程序必须首先确定是否在DSP的内部,通过不可屏蔽异常或者EXCEP信号,来产生一个异常信号。如果发现EXCEP是异常的源头,程序应该读取屏蔽异常标志寄存器来确定是哪个不可屏蔽事件触发了异常。当处理一个组合中断时,必须做到:1) 读取MEXFLAG(3:0)寄存器;2) 检查待处理事件3) 将MEXPFLAG3:0的值写入到EVTCLR3:0寄存器。利用EVTCLR寄存器中MEXPFLAGx的值只能清理组合事件的值来产生EXCEP。任何在EXPMASK中被屏蔽的事件都将被清理,即使在EVTFLAGx寄存器中设置过。这就使得它们能够被利用来产生组合中断事件。4) 在返回异常

18、处理程序前,DSP应该在步骤1和步骤3迭代。直到没有待处理事件被发现。这就保证了任何在异常程序处理期间接收到的事件都被捕捉到。注意:如果DSP需要响应任何新的异常,步骤四直观重要。以下两个事实解释了为什么是这样:1) 当有任何的不可屏蔽事件标志位输入是活跃的时候,异常组合器的输出也是活跃的。2) DSP识别请求是从0到1的转换。因此,在DSP能够识别一个新的从低到高的转变时,所有的不可屏蔽事件标志均需要清理。四、C66X 内核事件C66X 内核的各种组件会产生各种时间。这些事件在被发现时会被路由到中断控制器,它们能够被DSP处理。这些事件如图所示:注意:这些可见的事件对C66X COREPAC

19、而言是芯片级的。因此,每个新的C66X程序能够在必要时利用这些事件作为输入。七、 中断控制器DSP的互动 1.DSP中断控制器的互动作为异常组合器和中断选择器的产生的中断控制器的输出,将会提供给C66X DSP。十二个中断信号反映在DSP的中断标志寄存器上(IFR)。如下图示。为了能使DSP识别出中断,我们必须启动中断。DSP要求单独的通过启用中断使能寄存器和中断任务寄存器中的全局中断使能区来驱动中断。同时,也应该注意到异常信号是记录在DSP异常标志寄存器的。必须在如图示的异常标志寄存器被识别前启用异常。为了系统设计和之后的兼容性,异常识别在设备重置后需要禁用。你可以在中断任务寄存器中设置全局

20、异常使能区域打开异常。在启用任何中断之前,应该其启用中断,以保证不可屏蔽信号没有被接收而且其模式已经改变。当DSP中的系统异常没有启动,不可屏蔽中断作为一个中断,并且在被接收时会发送一个标志到IFR寄存器的BITI区域。当DSP中的异常启用的时候,该标志是没有设定的。相反,异常源通常在异常标志寄存器中被识别,以确定异常源到底是不可屏蔽信号、EXCEP、一个内部异常还是硬件异常(SWE/SWENR).。所有的不可屏蔽信号在处理过程中共享NMI中断向量,不管是拿它作为一个中断还是代表一个异常。相对于NMI向量,DSP只使用它的REP寄存器作为向量。在这种情况下,SWENR产生一个异常而不是SWE指

21、令。中断事件的DSP处理在DSP处理单一事件中断的情况下(系统事件被直接导入中断处理器),没有必要去读取或清理中断控制器中的事件标志寄存器。但是,当处理组合系统事件时,必须应用一个中断服务程序或者一个异常服务程序中的事件标志。这些标志用于确定事件是用于中断还是异常。从另一方面来讲,DSP中断标志寄存器(或者异常标志寄存器)告诉DSP一个组合事件已经发生了,接着服务程序必须利用这些事件标志寄存器来确定具体的原因。同样重要的是,早处理程序中,相应的事件标志寄存器位必须由软件清除,以接收随后的事件。如果事件标志不被清理,则新的系统事件将无法识别。这会造成新的系统事件不能被识别为一个下降的中断。这是因

22、为DSP下降中断逻辑应用在DSP中断输入上(而不是中断控制器的事件输入)。一旦事件被中断控制器组合在一起,则DSP就不能检测到。在许多系统中,服务程序可能会立即读取中断控制器,接着清除整个事件标志寄存器。这对一些系统是好的,但是必须注意有些特定事件是不能被任何系统代码轮询的。如果一个特殊事件必须被轮询(由内部的一些代码偶尔读取系统,而不是让该事件中断DSP),然后盲目地清除标志位可能会导致意想不到的结果。八、 寄存器1. 事件寄存器中断控制寄存器包含了一系列的状态和控制寄存器来管理由控制器接收的系统事件。这些寄存器包括标志位、设置和清理寄存器,覆盖了所有的128个系统事件。1.1事件标志寄存器

23、事件标志寄存器中的事件标志在128个系统事件中的任何一个被接收时都保持1的值,并且是只读寄存器。利用只写的事件清理寄存器去清理寄存器。利用事件设置寄存器去手动设置事件标志寄存器的任何一位,包括屏蔽位。1.2事件设置寄存器利用事件设置寄存器可以手动设置事件标志寄存器的任意一位。1.3事件清理寄存器利用事件清理寄存器清理在时间标志寄存器中的事件标志。1.4事件组合寄存器有一系列的事件屏蔽寄存器来编译事件组合器。这些寄存器可以将32个事件组合成一个能被中断选择器选择的单一组合事件。事件屏蔽寄存器中的事件屏蔽位用来屏蔽接收到的系统事件。总共有四种事件信号给中断选择器。1.5事件屏蔽寄存器有一系列的事件

24、屏蔽寄存器来编译事件组合器。这些寄存器允许32个事件组合成一个能被用作一个单一的DSP中断或者AET事件的事件输出。事件屏蔽寄存器中的事件屏蔽位是作为在事件输出的将会被在一起的接收事件的使能者。1.6屏蔽中断标志寄存器事件组合器提供了一组四个屏蔽事件标志寄存器。1.7中断复用寄存器中断选择器包含中断复用寄存器,允许编辑任意12个可用DSP中断源。1.8中断异常状态寄存器中断异常状态寄存器提供了决定什么导致异常产生的信息。中断异常状态寄存器保持着DSP中断和下降事件的系统事件数目。1.9中断异常清理寄存器中断异常状态通过中断异常清理寄存器清理。一个新的IDROPx事件只能在状态清除后由硬件检测到。2.0下降中断屏蔽寄存器该生成INTERR事件被丢弃的中断可以通过掩模进行过滤寄存器。是那些DSP中断由掉落检测硬件被忽略可以在下降中断屏蔽寄存器(INTDMASK)屏蔽掉。2.1DSP异常寄存器DSP异常组合屏蔽寄存器屏蔽异常标志寄存器高级事件发生复用寄存器特权和中断控制器寄存器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报