浮点异常情况(VX_FP_TASK) .

来源:互联网 发布:do178b 软件 编辑:程序博客网 时间:2024/06/05 20:02

 

总结:

    在生成任务时,如果在任务中使用浮点计算,一定需要将任务的标志VX_FP_TASK设置,否则将会出错,主要是在其他任务中出现0/0错误

产生原因:

      当没有设置浮点计算标识VX_FP_TASK时,在进入任务时没有保存浮点寄存器值,这样在任务中进行浮点运算将破坏了浮点寄存器的内容,而在任务退出后,浮点寄存器不能恢复,造成其他任务在进行浮点计算时出现浮点运算错误

     通常,任务选项里面用得最多的是VX_FP_TASK选项,这是为代码里面包含有浮点运算的任务弄的一个选项,选用这个选项VxWorks进行任务切换的时候,就会进行保存和恢复硬件浮点寄存器的操作(或是软件模拟的浮点库的操作),通常为了可靠起见,应用程序类任务(非驱动)都使用这个选项(当然,具体用不用自己要评估,如果自己很清楚里面不包含浮点运算,就没有必要了)。

 

修改办法:

    在创建任务时,设置VX_FP_TASK标识

 

2、在从硬件或者其他软件任务获取浮点数值时,一定需要确认入口的数值合法,否则如果一些非法数值将造成浮点计算溢出,从而产生浮点溢出错误;

产生原因:

      输入的浮点数非法范围,进行浮点计算将溢出;

规避办法:

      在进行浮点数入口出进行数值合法性判断,对于非法值进行预处理;