Цитата(XVR @ May 18 2011, 17:52)

Судя по тексту ошибки (уверен на 99%) - ругался malloc. Его попросили выделить 1488 байтов, а в наличии оказалось максимум 1066
Видимо остальным задачам оставшихся 1066 байтов хватило
1066 это константа UIP_CONF_BUFFER_SIZE в файле uip-conf.h. Пробовал её уменьшать до 256 и задачи спокойно находили более 256 байт динамической памяти с помощью malloc.
А сообщение выводит вот этот кусок функции EMAC_Poll:
Цитата
if ((pRxTd->status & EMAC_RX_EOF_BIT) == EMAC_RX_EOF_BIT)
{
// Frame size from the EMAC
*pRcvSize = (pRxTd->status & EMAC_LENGTH_FRAME);
// Application frame buffer is too small all data have not been copied
if (tmpFrameSize < *pRcvSize)
{
COM0_fprint("size req %d size allocated %d\n\r", *pRcvSize, frameSize);
return EMAC_RX_FRAME_SIZE_TOO_SMALL;
}
// All data have been copied in the application frame buffer => release TD
while (rxTd.idx != tmpIdx)
{
pRxTd = rxTd.td + rxTd.idx;
pRxTd->addr &= ~(EMAC_RX_OWNERSHIP_BIT);
CIRC_INC(rxTd.idx, RX_BUFFERS);
}
попробовал добавить сброс статуса (pRxTd->status = 0;), так хотя бы обмен ethernat-пакетами возобновляется, но какое то некрасивое решение