总结:
在生成任务时,如果在任务中使用浮点计算,一定需要将任务的标志VX_FP_TASK设置,否则将会出错,主要是在其他任务中出现0/0错误
产生原因:
当没有设置浮点计算标识VX_FP_TASK时,在进入任务时没有保存浮点寄存器值,这样在任务中进行浮点运算将破坏了浮点寄存器的内容,而在任务退出后,浮点寄存器不能恢复,造成其他任务在进行浮点计算时出现浮点运算错误。
通常,任务选项里面用得最多的是VX_FP_TASK选项,这是为代码里面包含有浮点运算的任务弄的一个选项,选用这个选项VxWorks进行任务切换的时候,就会进行保存和恢复硬件浮点寄存器的操作(或是软件模拟的浮点库的操作),通常为了可靠起见,应用程序类任务(非驱动)都使用这个选项(当然,具体用不用自己要评估,如果自己很清楚里面不包含浮点运算,就没有必要了)。
修改办法:
在创建任务时,设置VX_FP_TASK标识
2、在从硬件或者其他软件任务获取浮点数值时,一定需要确认入口的数值合法,否则如果一些非法数值将造成浮点计算溢出,从而产生浮点溢出错误;
产生原因:
输入的浮点数非法范围,进行浮点计算将溢出;
规避办法:
在进行浮点数入口出进行数值合法性判断,对于非法值进行预处理;