uc/os-III 上下文切换时核心寄存器布局错误

Wrong core register layout when context switching in uc/os-III

uC/OS-III 说:

When calling OSTaskCreate(), uC/OS-III initializes the top of the task's stack with a copy of the CPU register in the same stacking order as if they were all saved at the beginning of an ISR.

这是 arm 完整的 ARM 寄存器集。

仅供参考:我使用的是基于 v7 架构的 cortex-a8,但我相信 v7 内核的寄存器布局与下图相同 这是执行 OSTaskCreate 语句之前的调试信息: 这是执行 OSTaskCreate 语句后的调试信息: 很明显,堆栈保存的这些值与核心寄存器完全不同。

怎么可能?

这大概是你需要的引用,context switching,说明先保存SR/PC,再保存其他寄存器r0-r13。确定性的答案可以参考os_cpu_a.asm.

中的出处