馒头弟 发表于 2018-8-27 16:41:59

大树树 发表于 2018-8-25 09:45
昨天调试发现计算的时候关中断就不出错了。
但按道理讲创建任务时候加了OS_OPT_TASK_SAVE_FP选项的,可结 ...

计算耗时多少啊,关中断计算完再开→_→

大树树 发表于 2018-8-27 19:58:46

安 发表于 2018-8-27 10:13
楼主的看一下是否增加了.s的代码,我以前用到float时,会发生死机的情况。
; Reset handler
Reset_Handler...

这个我看了下是有的:),目前没有因为计算死机,就是数据会错误

大树树 发表于 2018-8-27 19:59:26

党国特派员 发表于 2018-8-27 10:39
在任务初始化(OSTaskStkInit)的时候,跟一下。看浮点寄存器有没有入栈。

好的,我试试看,谢谢

stm1024 发表于 2018-8-27 21:03:41

有没有可能是你的计算步骤太长了,例如
q_3*powf(traj_PATH_x,3)+ q_4*powf(traj_PATH_x,4)+q_5 *powf(traj_PATH_x,5);
只算powf的时候就被中断打断了然后切换到了其他地方?
相当于你的操作不是原子性的……?但是理论上来说,及时打断了也能恢复,但是被打断的时候,寄存器是否有被中断函数覆写?

大树树 发表于 2018-8-28 07:44:59

stm1024 发表于 2018-8-27 21:03
有没有可能是你的计算步骤太长了,例如
q_3*powf(traj_PATH_x,3)+ q_4*powf(traj_PATH_x,4)+q_5 *powf( ...

UCOS按正常来讲应该会将浮点寄存器的值入栈的,但感觉上没有正常入栈导致的问题。

wangweili1978 发表于 2018-8-28 11:43:55

根据你所说的错误描述,很可能是任务切换时浮点寄存器数据破坏了。
看下汇编代码,有没有使用S16-s31以上的寄存器。如果有的话,有可能就是s16-s31这几个寄存器没有入栈。

大树树 发表于 2018-8-30 07:58:48

党国特派员 发表于 2018-8-27 10:39
在任务初始化(OSTaskStkInit)的时候,跟一下。看浮点寄存器有没有入栈。

查看是否入栈是要看汇编执行的情况吗?

大树树 发表于 2018-8-30 08:00:11

wangweili1978 发表于 2018-8-28 11:43
根据你所说的错误描述,很可能是任务切换时浮点寄存器数据破坏了。
看下汇编代码,有没有使用S16-s31以上 ...

不太会这些操作,有没有相关的资料教程之类的,求大侠分享

zhwd102198 发表于 2018-9-14 11:38:42

你好,问题解决了吗?我得也有这问题, ucos iii 浮点出现问题,底层计算没什么问题,我在显示时偶尔会出错,此时底层变量没有问题,显示形参传给函数后 有时会出错,数据变了,想不通问题

小黑111 发表于 2018-9-14 23:13:09

http://www.openedv.com/forum.php?mod=viewthread&tid=277751
页: 1 [2] 3
查看完整版本: F767板子使用UCOSIII+FPU出现浮点运算错误的问题