Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выделение памяти на c55
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Ravnoznachnost
Добрый день, возможно кто-то сталкивался с тем, что происходит у меня.

Код пишется на отладочной плате TMS320VC5510 DSK используется CCS v 2.12.07.
В Вижуал Линкере определено распределение памяти, выделен сегмент под кучу.
Выделение памяти осуществляется с использованием MEM_alloc. После вотрого вызова MEM_alloc резервируется не запрошенный объем памяти, а все что осталось в куче. Как с этим бороться? Возможно необходима какая то инициализация рабты с кучей, хотя в примерах и доках ничего подобного нет.

Еще замечена такая аномалия, в самом начале, даже если вызовов MEM_alloc не производилось 4 MADU уже под что то выделены, хотя может это так и должно быть.
evg123
Цитата(Ravnoznachnost @ Apr 23 2007, 12:58) *
Добрый день, возможно кто-то сталкивался с тем, что происходит у меня.

Код пишется на отладочной плате TMS320VC5510 DSK используется CCS v 2.12.07.
В Вижуал Линкере определено распределение памяти, выделен сегмент под кучу.
Выделение памяти осуществляется с использованием MEM_alloc. После вотрого вызова MEM_alloc резервируется не запрошенный объем памяти, а все что осталось в куче. Как с этим бороться? Возможно необходима какая то инициализация рабты с кучей, хотя в примерах и доках ничего подобного нет.

Еще замечена такая аномалия, в самом начале, даже если вызовов MEM_alloc не производилось 4 MADU уже под что то выделены, хотя может это так и должно быть.

Я работал с MEM_alloc CCS3.1 - проблем не возникало. Предварительно в конфигураторе DSP/BIOS - указывал флажок создания кучи такого-то объёма. Использовал сегмент SARAM. Если не устанавить этот флажок, то результат операции был MEM_ILLEGAL.
Вот фрагмент программы:
//--------------------
HostDataElem *HDElem=NULL;

HDElem = MEM_alloc(SARAM, sizeof(HostDataElem), 0); //данные не выровнены
if(HDElem == MEM_ILLEGAL) //если куча полная
{
FlagQueFull++; //флаг: очередь полна (может уст. двумя потоками, кот. пишут в очередь)
SEM_pend(&SEM_QueNotFull, SYS_FOREVER); //Жду
HDElem = MEM_alloc(SARAM, sizeof(HostDataElem), 0); //данные не выровнены
if(HDElem == MEM_ILLEGAL) //если очередь полная
LOG_printf(&LOG_trace,"TSBK_sendToQue: FATAL ERROR");
}
//--------------------
С вашей версией не работал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.