野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6197|回复: 6

[freertos] 任务中出现浮点数系统就会卡死

[复制链接]
发表于 2020-11-11 18:43:35 | 显示全部楼层 |阅读模式
        移植freeRTOS到STM32F407的板子上,基于DP83848的网口通信也跑通了,然后现在就是要把ADC采集到的数据进行处理之后再通过网口传到PC;就在原基础上又加了个数据处理的任务,具体流程:DMA数据传输完成产生中断(ADC数据接收完成),释放一个信号量,然后在数据处理任务中获取信号量,若为pdTURE,就开始处理。这边一涉及浮点数,就会卡死,全部注释掉,只留一个浮点数赋值都不行;感觉也不是栈空间不足,分配了30*128。以为把网口调通了就完事了的,没想到卡在这了,请各位大神指导!!!
回复

使用道具 举报

发表于 2020-11-12 17:54:25 | 显示全部楼层
1. 线程栈要8字节对齐。 https://gitee.com/rtthread/rt-th ... x-m4/cpuport.c#L150
2. 用了浮点,线程栈要加大至少128字节。
3. 系统移植的线程切换部分,要对浮点寄存器做保存和切换。
回复 支持 反对

使用道具 举报

发表于 2020-11-12 18:12:14 | 显示全部楼层
freeRTOS 我不太清楚,但是我以前移植ucosiii 的时候,也是这个情况,一使用浮点数就进入硬件中断,后面发现是移植后有两个函数有问题

可以参考一下我以前出问题时候写的帖子,帖子最下面还有相关问题的链接

http://www.openedv.com/forum.php ... d=299896&extra=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 18:59:56 | 显示全部楼层
aozima 发表于 2020-11-12 17:54
1. 线程栈要8字节对齐。 https://gitee.com/rtthread/rt-thread/blob/gitee_master/libcpu/arm/cortex-m4/c ...

感谢指导,前面两条我应该都注意到了,第三点可能是我移植系统可能有点问题,楼下的也提示了,可能移植的系统对于浮点寄存器的出入栈处理有些问题,我再研究一下,再次感谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 19:01:08 | 显示全部楼层
tao_oYMYe 发表于 2020-11-12 18:12
freeRTOS 我不太清楚,但是我以前移植ucosiii 的时候,也是这个情况,一使用浮点数就进入硬件中断,后面发 ...

好的,我再换个版本移植试下,感谢指导!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-19 22:48:44 | 显示全部楼层
换了几个版本还是不行啊,进一步锁定了问题,涉及全局的浮点变量系统会卡死,而局部变量不会出问题,有没有大佬指导一下啊!!!
回复 支持 反对

使用道具 举报

发表于 2021-3-19 08:57:37 | 显示全部楼层
能不能把你的代码,用伪代码表示一下,我用f429测试一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-21 08:53 , Processed in 0.039262 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表