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.

关于TMS320C6416T 中断向量表vectors.asm中堆栈保护的问题!

Other Parts Discussed in Thread: TMS320C6416T

    在TMS320C6416T 开发过程中在有大约%10产品(90%是正常的)在vectors.asm中执行入口地址跳转时导致PCI异常(产品采用PCI加载方式,确认DSP代码已正常完整加载到6416T中),根据调试情况可以确定与堆栈保护指令有关!跟踪调试发现出现问题的原因时在执行_c_int00跳转时首先运行指令STW B0,*--B15(该指令在6416T地址0位置),而这里的B15即是堆栈指针SP,此时SP的值为0x410f0121或者0x410b0021等值(该值所在地址区域根据手册显示为保留区域),在正常板卡上SP指针的值是 0xd7fefef6(也是保留空间)。vectors.asm文件内容附后,现有以下问题:

1、为什么采用堆栈保护会导致PCI异常?

2、在程序最开始时,堆栈指针SP时如何分配的?同是保留空间,为何分配在0x40000000区域时会异常而分配在0Xd0000000区域时,又正常!

3、这种现象只出现在小部分产品上,是什么原因呢?

具体的vectors.asm内容如下

*Vectors_poll.asm Vector file for polling
.global _vectors
.global _c_int00
.global _vector0
.global _vector1
.global _vector2
.global _vector3
.global _vector4
.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 ;entry address

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 ".vectors"
.align 1024

_vectors:
_vector0: VEC_ENTRY _c_int00 ;RESET
_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 _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