网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: TI德州中文网 >> 技术文库 >> C6000文章 >> C64X >> 文章正文
  TI C64X DSP中断向量表配置(硬件中断)           ★★★ 【字体:
TI C64X DSP中断向量表配置(硬件中断)
作者:A009    文章来源:本站原创    点击数:    更新时间:2007-4-19    

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_dummyJTAGRTDX中断

 

_vector10:      VEC_ENTRY _vec_dummyEMIF_SDRAM_Timer中断

 

_vector11:      VEC_ENTRY _vec_dummyMcBSP_0_Receive中断

 

_vector12:      VEC_ENTRY _vec_dummyMcBSP_1_Transmit中断

 

_vector13:      VEC_ENTRY _vec_dummyHost_Port_Host_to_DSP中断

 

_vector14:      VEC_ENTRY _vec_dummyTimer0中断

 

_vector15:      VEC_ENTRY _vec_dummyTimer1中断

 

 

3. C程序中指定定义的中断向量表,并且启用CPU中断功能

 

C程序中,用CSLIRQ模块来设置中断比较方便,在设置之前,需要外部链接上面的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中断服务了,其它硬件中断向量的配置同理。

欢迎点击进入:"61IC中国电子在线"官方网站     文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    C64X DSP EDMA/QDMA小结
    C64x+IMGLIB
    C64x+DSPLIB
    C64x+BEDSPLIB
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:德州中文 湘ICP备06016957号