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.

TMS320F2800157: DP寄存器未更新

Part Number: TMS320F2800157


代码运行过程中,发现赋值eobd_freeze_frame(eobd_freeze_frame 的地址为  0x8afc)变量时,将非变量区域的内容给更改了。DP未更新,什么情况下会出现改问题?怎么解决?

eobd_freeze_frame 的地址为  0x8afc,
dp = 0x22b(基地址是8AC0),
movw dp #0x22B             ;0x22b->dp
movb @0x3C,#FF,unc      ;0x8AC0+0x3C=0x8AFC,0xFF->0x8AFC
moviz r0h,#0x4283          ;0x4283->r0h
movb acc,#0x0                ;0->acc
moviz r2h,#0x4357          ;0x4357->r2h
mvb @0x3D,#0xFF,unc    ;0x8AC0+0x3D=0x8AFE,0xFF->0x8AFD
movxi r1h,#0xFF00,         ;0xFF00->r1h
movb @0x3E,#0xFF,unc  ;0xFF->0x8AFF
movxi r0h,#0x11EC         ;0x11EC->r0h
movl  @0x0,acc              ;acc->0x8AC0,实际想更新0x8B00,由于DP的值,更新了8AC0的值
后续汇编均更新0x8AC0后的内容。执行上述代码的时候会把8AC0的内容覆盖掉