第8讲第5章C28x的系统控制模块2013-4-27资料

上传人:f****u 文档编号:111797978 上传时间:2019-11-03 格式:PPT 页数:43 大小:2.49MB
返回 下载 相关 举报
第8讲第5章C28x的系统控制模块2013-4-27资料_第1页
第1页 / 共43页
第8讲第5章C28x的系统控制模块2013-4-27资料_第2页
第2页 / 共43页
第8讲第5章C28x的系统控制模块2013-4-27资料_第3页
第3页 / 共43页
第8讲第5章C28x的系统控制模块2013-4-27资料_第4页
第4页 / 共43页
第8讲第5章C28x的系统控制模块2013-4-27资料_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《第8讲第5章C28x的系统控制模块2013-4-27资料》由会员分享,可在线阅读,更多相关《第8讲第5章C28x的系统控制模块2013-4-27资料(43页珍藏版)》请在金锄头文库上搜索。

1、第5章 F2812系统的中断模块,1,3,2,3,3,3,4,4,F2812的中断控制模块,PIE外设中断扩展模块,DSP F2812的中断响应流程,PIE中断向量表的定义,2,TMS320F2812的中断扩展控制器PIE,由于DSP CPU内核没有足够能力(包括足够的中断输入线和中断优先权)处理所有外设的中断请求,故用一个中断扩展控制器(PIE)按固定中断优先级来仲裁处理所有外设的中断请求,分时、分组送到有限个CPU内核中断输入请求线INT1INT12上。 PIE的功能包括: 八个外设中断请求为一组接入INT1INT12之一 。 每组有中断标志寄存器和中断允许寄存器。 每组有中断优先级仲裁器

2、,超过一个以上外设中断同时请求,仲裁结果使较高优先级中断优先输出到内核中断输入。,3,2812的三级中断管理机制,外设级(Peripheral Level) 当每组外设的一个或多个中断输同时请求时,外设级中断标志寄存器IF相应位均置“1”,如果中断允许寄存器对应位不允许中断,则IF相应位的“1”一直保持,直到被软件清“0”。 PIE级(PIE Level) 外设级中断标志寄存器有12组:PIEIFRx.y(x=112,y=07)。外设级中断标志寄存器有12组: PIEIERx.y (x=112,y=07)。,4,2812的三级中断管理机制,CPU级(CPU Level) CPU内核设有中断标志

3、寄存器IFR和中断允许寄存器IER以及调试中断允许寄存器DBGIER。 DBGIER与IER的区别是:当CPU处于实时仿真的暂停状态下,才使用DBGIER,以配合IER允许重要时间中断。 DBGIER与IER各位定义完全相同。 DBGIER的每位中断允许位被定义为 一个重要时间中断。当CPU在实时仿真模式时被暂停,只有IER和DBGIER对应位均允许的中断才是重要时间中断。一旦CPU运行,仅使用IER 而DBGIER失效。,5,标准中断与调试中断处理过程的区别,(中断处理过程 ) (中断使能条件),标准中断(standard),INTM = 0 and bit in IER is 1,DSP在

4、实时仿真模式但当前暂停(DSP in real-time mode and CPU halted),Bit in IER is 1 and bit in DBGIER is 1,6,PIE级的中断和外设级的中断比较,外设中断的中断标志位是需要软件清除的,而PIE级的中断标志位都是自动置位或者清除的。但是PIE多了一个PIEACK寄存器,同一时间只能放一个中断过去,只有等到这个中断被响应,给PIEACK清零,才能让同组的下一个中断过去,被CPU响应。,7,CPU级中断的特点,CPU级的操作都是自动的,不管是中断标志位(IFR),还是中断的使能位(IER)。当某一个外设中断请求通过PIE发送到CP

5、U时,CPU级中与INTx相关的中断标志位就会被置位。如果IER中的相关位被置位了,并且INTM的值为0,则中断就会被CPU响应。这时,CPU会将相应的IER和IFR位进行清除,EALLOW也被清除,INTM被置位,就是不能响应其他中断了。之后,CPU会从PIE块中取出对应的中断向量ISR,从而转去执行中断子程序。,8,F2812的中断硬件结构框图,9,PIE的外设中断源以及对应的CPU中断请求,10,F2812 PIE模块实现中断管理的结构框图,11,F2812可屏蔽外设中断响应流程图,12,CPU中断向量表和优先级排序,13,INT1的中断源描述及其优先次序,14,中断向量表映射配置表,1

6、5,PIE向量表的结构,16,PIE模块配置和控制寄存器,17,F2812 PIE模块配置和控制寄存器,18,PIE模块配置和控制寄存器,PIECTRL,位 名称 说明 151 PIEVECT 这些位为只读位,反应了被CPU读取的中断向量在PIE向量表中的地址。16位的地址只有高15位被给出,最低位被忽略。 0 ENPIE PIE向量表的使能位。当该位置1后,CPU将从PIE向量表中读取中断向量。,PIEACK,19,PIE模块配置和控制寄存器,PIEIFRx(x=112),PIEIERx(x=112),20,PIE模块配置和控制寄存器,IFR,IER,21,函数指针类型,在281x C语言中

7、,使用interrupt 中断关键字定义如下数据类型: typedef interrupt void(*PINT)(void); /定义一个新函数型指针数据类型: PINT 。可以用自定义类型PINT 去定义“函数型指针”变量,指向中断函数。 函数型指针变量,其一般形式为: 数据类型标识符 (*指针变量名) () ; 注意:240x C语言中,interrupt 中断关键字不能 定义函数指针类型,即240x的C编译器编译下列语句出错:typedef interrupt void(*PINT)(void);,22,PIE中断向量表的定义,typedef interrupt void(*PINT)

8、(void); /指向中断向量的指针类型定义 struct PIE_VECT_TABLE / 定义了一个中断向量表的结构体类型。 PINT PIE1_RESERVED; / 成员为指向中断服务程序入口的指针 PINT PIE2_RESERVED; PINT PIE3_RESERVED; PINT rsvd12_6; PINT rsvd12_7; PINT rsvd12_8; ;,DSP281x_PieVect.h,23,PIE中断向量表在.cmd文件的地址定位,DSP281x_GlobalVariableDefs.c,#pragma DATA_SECTION(PieVectTable,“Pie

9、VectTableFile“); struct PIE_VECT_TABLE PieVectTable;,DSP281x_Headers_nonBIOS.cmd,MEMORY PAGE 0: /* 程序存储器 */ PAGE 1: /* 数据存储器 */ DEV_EMU : origin = 0x000880, length = 0x000180 PIE_VECT : origin = 0x000D00, length = 0x000100 SECTIONS PieVectTableFile : PIE_VECT, PAGE = 1 ,24,DSP F2812的C语言预编译命令 #pragma

10、,C/C+客体定位到数据命名段的预编译命令 #pragma格式为: C语言格式: #pragma DATA_SECTION ( symbol , “ section name “ ); symbol:表示C的客体 C+语言格式: #pragma DATA_SECTION (“ section name ” ); 语法功能:为下一个C+声明的symbol定位到数据命名段 客体定位到数据命名段目的:在.cmd文件中为该数据命名段( section name)分配与系统默认数据段分开的地址空间。 若没有#pragma DATA_SECTION预编译命令,则C/C+编译器就无法将C/C+函数以外声明的

11、客体定位到用户命名数据段!,25,用户命名数据段的定位,.bss是系统默认未初始化数据段。C/C+编译源代码时,自动为全局变量或静态变量创建.bss段。而函数内部的局部变量使用堆栈段.stack。 .stack系统默认堆栈段。C/C+编译器自动创建的一定空间容量软件堆栈。 C/C+编译器不能自动创建.data段!对于需要定位到系统默认初始化数据段.data的数据表、结构变量等,用户可以用#pragma预编译命令指示C/C+编译器创建一个#pragma命令中所指定的命名数据段。 参考文献“spru514d.pdf”,26,PIE中断向量表的初始化,DSP281x_PieVect.c,const

12、struct PIE_VECT_TABLE PieVectTableInit = PIE_RESERVED, /为未定义的中断矢量保留的空间 PIE_RESERVED, T2PINT_ISR, / EVA中定时器T2的周期中断服务程序入口地址 T2CINT_ISR, / EVA中定时器T2的比较中断服务程序入口地址 rsvd_ISR, rsvd_ISR, ;,27,F2812的中断向量表初始化,DSP281x_PieVect.c,void InitPieVectTable(void) int16 i; Uint32 *Source = (void *) ,28,F2812中断向量表的赋值,in

13、terrupt void adc_isr(void) /此处为省略的函数体 return; ,main() EALLOW; PieVectTable.ADCINT = ,29/39,中断向量映射,28xx器件的中断向量表可以映射到5个不同的存储区域。只有PIE向量表可用于F28xx器件。 28xx器件的中断向量表受4种控制位控制: (1)VMAP控制位(ST1.bit3)上电复位VMAP=“1”。 VMAP=“1”控制CPU向量表映射到程序存储器高端地址:3F FFC0H3F FFFFH。 VMAP=“0”控制CPU向量表映射到程序存储器低端地址:00 0000H00 003F H。,30/3

14、9,(2)M0M1MAP (ST1.bit11)上电复位M0M1MAP =“1”。 M0M1MAP =“1”表示C28x模式。仅当 M0M1MAP =“0”,兼容C27x模式,才起作用,控制M0与M1块映射为程序空间互相交换。并设置SP指针复位默认值为 0x000。 (3)MP/MC(XINTCNF2 .bit 8)上电复位CPU从MP/MC引脚读入的状态送到MP/MC位。上电复位结束后,软件可修改MP/MC位。 (4)ENPIE(PIECTRL. bit 0)上电复位清ENPIE=“0”,禁止PIE,上电复位结束后,软件可置ENPIE=“1”。,31/39,5种向量映射表 4种控制位组合生成

15、,F2812模式下的CPU中断向量表由MP/MC引脚控制映射为两种向量表:BROM和XINTF向量表!,还可软件控制映射为PIE向量表!因为ENPIE由软件置1!,仅用于TI测试,M0,M1向量表不用时,作为一般RAM使用.,32/39,上电复位和Boot结束后 用户代码初始化切换到PIE向量表操作,上电复位结束时,复位信号强制VMAP =“1” and M0M1MAP= “1” and ENPIE=“1”,中断向量表映射由MP/MC引脚控制。当=“0”映射为BROM向量表。当=“1”时,控制映射为XINTIF向量表。 思考题:为什么在上电复位和boot引导结束后,要编写代码把中断向量表从BR

16、OM向量表或XINTIF向量表切换到PIE向量表呢?而且只要不再复位,中断向量表就保持映射为PIE向量表。一旦复位发生, PIE向量表总被禁止。,33/39,中断向量表映射选择过程,34/39,PIE向量表的结构,35/39,PIE向量表的结构,PIE向量表INT1INT12内容需要用户存放每个中断服务程序的地址。,36/39,PIE配置与控制存器,37/39,PIE配置与控制存器,38/39,PIE配置与控制存器,39/39,PIECTRL寄存器操作,CPU会从PIE中断向量表取出对应的中断向量ISR,从而转去执行中断子程序。 因此, PIECTRL寄存器读PIEVECT位域的应用较少,主要针对ENPIE进行操作!,PIECTRL的定义,位 名称 说明 151 PIEVECT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号