E:\ti\ccsv5\utils\bin\gmake -k all 'Building file: ../vec.asm' 'Invoking: C6000 Compiler' "E:/ti/ccsv5/tools/compiler/c6000_7.3.4/bin/cl6x" -mv6740 -g –define=c6748 –include_path="E:/ti/ccsv5/tools/compiler/c6000_7.3.4/include" –display_error_number –diag_warning=225 –abi=coffabi –preproc_with_compile –preproc_dependency="vec.pp" "../vec.asm" "../vec.asm", ERROR! : [E0000] Can't find end of 'VEC_ENTRY' macro definition starting on line 179 — Aborting!
就是在编译的时候出现上述的问题,描述说是 没找到VEC_ENTRY宏定义的结尾,请问这问题怎么解决,下面是我的中断向量表的vec.asm文件
里面描述的179行对应下面程序的28行(VEC_ENTRY .macro addr)
.global _vectors//全局标号,可以在别处使用. .global _c_int00 .global _vector1 .global _vector2 .global _vector3 .global _vector4 .global _vector5 .global _vector6 .global _vector7 .global _vector8 .global _vector9 .global _EDMA_ISR .global _vector11 .global _vector12 .global _vector13 .global _vector14 ; Hookup the TimerHandler ISR in main() 汇编中的C语言函数要加“_” .global _vector15 /*—————————————————————————— * Global symbols referenced in this file but defined somewhere else. * Remember that your interrupt service routines need to be referenced here. *——————————————————————————*/ .ref _c_int00//相当于 extern,在这里引用,在别处定义 /*—————————————————————————— * This is a macro that instantiates one entry in the interrupt service table. *——————————————————————————*/ //VEC_ENTRY .macro addr//定义中断向量入口地址 VEC_ENTRY .macro addr STW B0,*–B15//保存B0 内容,中断产生后执行的第一条指令 MVKL addr,B0 MVKH addr,B0//把地址装入 B0 B B0//跳转至 B0 中存储的地址 LDW *B15++,B0//恢复B0内容; 由于C6000流水线的原因,跳转后仍然可以执行多条指令 NOP 2 NOP NOP .endm /*—————————————————————————— * This is a dummy interrupt service routine used to initialize the IST. *——————————————————————————*/ _vec_dummy://未定义中断服务程序 B B3//其他没有定义的中断跳转至 B3 存储的地址 NOP 5 /*—————————————————————————— * This is the actual interrupt service table (IST). It is properly aligned and * is located in the subsection .text:vecs. This means if you don’t explicitly * specify this section in your linker command file, it will default and link * into the .text section. Remember to set the ISTP register to point to this * table. *——————————————————————————*/ .sect ".vecs"//定义段 .align 1024//1024 字节对边界对齐 _vectors: _vector0: VEC_ENTRY _c_int00 ;RESET 跳转到_c_int00 ,_c_int00是 c语言程序的入口 _vector1: VEC_ENTRY _vec_dummy ;NMI _vector2: VEC_ENTRY _vec_dummy ;RSVD _vector3: VEC_ENTRY _vec_dummy ; 所有未定义中断均跳转到同一地址 _vector4: VEC_ENTRY _vec_dummy _vector5: VEC_ENTRY _vec_dummy _vector6: VEC_ENTRY _vec_dummy _vector7: VEC_ENTRY _vec_dummy _vector8: VEC_ENTRY _vec_dummy _vector9: VEC_ENTRY _vec_dummy _vector10: VEC_ENTRY _EDMA_ISR _vector11: VEC_ENTRY _vec_dummy _vector12: VEC_ENTRY _vec_dummy _vector13: VEC_ENTRY _vec_dummy _vector14: VEC_ENTRY _vec_dummy ; Hookup the TimerHandler ISR in main() 定时中断中断向量 _vector15: VEC_ENTRY _vec_dummy
Shine:
试试.endm 不要顶格写。