Я пытаюсь запустить Kiss FFT (Kiss FFT github) на панели запуска MSP430FR6989. На данный момент я просто пытаюсь показать тест kiss_fftr здесь работать. У меня возникла проблема с kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem). Мой ввод (16, 0, NULL, NULL). Функция достигает этой точки в kiss_fftr.c и затем возвращает NULL из-за оператора !st if.
if (lenmem == NULL) {
st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded);
} else {
if (*lenmem >= memneeded)
st = (kiss_fftr_cfg) mem;
*lenmem = memneeded;
}
if (!st)
{
return NULL;
}
Malloc устанавливает st в NULL, поэтому ему не удалось выделить память. Я уверен, что в моем MCU достаточно памяти. Мое распределение памяти в CCS составляет 35% RAM (736/2048), 3% FRAM1 (1896/48000) и 28% FRAM2 (23144/81912).
Есть ли у кого-нибудь совет, как это исправить, или что я должен узнать, чтобы исправить это? Я не хочу искать неправильную кроличью нору, если проблема не в распределении памяти.
Что я пробовал: когда я пытаюсь запустить тестовый код, указанный в ссылке переполнения стека, и отправить выходной массив через UART, я не получаю вывода. Я проверил, правильно ли работает kiss_fft_alloc, сделав оператор if (st == NULL), который выдал бы KISS_FFT_ERROR. Ошибка возникла в точке, упомянутой выше, но я не могу понять, как исправить то, что malloc не может выделить память.
USE_SIMD
в KISS FFT. - person SleuthEye   schedule 02.07.2021USE_SIMD
не определено, тоKISS_FFT_MALLOC
должно сопоставляться со стандартным вызовомmalloc
. Я предлагаю попробовать воспроизвести проблему без KISS FFT на картинке, пытаясь выделить блок памяти аналогичного размера. - person SleuthEye   schedule 08.07.2021