您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C66xCorePac用户指南中文版资料
C66xCorePacUser'sGuide一、概述中断控制器:DSPC66X提供了两种类型的信号同步服务:——中断;——异常;中断由于外部或者内部的硬件信号而提供使正常程序流重新定向的方法。异常也是如此,也通过重新定向程序流。但是异常通常和系统的错误条件有关。C66X可以接收12种可屏蔽/配置中断,一种可屏蔽异常,和一种不可屏蔽中断/异常。DSP也可以响应各种内部异常情况这些在C66XCPU和指令集参考指南中都有记录。因为它们全都包含在DSP内部。C66X内核包括一个中断控制器,允许多达128个和DSP中断/异常有关的系统事件。这128个系统事件可以直接连接到可屏蔽中断,或者组合起来作为中断或者异常。这些不同的路由选择允许的事件具有很大的灵活性处理。在DSP中一个中断被标记,则一个错误事件也被标记,这时该中断的标志就会被挂起。除了路由事件以外,当CPU丢失了一个中断,中断控制器也会检测。在CPU丢失一个实时事件时,可以利用这个错误事件去通知CPU。中断控制器的硬件设备会在一个寄存器中保存丢失中断的编号以纠正CPU的行为。二、C66X内核中断控制器的目的C66X提供了大量的西永事件。中断控制器提供了一种方法选择必要的事件,并将它们路由到相应的DSP中断和异常输入。。虽然可以利用许多这样相同的系统事件去驱动其他外围设备,例如EDMA,但是C66X内核中断控制器是用来专门管理DSP的。三、特点中断控制器将希同事件映射到DSP的中断和异常输入。中断控制器支持128个系统事件。这128个系统事件作为输入进入中断控制器。它们包含内部产生的事件和芯片级事件。事件的列表将在9.3节列举。另外,除了这128个事件,中断控制器寄存器还能够接收不可屏蔽和复位事件,并且直接路由给DSP。中断控制器从这些事件中输出各种信号到C66XDSP:—一一个可屏蔽、硬件异常(EXCEP)——12个可屏蔽硬件中断(从INT4-INT15)——一个利用中断或者异常的不可屏蔽信号(NMI)——一个复位信号(RESET)中断控制器包括以下模块,以方便事件路由到中断和异常。1)中断选择器:路由任何系统事件到12个可屏蔽中断2)事件连接器:减少庞大的事件数目至四种3)异常连接器:让任何系统事件组合在一起作为单一的硬件异常输入四、系统功能图五、术语和定义在本章中特别重要的一条是:1)系统事件:为了通知DSP一些已经发生的活动或者需要一个响应而产生的以个内部或者外部的信号。2)中断:中断由于外部或者内部的硬件信号而提供使正常程序流重新定向的方法。异常和中断类似,他们也重新定位程序流,但是异常通常和系统的错误状态相关。六、中断控制器的结构中断控制器设计来提供对系统事件的灵活的管理。这个功能是通过列出的这一组寄存器实现的。这些寄存器在本章中具有涉及。在第9.5节中有详细的说明。1)事件寄存器中断控制器包含一系列寄存器以管理由控制器收到的系统事件的状态。寄存器可按以下分租:1)事件标志寄存器(EVTFLAAGx)2)清理标志寄存器(EVTCLRx)3)设置标志寄存器(EVTSETx)事件标志寄存器捕捉所有被控制器接收到的系统事件。共有四个32位寄存器覆盖124个系统事件输入。每个系统事件都会被映射到其中一个事件标志寄存器的一个特殊标志位(EFXX)上。通用的系统事件标志位结构如下图所示:所有的124个系统事件都被独立地映射到四个32位EVTFLAGx寄存器的一位上。这就使得EVTFLAG0(EF03:EF00)的至少四位和系统事件没有关联。这四位始终保持为0.也就是说这些地址域是没有相应的系统事件输入的。相反,如图所示,和通过事件连接器内部产生(被送到中断控制器)的事件00到事件03的系统事件被路由到中断选择器,事件标志(EFxx)是锁定寄存器位,在任何事件被接收时保留值1.事件标志寄存器是只读的,并且必须被只写的事件清理寄存器EVTCLR清理。利用事件清理寄存器清理事件标志寄存器。有一个32位事件清理寄存器。这些寄存器的地地址域和事件标志寄存器的地址域是一一映射的。Writinga1toaspecificfieldinaneventclearregistercausesthecorrespondingeventflagregisterfieldtoclear.事件清理寄存器EVTCLR的结构如图所示。事件设置寄存器在概念上类似于事件清除寄存器。利用该寄存器可以手动的设置事件标志寄存器的任意位(例如:可利用事件组寄存器测试中断服务程序时产生中断)。总共有四个32位的事件设置寄存器,其地址域是和事件标志寄存器一一映射的。在事件设置寄存器写1到一个特殊的位会使事件标志寄存器相应的位置1.事件设置寄存器的结构如图所示。中断控制器利用事件清理和事件设置寄存器,不需要直接对事件标志寄存器进行写入,可以防止潜在的竞争状况,没有这些额外的寄存器,DSP可能在对标志位进行读-修改-写操作的时候存在其他方面的清理标志组的隐患。如果在同一个周期内接收到一个新的事件,则清理是由EMTCLRx指定的,新的事件输入优先作为对丢失事件的额外预防。2.事件连接器事件连接器允许多个系统事件组合成一个单一事件。合并事件路由到中断选择器。这使得DSP能够服务所有可能的系统事件,即使DSP只含有12个可用中断。中断连接器的基本原则是在一个系统事件标志的子集上执行一个OR运算(如表1所示)。OR运算的结果作为一个新的连接事件。事件连接器将124个系统事件分成四组。第一组包括从事件4到31,第二组包括从事件32到事件63,第三组包括事件64到事件95,第四组包括事件96到127.在每个组中可以将时间连接组成一个新的组合事件。这些新的事件被写入EVT0/EVT1/EVT2/EVT3.这些事件会通过最初的124个系统事件作为一个128个事件的整体组合路由到中断选择器。每个组合都有一个事件屏蔽寄存器。事件屏蔽寄存器的通常结构如下事件屏蔽寄存器中的事件屏蔽位的作用是启用或者屏蔽接收到的系统事件使之组合在一起。该寄存器默认为0.因此所有的系统事件均是未屏蔽的且是组合在一起的,以形成相互关联的EVTx。如果要屏蔽一个事件源,相应的屏蔽位必须置1.注意时间0到3的事件屏蔽位是被保留的,并且总是被屏蔽的。除了基于可编程事件产生一个组合输出活动,事件组合器提供事件标志寄存器的屏蔽视图。事件组合寄存器的结构示于图9-7。对于在事件屏蔽寄存器中启用的事件,屏蔽事件标志寄存器的内容和事件标志寄存器的内容是相同的。通过读取屏蔽事件标志寄存器,DSP仅能够看见事件标志潜在的响应的组合事件(EVT[3:0])。在中断服务程序组合事件中这是有用的。在处理一个组合中断的时候,你必须:1)阅读MEVTFLAGxJ寄存器相应的组合事件EVTx。2)检查第一个待处理(即标记事件)3)将MEVTFLAGx值写到EVTCLRx寄存器4)在步骤2中处理该事件5)重复步骤1到4直到MEVTFLAGX寄存器为0.此过程只评估并清除相结合的EVTx的事件。此外,任何在EVTMASKx寄存器中被屏蔽的事件不会被清除(它们不需要被清除),即使它们在EVTFLAGx寄存器中被设置(这样就可以使用它们生成异常)。注意-DSP应重复步骤1至步骤4,直到没有未处理的事件被发现之前。在中断服务程序中返回。这确保了任何在中断服务程序中接收到的事件被捕获(如果在同一时间接收到事件EVTx,在EVTCLRy寄存器中其标志是清除的,那么它就不会清除)。3.中断选择器中断选择器的操作DSP有12个可屏蔽中断。中断选择器允许128个系统事件中的任何一个路由到12个DSP中断输入中。如下图所示这128个事件既有事件输入也有事件组合经过事件组合器产生。事件组合器逻辑具有将多个事件输入分成四个可能的事件输出的能力。接着这些输出将被输送给中断选择器并被当作额外的系统事件(EVT0到EVT3)。系统组合器允许除了中断选择器以外的中断路由方式。在INTC模块的这种灵活性使得大量系统中断可以在C66xCorePac内提供服务。它也允许大量的中断到DSP内同时提供服务,从而提高中断效率。C66X内核事件。中断选择器包含中断复用寄存器。INTMUX[3:1]允许调用12个DSP可用中断中的任何一个。每个事件都在中断寄存器中列出,并且都有一个事件数目,用以运行这些寄存器。DSP中断的顺序(从DSPINT4到DSPINT15)决定待处理中断的优先级。因为任何中断都是原子的(不可嵌套),因此DSP中断优先级只适用于待处理中断。4.中断错误事件每当DSP检测到一个中断已经被删除,C66XDSP利用中断控制器能够产生一个系统事件(EVT96)。当相关的DSP中断标志位已经设置好,DSP中断已经接收到,则该事件就会产生。错误事件可能预示着在代码中可能出现的问题。例如是否长期停用中断或者不可中断代码段是否太长。由于中断下降检测逻辑存在于DSP中,故只有来源于单一系统事件的中断才能被检测。组合事件仅能指示在造成这个错误的组内的一个或者多个中断。当DSP检测下降错误条件时它将信息传回到中断控制器的中断/异常状态寄存器。该寄存器记录了下降中断数目以及声称一个系统事件。以下方框图展示了和异常产生有关的信号:INTERR事件是从中断控制器输出的,并在内部路由回到系统事件96.由于INTXERR只能容纳一个下降DSPID。异常状态清理寄存器(INTXCLR)是由单个的清除位组成的。中断异常状态通过它被清理。在INTXCLR寄存器的CLEAR区域写入1可以重置INTXSTAT寄存器至0.在被硬件清理之后,一个新的IDROP事件才能够被检测到。当处理一个下降中断错误事件时,其处理流程是:1)读取INTXSTATE寄存器2)检查错误状态3)通过INTXCLR寄存器清理错误为了防止一个或多个DSP中断产生下降中断错误,通常通过编程下降中断屏蔽寄存器(INTDMASK)来忽略它们。5.异常组合器C66XDSP有一个简单的系统极、可屏蔽的、异常的事件输入。这个输入由EXCEP决定。异常组合器允许多个系统事件组合成单一的异常事件,如下图所示。这就允许DSP处理所有的可用系统事件,即使只有一个DSP异常输入是可用的。异常组合器允许系统设计者选择一个执行OR运算的系统事件标志的子集,以决定EXCEP的值。框图显示;了通过异常组合器来控制系统异常的路径。注意:重置和不可屏蔽中断也在方框图中表示出来了。实际上,当异常在C66XDSP中启用的时候,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
本文标题:C66xCorePac用户指南中文版资料
链接地址:https://www.777doc.com/doc-3535429 .html