淄川吉祥广场烤肉:TI C64X DSP中断向量表的配置(硬件中断) zz
来源:百度文库 编辑:偶看新闻 时间:2024/05/07 20:22:56
1. 编写中断服务例程在.c源文件中编写ISR函数c_intXX,用于中断处理,如:interrupt void c_intXX (void){ …;}注:对于硬件中断而言,XX = 00~15。2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量 首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如:MEMORY{ VECTORS: org = 00000000h, len = 00000400h L2SRAM: org = 00000400h, len = 00100000h SDRAM: org = 80000000h, len = 10000000h}SECTIONS{ .vecs :> VECTORS .data :> L2SRAM .text :> L2SRAM .switch :> L2SRAM .stack :> L2SRAM .bss :> L2SRAM .cinit :> L2SRAM .far :> L2SRAM .cio :> L2SRAM .const :> L2SRAM .sysmem :> SDRAM .tables :> L2SRAM } 然后建立一个.asm文件,用以配置中断向量表中的中断向量,我们需要声明一些全局变量,以便其他源文件可以引用这些变量或者引用其他源文件的变量,如: .global _vectors .global _c_int00 .global _vector1 .global _vector2 .global _vector3 .global _vector4 .global _vector5 .global _vector6 .global _vector7 .global _c_int08 ; 对应main()函数的c_int08中断服务例程(假设处理的是EDMA中断) .global _vector9 .global _vector10 .global _vector11 .global _vector12 .global _vector13 .global _vector14 .global _vector15 因为引用了rts的_c_int00中断,即RESET中断,因此需要引入这个符号: .ref _c_int00 为了把中断服务例程的地址,即中断向量插入到中断向量表中,可以定义一个宏:VEC_ENTRY .macro addr STW B0,*--B15 MVKL addr,B0 MVKH addr,B0 B B0 LDW *B15++,B0 NOP 2 NOP NOP .endm 为了初始化中断向量表中的中断向量,可以定义一个虚拟的中断向量:_vec_dummy: B B3 NOP 5 接下来就可以配置中断向量表了:.sect “.vecs”.align 1024_vectors:_vector0: VEC_ENTRY _c_int00 ;RESET中断_vector1: VEC_ENTRY _vec_dummy ;NMI不可屏蔽中断_vector2: VEC_ENTRY _vec_dummy ;保留中断1_vector3: VEC_ENTRY _vec_dummy ;保留中断2_vector4: VEC_ENTRY _vec_dummy ;外部中断INT4_vector5: VEC_ENTRY _vec_dummy ;外部中断INT5_vector6: VEC_ENTRY _vec_dummy ;外部中断INT6_vector7: VEC_ENTRY _vec_dummy ;外部中断INT7_vector8: VEC_ENTRY _c_int08 ; EDMA控制器中断EDMAINT,对应于c_int08 ISR_vector9: VEC_ENTRY _vec_dummy;JTAGRTDX中断_vector10: VEC_ENTRY _vec_dummy;EMIF_SDRAM_Timer中断_vector11: VEC_ENTRY _vec_dummy;McBSP_0_Receive中断_vector12: VEC_ENTRY _vec_dummy;McBSP_1_Transmit中断_vector13: VEC_ENTRY _vec_dummy;Host_Port_Host_to_DSP中断_vector14: VEC_ENTRY _vec_dummy;Timer0中断_vector15: VEC_ENTRY _vec_dummy;Timer1中断3. 在C程序中指定定义的中断向量表,并且启用CPU中断功能在C程序中,用CSL的IRQ模块来设置中断比较方便,在设置之前,需要外部链接上面的asm程序的中断向量表符号:extern far void vectors();//之所以为vectors,因为C编译器编译后自动改名其为_vectors引用了中断向量表之后,就可以设置中断了: IRQ_setVecs(vectors); //指向asm中定义的中断向量表 IRQ_nmiEnable(); IRQ_globalEnable(); IRQ_map(IRQ_EVT_EDMAINT, 8); //映射事件到指定的物理中断号 IRQ_reset(IRQ_EVT_EDMAINT);4.启动中断源,如EDMA控制器的中断至此,中断服务例程c_int8就可以为EDMAINT中断服务了,其它硬件中断向量的配置同理。在CCS里面,通过DSP/BIOS的配置,我们可以很方便的设置自己想要的对象,进行初始化,简化了很多底层的步骤。DSP/BIOS硬中断创建的一般步骤:1. DSP/BIOS->Scheduling->HWI->HWI_INT(x);
2. 在HWI_INT(X)属性的function中填入你要触发的中断处理,如_hwiFunc,并选中Dispatcher;
3. 开启硬中断对象:
IRQ_reset(IRQ_EVT_EXTINT5);
IRQ_enable(IRQ_EVT_EXTINT5);
4. 编写硬中断处理程序hwifunc();
void hwifunc(void){} 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/henhen2002/archive/2009/08/19/4464205.aspx
2. 在HWI_INT(X)属性的function中填入你要触发的中断处理,如_hwiFunc,并选中Dispatcher;
3. 开启硬中断对象:
IRQ_reset(IRQ_EVT_EXTINT5);
IRQ_enable(IRQ_EVT_EXTINT5);
4. 编写硬中断处理程序hwifunc();
void hwifunc(void){} 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/henhen2002/archive/2009/08/19/4464205.aspx
搞TI 的DSP 6000有前途吗????
某中断源的中断类型码为2AH,该中断源的中断服务入口地址为2000H:FF23H,试画出中断向量表图
为什么处理器采用中断运行机制?并且设置中断向量表?
8086中断类型号为40H的中断服务程序入口地址存放在中断向量表的起始地址是:
将中断类型码乘4,指向中断向量表中的中断处理子程序的入口地址,为什么要乘以4?
[汇编程序]输出一份中断向量表到屏幕或文件
cpu用什么方法在向量表中寻找中断向量?
请问TI公司的C5XXX和C6XXX系列DSP芯片在处理静态图像时差别大吗?
请问TI公司的C5XXX与C6XXXX系列DSP芯片在做静态图像处理时差别大吗?
什么是dsp的构架
DSP仿真器的作用
MP3的DSP是什么?
TI AMD的意思
数列+函数的ti
钛Ti的化合价
关于TI的问题
现金流量表的编制
现金流量表的问题
现金流量表的等式
余德成的《绩效量表》
现金流量表的编制
李科特量表的特点
现金流量表的问题。
德州的DSP的算法.