Неопределенная ссылка, при использовании подпрограммы fft из библиотеки cmsis

Я пытаюсь использовать функции FFT в моем коде приложения для частиц-фотонов. Мне удалось связать мою библиотеку с предварительно собранной библиотекой cmsis для Cortex M3. Однако, когда я вызываю фактическую функцию FFT:

arm_rfft_q31( &rfftStruct, buffer, buffer); // in-place fft 

Сбой сборки с неопределенной ссылкой:

/u/susom/cmsis-integ/CMSIS/Lib/libarm_cortexM3l_math.a(arm_cfft_q31.o): In function `arm_cfft_q31':
/u/susom/cmsis-integ/CMSIS/DSP_Lib/TransformFunctions/arm_cfft_q31.c:139: undefined reference to `arm_bitreversal_32'

Arm_bitreversal_32 - это подпрограмма, реализованная в сборке, введите описание ссылки здесь

Любая идея относительно того, как преодолеть эту проблему.

1 ответ

В модальных окнах проекта есть две записи библиотеки (доступно только в том случае, если у вас есть проект, выбранный в eclipse, тогда вы можете это сделать из свойств проекта меню).

Один из них вроде косметический. Вам нужен тот, который находится в стадии сборки в разделе компоновщика.

Eclipse, кажется, иногда случайно удаляет эту запись, что мягко говоря крайне бесполезно.

откройте свойства проекта -> Сборка C / C++ -> Настройки -> MCU GCC Linker -> Библиотеки:

Добавляем библиотеку (верхнюю)arm_cortexM4lf_math

не помещайте ".a" в конец или "lib" в начало (можно было бы подумать, что они охраняют это регулярным выражением, но нет) Путь: что-то вроде этого "${workspace_loc: / ${ProjName} / Промежуточное ПО / ST / ARM / DSP / Lib}"

Кстати: используйте CUBEMX для загрузки в библиотеки DSP и не забудьте поставить галочку в очень полезном поле «включить», иначе это не сработает.

Другие вопросы по тегам