electro-smith/libDaisy

Trouble linking CMSIS / using arm_rfft_fast_f32

malloyca opened this issue · 0 comments

Hello,

I've had a lot of trouble trying to link and use arm_rfft_fast_f32. The problem seems to be centered around the arm_bitreversal2.S file.

At first it wasn't linking, but I finally got things to compile by adding:
C_SOURCES = $(wildcard ../../libDaisy/Drivers/CMSIS/DSP/Source/*/*.c)
ASM_SOURCES = $(wildcard ../../libDaisy/Drivers/CMSIS/DSP/Source/*/*.s)
to the makefile and changing the filename to arm_bitreversal2.s since the makefile doesn't handle files with ".S" instead of ".s".

The program seems to compile successfully at this point, but nothing gets passed through the FFT/IFFT no matter what I do. Even a simple program like this in the audio callback will only pass audio through the right channel and there's nothing on the left.

for (size_t i = 0; i < size; i++){
	fft_buf_256[i] = in[0][i];
}
arm_rfft_fast_f32(&fft_256, fft_buf_256, fft_buff_256_inner, 0);
arm_rfft_fast_f32(&fft_256, fft_buff_256_inner, fft_buf_256, 1);

for (size_t i = 0; i < size; i++){
	out[0][i] = fft_buf_256[i];
	out[1][i] = in[1][i];
}

I'm declaring the FFT instance with:
arm_rfft_fast_instance_f32 fft_256;
and initializing with in main() with:
arm_rfft_fast_init_f32(&fft_256, 256);.

Am I missing something? Is there any reason why the CMSIS FFT shouldn't be working at this point? Could arm_bitreversal2.s not be building or linking correctly for some reason? I've not really use makefiles before so I admit that I'm taking tips from forums and trying to hack a solution together. I'm completely at a loss for what to try next to get this to work. Thank you for the help.