В связи с чрезвычайной удобностью uC/OS и необходимостью всё же иметь ethernet, пришлось вернуться к попыткам подружить ОС с её же стэком uC/TCP. Результат оказался положительный, хотя попотеть пришлось с неделю.
Первое, что захотелось сделать, это по совету комрада посмотреть все стэки. Примочка эта есть только в ИАРе, к тому же КЕЙЛовская оболчка мне категорически не нравится (компилятор правда у них хороший). Но не всё так просто, версию ИАР-АРМ 4 найти сложно, а имеющаяся 5-я проект от микримуа компилить не хочет ни в какую. Скачал с микриумовского сайта 4 разных проекта под разные процессоры, в итоге один заработал (uC/OS + uC/LCD + uC/Probe без uC/TCP для LPC2468 (на всякий случай называется LPC2468-SK-OS-Probe-LCD-v5-2.eww)). Заменил в нём все настройки на 2378, добавил uC/TCP из проекта uC/TCP для LPC2378 - и всё скомпилилось.
Второе, в проекте от микриума большой косяк в функции инициализации EMACa, он тупо зависает. Переписал его по даташиту от NXP - заработало.
Третье, при обычной работе тцп-стэка - все его стэки ведут себя как надо. Но при создании исходящего соединения переполняется сначала стэк вызвавшей задачи (я сделал APP_CFG_TASK_PROC2_STK_SIZE равным 400, стало хватать), а затем стэк NET_OS_CFG_IF_RX_TASK_STK_SIZE. Его я сделал равным 300.
За сим всё.
|