我们将 arm9 与 ucos 一起使用。通用移植功能的OS_CPU_ARM_ExceptHndlr_BrkTask
最后一个工具在我们的系统中有奇怪的行为。
Instrument: LDMFD SP!,{R0-R12,LR,PC}^
假设 SP 为 0x10002000,后面的 15 个 DWORD(将被复制到 R0-R12、LR、PC)的值从 1 到 15。我们发现 PC(R15)发生了变化并跳转到 15,但 SP (R13) 被更改为一个奇怪的值(远离堆栈内存空间的地址)。我预计它会变成 0x1000203C (0x10002000+4*15)。
为什么R13会这样改?