UCOSIII内核版本是论坛里面最新的V3.07.03,硬件平台是STM32F4。
创建任务时有个选项OS_OPT_TASK_SAVE_FP /* Save the contents of any floating-point registers */字面上理解应该就是任务进行上下文切换时是否将浮点寄存器的内容保存到任务堆栈中,
于是饶有兴致的追踪这个选项的去向,发现在创建任务时赋值给了任务控制块的p_tcb->Opt,然而在上下文切换中并没有发现它的踪迹,不是得靠它来判断是否将浮点寄存器压栈吗?
再往下看,os_cpu_c.c中在任务切换的HOOK函数中有调用了浮点寄存器的压栈和出栈函数,如下:
#if (OS_CPU_ARM_FP_EN > 0u)
OS_CPU_FP_Reg_Push(OSTCBCurPtr->StkPtr); /* Push the FP registers of the current task. */
#endif
。。。。。。。
#if (OS_CPU_ARM_FP_EN > 0u)
OS_CPU_FP_Reg_Pop(OSTCBHighRdyPtr->StkPtr); /* Pop the FP registers of the highest ready task. */
#endif