My product is using M0+ core of MCU. And it has FFT and FIR process using CMSIS-DSP.
But I faced an issue for performance of these process. It cannot finish doing process within some period of system.
Is there any ideas or ways to improve performance?
It could not reduce data size for this process. This is because it affects product specification.
So is a Cortex-M0 really an appropriate choice for your application?
It is designed specifically for low power, low cost, etc - not for high performance!
Ponsuke606 said:Is there any ideas or ways to improve performance?
As always, the first step is to find where the bottleneck(s) is/are in your existing implementation.
Remember that the M0 has no floating-point hardware ...
EDIT
Found this diagram illustrating where the Cortex-M0 lies in the performance map:
https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/cortex-m-processors-in-dsp-applications-why-not
So it's right at the bottom!
Again - is a Cortex-M0 really the right choice for your application ... ?
Cortex-M0+ does not have "DSP-opcodes". So any of theses needed for FFT or FIR must be emulated.
So if you are stuck to Cortex-M0+ I recommend to learn assembly and start writing your FFT/FIR from scratch.
You are correct. This is product should use M4 or M33 of CPU.
Also floating-point calculation is very slow. Now I tried to Q16 form of real FFT.
But I faced issue of data scaling...
Thank you for your reply!
Thank you for your comment.
It was same idea I talked colleague in fun.
It may become product more bigger seller than I am developing one now. :D
But there is no other way to make it my desire.
People used to do FFTs and such on 8051s - so, if you really need to keep to the M0, you might want to start digging up some old code to see how people did these things in really constrained systems ...