Неопределенная проблема библиотеки процессора ARM в C
При создании C-программы для микроконтроллера Infineon с использованием DAVE 4.4.2 (IDE на основе Eclipse) я получаю эту ошибку:
'Building target: mcu.elf'
main.c:(.text.ERU0_3_IRQHandler+0x696): undefined reference to `arm_mat_init_f32'
'Invoking: ARM-GCC C Linker'
collect2.exe: error: ld returned 1 exit status
Это упрощенный обзор моего кода.
#include <arm_math.h>
[other included libraries]
void my_function() {
arm_matrix_instance_f32 M;
float32_t zeros33[3][3] = {0};
arm_mat_init_f32( &M, 3, 3, &zeros33);
}
[other defined functions]
int main(void) {
my_function()
[other stuff]
}
Пока в шапке arm_math.h
Я вижу определение функции, которая называется неопределенной.
void arm_mat_init_f32(
arm_matrix_instance_f32 * S,
uint16_t nRows,
uint16_t nColumns,
float32_t * pData);
Я подозревал, что проблема могла заключаться в неправильном используемом типе данных или неправильном использовании указателей при передаче аргументов. Я пытался удалить &
перед матричными переменными, но безуспешно. Исходя из той же мысли, я также пытался использовать разные типы данных для определения матричных данных: float32_t
а также float
,
Просматривая различные предупреждения и информационные сообщения, я заметил одно рядом с arm_mat_init_f32
декларация Expected 'float32_t *' but argument is of type 'float32_t (*)[3][3]'
, Поэтому я также пытался передать адрес "нормальной" переменной float32_t zero = 0.0f
, и просто 0.0f
, Они оба по-прежнему приводили к сбою сборки из-за неопределенной функции.
Последнее замечание заключается в том, что если я щелкну правой кнопкой мыши вызов функции в моем коде и предложу "перейти к декларации", нужная функция найдена в нужном файле.
В чем может быть проблема?
1 ответ
При использовании DAVE решением проблемы является добавление приложения через Project/Add new APP. Затем выберите System/CMSIS_DSP и нажмите "Добавить". Программа должна быть полностью перестроена.
Таким образом, DAVE настраивает все необходимые переменные среды и ссылки так, чтобы arm_math
библиотека включена.