搜索
bottom↓
回复: 18

请教下移植Freertos后出现运算速度下降的现象,大家有遇到过吗

[复制链接]

出0入0汤圆

发表于 2020-12-15 16:55:29 | 显示全部楼层 |阅读模式
请教一下STM32F103RCT6移植Freertos系统。
1、原先裸机前后台系统。采样ADC+DMA 10Kbps采样。采集256数据后DMA中断置位(也就是25.6ms)。  这256个数据经过计算(包含一些fft等算法)(运算时间大约32ms)获得结果。这样虽然超标了,满负荷运转,但是超的少,能接收。
2、移植了freertos。发现采样的256个数据运算(还是原先的函数,只是放在任务中运行)。运算时间竟然是54ms。这个运算任务已经设置为任务中的最高优先级。其他任务都是偶发性的极短时间的任务,而且因为优先级的原因,其他任务都不执行。

请问各位大神我需要往那个方向去查?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出30入42汤圆

发表于 2020-12-15 17:25:20 | 显示全部楼层
你现在数据采集没问题,而是采集到的数据计算完后超时,根本原因是CPU算力不够,所以你加个OS干嘛?加OS的作用就是及时给它分配时间让它得到处理,但你现在问题就是即便有时间了,计算也超时。你要的是换个速度更快的CPU。

出0入0汤圆

发表于 2020-12-15 17:39:12 | 显示全部楼层
加大FreeRTOS的任务切换间隔,让数据处理任务能在一个RTOS周期内完成。或是在数据处理前关闭FreeRTOS的任务切换,完成后再打开。

出100入143汤圆

发表于 2020-12-15 18:34:15 | 显示全部楼层
应该是1ms的滴答定时器中断导致的,计算之前关闭中断或者加长滴答时钟

出0入0汤圆

 楼主| 发表于 2020-12-15 18:57:44 | 显示全部楼层
PPS 发表于 2020-12-15 17:25
你现在数据采集没问题,而是采集到的数据计算完后超时,根本原因是CPU算力不够,所以你加个OS干嘛?加OS的 ...

你说的我知道,我就是想知道原因。

出0入0汤圆

 楼主| 发表于 2020-12-15 18:58:57 | 显示全部楼层
yzhu 发表于 2020-12-15 17:39
加大FreeRTOS的任务切换间隔,让数据处理任务能在一个RTOS周期内完成。或是在数据处理前关闭FreeRTOS的任务 ...

实际在任务执行期间没有其他任务执行,要说有也就是系统滴答时钟了。

出0入0汤圆

 楼主| 发表于 2020-12-15 19:00:17 | 显示全部楼层
zzh90513 发表于 2020-12-15 18:34
应该是1ms的滴答定时器中断导致的,计算之前关闭中断或者加长滴答时钟

1ms中断应该不至于吧,我观测的1ms滴答耗时也就8us。影响不至于这么大。而且原先裸机系统中我也有1ms定时器中断。用作系统时间。

出0入0汤圆

发表于 2020-12-15 19:41:42 来自手机 | 显示全部楼层
系统中的1ms定时器8us跑不完吧,还要查链表哪些操作。

出0入0汤圆

发表于 2020-12-15 19:42:42 来自手机 | 显示全部楼层
用系统只会变的更慢,用系统的目的是为了方便程序扩展和写复杂的功能。

出0入10汤圆

发表于 2020-12-15 19:58:44 来自手机 | 显示全部楼层
让CPU运行最快就是裸机,加上系统是方便管理最机的资源

出0入4汤圆

发表于 2020-12-15 20:11:32 来自手机 | 显示全部楼层
进栈出栈要时间的

出0入442汤圆

发表于 2020-12-15 21:01:38 来自手机 | 显示全部楼层
lingdianhao 发表于 2020-12-15 19:42
用系统只会变的更慢,用系统的目的是为了方便程序扩展和写复杂的功能。

还有功能复杂但实时性要求不高的地方。实时性强就只能果机跑,再高就只能fpga了(如高吞吐低延迟高带宽)。

出0入0汤圆

发表于 2021-1-1 09:52:50 | 显示全部楼层
应用场景不同,OS适合多功能,裸机要求实时性很高的

出100入101汤圆

发表于 2021-1-1 11:12:14 来自手机 | 显示全部楼层
不应该,看下有没有开启优先级调度

出0入0汤圆

发表于 2021-1-1 11:21:00 来自手机 | 显示全部楼层
没试过,不过看别人确实遇到过

出0入0汤圆

发表于 2021-1-2 01:42:29 | 显示全部楼层
dma中断中,用任务通知比信号量快。 顺便问个问题等高人回答,如果一个任务是运行态,再次被中断通知量唤醒,是重新运行还是继续运行?

出0入71汤圆

发表于 2021-1-2 11:58:24 | 显示全部楼层
看看优化级别是不是还是在O0,有时候简单事情容易搞忘

出0入0汤圆

发表于 2021-1-2 15:01:44 | 显示全部楼层
zack.bot 发表于 2021-1-2 01:42
dma中断中,用任务通知比信号量快。 顺便问个问题等高人回答,如果一个任务是运行态,再次被中断通知量唤醒 ...

继续运行   

出0入0汤圆

发表于 2021-1-2 15:23:00 | 显示全部楼层
是时候换一个更好的CPU了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 21:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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