This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于6748中断向量表



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