搜索
bottom↓
回复: 18

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

[复制链接]
(10659079)

出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。这个运算任务已经设置为任务中的最高优先级。其他任务都是偶发性的极短时间的任务,而且因为优先级的原因,其他任务都不执行。

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

出0入4汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

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

出0入0汤圆

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

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

出0入0汤圆

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

出0入0汤圆

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

出0入10汤圆

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

出0入0汤圆

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

出0入20汤圆

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

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

出0入0汤圆

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

出0入101汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入17汤圆

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

出0入0汤圆

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

继续运行   
(9109428)

出0入0汤圆

发表于 2021-1-2 15:23:00 | 显示全部楼层
是时候换一个更好的CPU了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-4-18 01:46

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

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