Witam,
Wlasnie przygladam sie FFT na Coetexa-M3 (stm32f103) i chce uzyc biblioteki napisanej przez Arm i Keil DSP CMSIS.
Bazujac na:
compiling system_ARMCM3.c... linking... Program Size: Code=8032 RO-data=12032 RW-data=8208 ZI-data=8296 ".\ARMCM3_debug\arm_fft_bin_example.axf" - 0 Error(s), 0 Warning(s). Build Time Elapsed: 00:00:00
Ten sam przyklad z biblioteka skompilowana pod arm-none-eabi gcc 7.2.0 zajmuje 85kB !!
Invoking: Cross ARM GNU Print Size arm-none-eabi-size --format=berkeley "stm32f103_dsp_cmsis5.elf" text data bss dec hex filename 82524 76 1320 83920 147d0 stm32f103_dsp_cmsis5.elf Finished building: stm32f103_dsp_cmsis5.siz
Czy ktos zana pood, dlaczego prosty przyklad:
arm_rfft_fast_instance_f32 S; arm_cfft_radix4_instance_f32 cfft;
static arm_rfft_instance_q15 Sq15;
volatile static uint32_t result ; result = arm_rfft_init_q15(&Sq15, 128, 0, 1);
for(int i=0; i < 128; i++){ q15InData[i] = (q15_t)(sin3x[i] * 2048.0); }
volatile static q15_t magnitude[128]; arm_rfft_q15(&Sq15, (q15_t*)q15InData, (q15_t*)fft_results);
arm_cmplx_mag_q15((q15_t*)fft_results, (q15_t*)magnitude, 128 );
kompiluje sie do 10x wiekszego rozmiaru przy GCC ? Wiedzialem ze GCC jest mniej zoptymalizowane, ale zeby 10x wiekszy kod generowac to juz przesada.
Marcin