现在从uCOS官网上下载了uCOSIII V3.08.01的源码,移植之后,不开启FPU进行浮点运算没问题,但是开启FPU进行浮点运算就会HardFault,参考硬汉的教程,修改CPU_STK *OSTaskStkInit()和OS_CPU_PendSVHandler都不行,而且这个版本的OS_CPU_PendSVHandler中已经判断是否开启硬件FPU和入栈了。下面是没有任何修改开启FPU时出现的情况,提示总线错误:Bus fault is caused by instruction access violation。打印的寄存器值
R0 : 00000000 R1 : 10000000 R2 : 1ffe0070 R3 : 0000001c
R12: 00000000 LR : 00006be5 PC : 3df93dd8 PSR: 01000000
最后发现,是在文件 os_core.c第483行的语句 CPU_INT_EN();
这个展开如下:
CPU_SR_Restore
CPSID I ; Cortex-M7 errata notice. See Note #2
MSR BASEPRI, R0
DSB
ISB
CPSIE I
BX LR
现在不知道如何处理,希望华大的原厂帮忙解决一下
|