cancel
Showing results for 
Search instead for 
Did you mean: 

CMSIS FFT problem in stm32cubeIDE

LLily.1
Associate II

I tried to compile and run arm_rfft_q15(STM32F030R8) .

In STM32CubeIDE, I'm using libarm_cortexM0l_math.a, the file is in 

STM32Cube_FW_F0_V1.11.0\Drivers\CMSIS\Lib\GCC, one of the functions 

I'm using is arm_rfft_q15. 

Build error: undefined reference to `arm_bitreversal_16'.The 

function that it is referring to is an assembly function found in 

the file arm_bitreversal2.s and I have made sure that file is in 

the source file.

I have added .h files which are in STM32Cube_FW_F0_V1.11.0\Drivers

\CMSIS\DSP\Include and the source files which are in 

STM32Cube_FW_F0_V1.11.0\Drivers\CMSIS\DSP\Source to my project .

Is there any solution?

4 REPLIES 4
Ozone
Lead II

I suppose you need to add the file arm_bitreversal2.S to your project.

It is usually found in ...\STM32Fxxx_DSP_StdPeriph_Lib_Vx.x.x\Libraries\CMSIS\DSP_Lib\Source\TransformFunctions\

Not sure about Cube, CubeIDE, and it's project management ...

I had added the file arm_bitreversal2.S to my project.

And ? Have you tried to translate it individually ?

Is your IDE picky with the file extension (*.s vs. *.S) ?

Have you checked the linker map, if symbols declared in arm_bitreversal2.S show up ?

I'm not a CubeIDE user.

Hi,

Yes ,you were right.I added a symbol , and it was OK. But now, there is still something wrong."region 'FLASH' overflowed by XXXX bytes".Maybe the arm_rfft_init_q15() took up a lot of flash .

arm_rfft_init_q15()

{

  /* Initialize the Twiddle coefficientA pointer */

  S->pTwiddleAReal = (q15_t *) realCoefAQ15;

  /* Initialize the Twiddle coefficientB pointer */

  S->pTwiddleBReal = (q15_t *) realCoefBQ15;

}

Will you give me any suggestion on this problem?