lixin91985 发表于 2017-9-22 21:22:18

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:35

M0,加上频率只有36M,感觉慢一些正常,慢8倍就不知道正常不了

XIVN1987 发表于 2017-9-23 00:10:08

做DSP还是用M4比较好

wx85105157 发表于 2017-9-23 11:17:29

大傻师 发表于 2017-9-22 23:12
M0,加上频率只有36M,感觉慢一些正常,慢8倍就不知道正常不了

正常,,,因为一些运算指令没有,,,要靠其他多个指令组合实现。。。

lixin91985 发表于 2017-9-24 19:30:55

问题是 CYPRESS的芯片在进行FFT运算,还需要关闭全局中断,不然直接200MS以上。103我都是不关全局中断的。systick都是跑1Khz。。

大傻师 发表于 2017-9-25 13:49:58

本帖最后由 大傻师 于 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:27

大傻师 发表于 2017-9-25 13:49
关全局中断80,不关200,粗略算一下的话,200ms里面有60%的时间用在sysclk上了- -
剩下百分之40的时间给 ...

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

应该M3的指令多很多,

大傻师 发表于 2017-9-25 18:49:10

https://blogspot.tenettech.com/cortex-m0-vs-cortex-m3.html
这里说的性能差距也就是百分之50的样子。
M3跟M0好像指令集是一样的,M4才带点DSP相关的指令集。

armstrong 发表于 2017-9-26 08:25:41

本帖最后由 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:07

目前已经优化到10MS.CYPRESS的程序编写完全靠猜。

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

目前还有ADC+DMA已经WDT的指定时间延时没有搞定。有成功经验的指导一下。。
官方的程序 简直就是一个垃圾。
页: [1]
查看完整版本: arm_cfft_fast_init_f32编译 flash占用达80K.我震惊了