cortex-m4相对比cortex-m3,在线程上下文切换中,主要增加了FPU寄存器,总共需要保存34个寄存器,合计136byte。
因此原来在cortex-m3上面运行的程序在cortex-m4f上面运行时需要增加至少136字节的栈空间。
在实际应用中,并不是每个任务都需要浮点运算。所以可以对其进行优化,只为需要使用FPU的线程保存FPU寄存器。
笔记:
当应用程序中使用了FPU后,CONTROL.FPCA会置位;
当进入中断ISR以后,会清除CONTROL.FPCA,并在LR的第4位反应CONTROL.FPCA的状态;
当退出中断ISR时,也会根据LR的第4位来更新CONTROL.FPCA。
因此,在线程上下文切换中:
保存原线程时,根据LR的第4位即可判断应用程序是否使用了FPU,并决定是否要保存FPU的寄存器;
切出新线程时,判断新的线程是否有使用FPU,并更新LR的第4位,以保存新的线程能正确运行。
查看更多