Неопределенная ссылка, при использовании подпрограммы 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 и не забудьте поставить галочку в очень полезном поле «включить», иначе это не сработает.