amobbs.com 阿莫电子技术论坛

标题: arm_cfft_fast_init_f32编译 flash占用达80K.我震惊了 [打印本页]

作者: lixin91985    时间: 2017-9-22 21:22
标题: arm_cfft_fast_init_f32编译 flash占用达80K.我震惊了

以前一直使用arm_cfft_f32 不需要使用init函数。
因为是使用CY8C4247  跑36M. M0内核。

做fft运算,调用ARM 库。
一个运算数组初始化,就消耗80K flash空间。
随后测试其他的 基2 初始化,占用的空间也达到40K.

最后还是使用复数FFT运算,空间5K不到。就是RAM的空间大一点。

最狗血的是CY8C4247 这颗IC 做256点FFT,竟然需要80ms的时间。STM32F103才10ms

哪位有什么好的改进建议。


另外吐槽一下。CYPRESS的编译器真的难用,自动生成的库文件,一堆坑等着你跳,即使你知道自己跳进去了,还不能蹦出来。
作者: 大傻师    时间: 2017-9-22 23:12
M0,加上频率只有36M,感觉慢一些正常,慢8倍就不知道正常不了
作者: XIVN1987    时间: 2017-9-23 00:10
做DSP还是用M4比较好
作者: wx85105157    时间: 2017-9-23 11:17
大傻师 发表于 2017-9-22 23:12
M0,加上频率只有36M,感觉慢一些正常,慢8倍就不知道正常不了

正常,,,因为一些运算指令没有,,,要靠其他多个指令组合实现。。。
作者: lixin91985    时间: 2017-9-24 19:30
问题是 CYPRESS的芯片在进行FFT运算,还需要关闭全局中断,不然直接200MS以上。103我都是不关全局中断的。systick都是跑1Khz。。
作者: 大傻师    时间: 2017-9-25 13:49
本帖最后由 大傻师 于 2017-9-25 13:53 编辑
lixin91985 发表于 2017-9-24 19:30
问题是 CYPRESS的芯片在进行FFT运算,还需要关闭全局中断,不然直接200MS以上。103我都是不关全局中断的。s ...


关全局中断80,不关200,粗略算一下的话,200ms里面有60%的时间用在sysclk上了- -
剩下百分之40的时间给你干其他事情- -U确实不太够用。
作者: lixin91985    时间: 2017-9-25 18:14
大傻师 发表于 2017-9-25 13:49
关全局中断80,不关200,粗略算一下的话,200ms里面有60%的时间用在sysclk上了- -
剩下百分之40的时间给 ...

估计是中断 保护现场消耗太多的时间。MCU就去处理中断去了。

应该M3的指令多很多,
作者: 大傻师    时间: 2017-9-25 18:49
https://blogspot.tenettech.com/cortex-m0-vs-cortex-m3.html
这里说的性能差距也就是百分之50的样子。
M3跟M0好像指令集是一样的,M4才带点DSP相关的指令集。
作者: armstrong    时间: 2017-9-26 08:25
本帖最后由 armstrong 于 2017-9-26 08:28 编辑
大傻师 发表于 2017-9-25 18:49
https://blogspot.tenettech.com/cortex-m0-vs-cortex-m3.html
这里说的性能差距也就是百分之50的样子。
M3 ...


M0的指令集是M3的小子集;而且有些同样的指令,其功能还会被阉割。自己去查资料。
作者: lixin91985    时间: 2017-9-27 19:28
目前已经优化到10MS.  CYPRESS的程序编写  完全靠猜。

主时钟在一个不起眼的地方被2分频。

目前还有ADC+DMA  已经WDT的指定时间延时没有搞定。有成功经验的指导一下。。
官方的程序 简直就是一个垃圾。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4