VxWorks开发问题记录-SPE问题
/ vxworks最近使用VxWorks系统进行开发,由于对系统不熟悉,遇到不少问题。VxWorks资料也比较少,只能靠自己摸索。这次遇到的是SPE,即浮点指令问题。错误信息见下图。
SPE unavailable exception
Exception current instruction address: 0x04a9cb4c
Machine Status Register: 0x00029230
condition Register: 0x0000000
Task: 0x6248010 "tTestTaskName"
0x6248010 (tTestTaskName): task 0x6248010 has had a failure and has been stopped.
0x6248010 (tTestTaskName): The task has been terminated because it triggered an exception that raised the signal 4.
代码很简单,创建了一个定时器和一个任务,定时器周期性释放信号量,任务获取信号量后只有一条赋值运算,如下图所示。
程序运行后就会SPE报错。
查询过VxWorks相关资料后发现,VxWorks任务创建时默认不支持浮点运算,需要手动配置。下图是我的任务创建。
红圈为任务创建选项,如果任务内有浮点运算,则该选项需要配置为VX_FP_TASK。我用的VxWorks系统版本为6.9,不知道其他版本是不是也这样。