Other Parts Discussed in Thread: TMS320C6457
platform:tms320c6457
I announce and define an interrupt service table in Vectors.asm, and in main.c, i announce it by extern again, after this i set ISTP by this IST, but it report a error when compiling, it said:
unresolved symbol _vectors, first referenced in ./Source/Main.obj
So my question is: where is wrong?
my program is as follow:
.global_vectors
.global_c_int00
.global_vector1
.global_vector2
.global_vector3
.global_c_int04
.global_vector5
.global_vector6
.global_vector7
.global_vector8
.global_vector9
.global_vector10
.global_vector11
.global_vector12
.global_vector13
.global_vector14
.global_vector15
.ref _c_int00
.ref _c_int04 ;ref the function defined in C file
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 ;
_vector3: VEC_ENTRY _vec_dummy ;
_vector4: VEC_ENTRY _c_int04 ;
_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 _vec_dummy ;
_vector11: VEC_ENTRY _vec_dummy ;
_vector12: VEC_ENTRY _vec_dummy ;
_vector13: VEC_ENTRY _vec_dummy ;
_vector14: VEC_ENTRY _vec_dummy ;
_vector15: VEC_ENTRY _vec_dummy ;
extern cregister volatile unsigned int ISTP;
extern far void vectors(void);
void main(void)
{
ISTP = (unsigned int)(&vectors);
}
MEMORY
{
VECTORS: o = 0x00800000 l = 0x00000400 /*vectors*/
L2RAM: o = 0x00800400 l = 0x001FFC00 /* 2MB L2 Internal SRAM */
L1PRAM: o = 0x00E00000 l = 0x00008000 /* 32kB L1 Program SRAM/CACHE */
L1DRAM: o = 0x00F00000 l = 0x00008000 /* 32kB L1 Data SRAM/CACHE */
EMIFA_CE2: o = 0xA0000000 l = 0x00800000 /* 8MB EMIFA CE2 */
EMIFA_CE3: o = 0xB0000000 l = 0x00800000 /* 8MB EMIFA CE2 */
EMIFA_CE4: o = 0xC0000000 l = 0x00800000 /* 8MB EMIFA CE2 */
EMIFA_CE5: o = 0xD0000000 l = 0x00800000 /* 8MB EMIFA CE2 */
DDR2_CE0: o = 0xE0000000 l = 0x20000000 /* 512MB EMIFB CE0 */
}