2023-07-12 02:44 AM
Hello everyone, I am currently doing a project that requires upto 16384 points of FFT(Fast Fourier Transform) . I found out that I can’t perform this number of FFT points using arm CMSIS DSP library since it is limited to 4096 point Max. Due to this I opted to use external library, Kiss_fft, because it is light weight. I tested this library with my computer by computing fft of some sampled signal and compare its result to that of python numpy fft library and the result are similar. So I proceed to use it on the micro-controller (STM32H723ZG). I performed the fft in the micro-controller using the kiss_fft library and transmit the result through USB com port to my computer and plot it in python. It works well up to 4098 point. If I try to perform 8192 point, its compiles successfully without any error but comm port is not being detected any more . So tried to debug the the code and I find this error "No source available for sqrt() at 0x80120dc" and it produces hardware fault. There seem to be enough memory for the FFT , I have attached the memories summary all well.
Best regard
Ukeme Patrick
2023-07-12 03:27 AM
Check the list file (or map?) to find out what's happening at 0x80120dc. These files are in the Release or Debug folder.
Also check:
- buffer sizes, maybe you forgot to increase some buffer sizes going from 4096 to 16384
- DMA transfer size is limited to 65535 items, maybe you hit that limit somewhere?
2023-07-12 06:34 AM
I can't find this memory address in those files . I had increased my heap and stack size as shown in "likage_mem.ng " image.
2023-07-12 06:40 AM
You've got linear blocks of 512KB to accomodated that?
Perhaps instead of shot-gunning this you look more deeply into what is actually failing.
Generate a listing, look at what code is at the failing address, perhaps library or related code you're binding without access to source. Work back the call-tree so you might understand how it got there from code you DO have source code for.