您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> TI专栏 >> TI C6000 >> TMS320C64x DSP >> 正文
  C6000的vectors.asm文件分析           ★★★ 【字体:
C6000的vectors.asm文件分析
作者:mobilefo…    文章来源:mobilefone    点击数:    更新时间:2014-4-28    

macro分析:

  1. unused  .macro id  
  2.   
  3.         .global unused:id:  
  4. unused:id:  
  5.         b unused:id:    ; nested branches to block interrupts  
  6.         nop 4  
  7.         b unused:id:  
  8.         nop  
  9.         nop  
  10.         nop  
  11.         nop  
  12.         nop  
  13.   
  14.         .endm  

spru186q:TMS320C6000 Assembly Language Tools v 6.1

此外,build option中的-al选项可以得到asm文件的lst文件,可以查看完全展开后的结果。

例1:vectors.asm(DSP原理及其C编程开发技术 光盘\dsp\loop_intr)

  1. *Vectors_11.asm Vector file for interrupt-driven program  
  2.   
  3.             .ref        _c_int11    ;ISR used in C program  
  4.             .ref        _c_int00    ;entry address  
  5.         .sect       "vectors"   ;section for vectors  
  6. RESET_RST:  mvkl    .S2 _c_int00,B0 ;lower 16 bits --> B0  
  7.             mvkh    .S2     _c_int00,B0     ;upper 16 bits --> B0  
  8.             B   .S2 B0      ;branch to entry address  
  9.         NOP                     ;NOPs for remainder of FP  
  10.         NOP             ;to fill 0x20 Bytes  
  11.         NOP  
  12.         NOP  
  13.         NOP   
  14. NMI_RST:    .loop 8  
  15.         NOP             ;fill with 8 NOPs  
  16.         .endloop   
  17. RESV1:  .loop 8  
  18.         NOP                   
  19.         .endloop  
  20. RESV2:  .loop 8  
  21.         NOP               
  22.         .endloop  
  23. INT4:   .loop 8  
  24.         NOP                   
  25.         .endloop  
  26. INT5:   .loop 8  
  27.         NOP  
  28.         .endloop  
  29. INT6:   .loop 8  
  30.         NOP  
  31.         .endloop  
  32. INT7:       .loop 8  
  33.         NOP  
  34.         .endloop  
  35. INT8:   .loop 8  
  36.         NOP  
  37.         .endloop  
  38. INT9:       .loop 8  
  39.         NOP  
  40.         .endloop  
  41. INT10:  .loop 8  
  42.         NOP  
  43.         .endloop  
  44.   
  45. INT11:  b   _c_int11        ;branch to ISR  
  46.         .loop 7   
  47.         NOP  
  48.         .endloop  
  49.   
  50. INT12:  .loop 8  
  51.         NOP  
  52.         .endloop  
  53. INT13:  .loop 8  
  54.         NOP  
  55.         .endloop  
  56. INT14:  .loop 8  
  57.         NOP  
  58.         .endloop  
  59. INT15:  .loop 8  
  60.         NOP  
  61.         .endloop  


例2:vectors.asm(CCStudio_v3.3\tutorial\sim64xx\volume1)

  1. ;  
  2. ;  Copyright 2003 by Texas Instruments Incorporated.  
  3. ;  All rights reserved. Property of Texas Instruments Incorporated.  
  4. ;  Restricted rights to use, duplicate or disclose this code are  
  5. ;  granted through contract.  
  6. ;    
  7. ;  
  8. "@(#) DSP/BIOS 4.90.270 01-13-05 (barracuda-o07)"  
  9. ;  
  10. ;  ======== vectors.asm ========  
  11. ;  Plug in the entry point at RESET in the interrupt vector table  
  12. ;  
  13.   
  14. ;  
  15. ;  ======== unused ========  
  16. ;  plug inifinite loop -- with nested branches to  
  17. ;  disable interrupts -- for all undefined vectors  
  18. ;  
  19. unused  .macro id  
  20.   
  21.         .global unused:id:  
  22. unused:id:  
  23.         b unused:id:    ; nested branches to block interrupts  
  24.         nop 4  
  25.         b unused:id:  
  26.         nop  
  27.         nop  
  28.         nop  
  29.         nop  
  30.         nop  
  31.   
  32.         .endm  
  33.   
  34.         .sect ".vectors"  
  35.   
  36.         .ref _c_int00           ; C entry point  
  37.   
  38.         .align  32*8*4          ; must be aligned on 256 word boundary  
  39.   
  40. RESET:                          ; reset vector  
  41.         mvkl _c_int00,b0        ; load destination function address to b0  
  42.         mvkh _c_int00,b0  
  43.         b b0                    ; start branch to destination function  
  44.         mvc PCE1,b0             ; address of interrupt vectors  
  45.         mvc b0,ISTP             ; set table to point here  
  46.         nop 3                   ; fill delay slot  
  47.         nop  
  48.         nop  
  49.   
  50.         ;  
  51.         ;  plug unused interrupts with infinite loops to  
  52.         ;  catch stray interrupts  
  53.         ;  
  54.         unused 1  
  55.         unused 2  
  56.         unused 3  
  57.         unused 4  
  58.         unused 5  
  59.         unused 6  
  60.         unused 7  
  61.         unused 8  
  62.         unused 9  
  63.         unused 10  
  64.         unused 11  
  65.         unused 12  
  66.         unused 13  
  67.         unused 14  
  68.         unused 15  

PCE1:program counter(spru186q)

例3:vecs.asm(DEC6713_EDMA)

  1. *********************************************************************************  
  2. * vecs.asm  
  3. * Copyright 2003 by SEED Electronic Technology Ltd.  
  4. * All rights reserved. Property of SEED Electronic Technology Ltd.                          *  
  5. * Designed by:  Hongshuai.Li                                                                *  
  6. *********************************************************************************  
  7.   
  8. *------------------------------------------------------------------------------  
  9. * Global symbols defined here and exported out of this file  
  10. *------------------------------------------------------------------------------  
  11.    .global _vectors  
  12.    .global _c_int00  
  13.    .global _vector1  
  14.    .global _vector2  
  15.    .global _vector3  
  16.    .global _vector4  
  17.    .global _vector5  
  18.    .global _vector6  
  19.    .global _vector7  
  20.    .global _c_int08  ; Hookup the c_int08 ISR in main()  
  21.    .global _vector9     
  22.    .global _vector10   
  23.    .global _vector11     
  24.    .global _vector12    
  25.    .global _vector13     
  26.    .global _vector14     
  27.    .global _vector15     
  28.   
  29. *------------------------------------------------------------------------------  
  30. * Global symbols referenced in this file but defined somewhere else.   
  31. * Remember that your interrupt service routines need to be referenced here.  
  32. *------------------------------------------------------------------------------  
  33.    .ref _c_int00  
  34.   
  35. *------------------------------------------------------------------------------  
  36. * This is a macro that instantiates one entry in the interrupt service table.  
  37. *------------------------------------------------------------------------------  
  38. VEC_ENTRY .macro addr  
  39.     STW   B0,*--B15  
  40.     MVKL  addr,B0  
  41.     MVKH  addr,B0  
  42.     B     B0  
  43.     LDW   *B15++,B0  
  44.     NOP   2  
  45.     NOP     
  46.     NOP     
  47.    .endm  
  48.   
  49.   
  50. *------------------------------------------------------------------------------  
  51. * This is a dummy interrupt service routine used to initialize the IST.  
  52. *------------------------------------------------------------------------------  
  53. _vec_dummy:  
  54.   B    B3  
  55.   NOP  5  
  56.   
  57. *------------------------------------------------------------------------------  
  58. * This is the actual interrupt service table (IST). It is properly aligned and  
  59. * is located in the subsection .text:vecs. This means if you don't explicitly  
  60. * specify this section in your linker command file, it will default and link  
  61. * into the .text section. Remember to set the ISTP register to point to this  
  62. * table.  
  63. *------------------------------------------------------------------------------  
  64.  .sect ".text:vecs"  
  65.  .align 1024  
  66.   
  67. _vectors:  
  68. _vector0:   VEC_ENTRY _c_int00    ;RESET  
  69. _vector1:   VEC_ENTRY _vec_dummy  ;NMI  
  70. _vector2:   VEC_ENTRY _vec_dummy  ;RSVD  
  71. _vector3:   VEC_ENTRY _vec_dummy  
  72. _vector4:   VEC_ENTRY _vec_dummy  
  73. _vector5:   VEC_ENTRY _vec_dummy  
  74. _vector6:   VEC_ENTRY _vec_dummy  
  75. _vector7:   VEC_ENTRY _vec_dummy  
  76. _vector8:   VEC_ENTRY _c_int08    ; Hookup the c_int08 ISR in main()   
  77. _vector9:   VEC_ENTRY _vec_dummy  
  78. _vector10:  VEC_ENTRY _vec_dummy  
  79. _vector11:  VEC_ENTRY _vec_dummy  
  80. _vector12:  VEC_ENTRY _vec_dummy  
  81. _vector13:  VEC_ENTRY _vec_dummy  
  82. _vector14:  VEC_ENTRY _vec_dummy  
  83. _vector15:  VEC_ENTRY _vec_dummy  
  84.   
  85. *------------------------------------------------------------------------------  
  86.   
  87.   
  88. ********************************************************************************  
  89. * End of vecs.asm  
  90. ********************************************************************************  

注:B3 寄存器在C6000用于存储函数返回的地址。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    C6000系列之C6455 DSP的EMIF…
    基于C6000 DSP BIOS Link的中…
    在TI DSP开发板中烧写Flash程…
    C6000系列DSP的EMIFA接口
    C6000系列DSP的中断系统
    C6000系列DSP的GPIO模块
    基于Davinci达芬奇系列DM644…
    基于Davinci系列DSP DM6446的…
    基于Gstreamer的TI DSP视频处…
    C6000的线性汇编--格式,用法…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2