Цитата(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");
}
//--------------------
С вашей версией не работал.
Сообщение отредактировал evg123 - Apr 24 2007, 12:20