TI中文支持网
TI专业的中文技术问题搜集分享网站

编写TMS320F28377D二次BootLoader时,把boot28.inc的初始化代码复制到DSP2833x_CodeStartBranch.asm中,陷入死循环

如题,陷入死循环代码为

LOOP: MOVB AH,#0 ; zero out upper addr bits

PREAD AL,*XAR7 ; load address of variable to be inited

ADDB XAR7,#1 ; point to initialization data B

GET_DATA,NTC ; get data if variable is not far

CLRC TC ; reset TC bit used as far flag

PREAD AH,*XAR7 ; otherwise, get hi bits of 22-bit addr

ADDB XAR7,#1

GET_DATA:

MOVL XAR6,ACC ; address

RPT AR1 ; repeat length + 1 times

|| PREAD *XAR6++,*XAR7 ; copy data from table to memory

MOVL ACC,XAR7 ; using ACC as temp, point

XAR7 to ADD ACC,AR1 ; next cinit record since

PREAD ADDB ACC,#1 ; doesn't change value of XAR7.

MOVL XAR7,ACC

START: PREAD AL,*XAR7 ; load length

B GET_ADDR,GEQ ; a length < 0 denotes far data

NEG AL ; negate value to get real length

SETC TC ; flag that the address field is 32-bits

GET_ADDR: MOVZ AR1,AL ; copy length value to loop register

ADDB XAR7,#1 ; point to address field

BANZ LOOP,AR1–

如上代码显示跳出LOOP循环的条件是AR1为0,但是在GET_ADDR: MOVZ AR1,AL这一行代码中一直给AR1赋值为2,导致AR1一直处于大于0的状态。

疑问是:在以前使用自己写的测试程序没有出现过这种情况,在最近移植到公司程序时出现了这种情况

陷入死循环现象:在使用仿真器在线重启时使用CPU restart能够正常运行,在掉电重启时就会直接进入死循环

猜想:是否是在掉电重启时,一部分代码没有运行在RAM中?导致初始化一直不成功????

Susan Yang:

请问“把boot28.inc的初始化代码复制到DSP2833x_CodeStartBranch.asm中”

为何要将377的复制到2833x的asm内?

若是可以的话,请介绍一下您现在要实现的流程,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » 编写TMS320F28377D二次BootLoader时,把boot28.inc的初始化代码复制到DSP2833x_CodeStartBranch.asm中,陷入死循环
分享到: 更多 (0)