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
.
中的出处
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 内核的寄存器布局与下图相同
怎么可能?
这大概是你需要的引用,context switching,说明先保存SR/PC,再保存其他寄存器r0-r13。确定性的答案可以参考os_cpu_a.asm
.