Есть устройство на LPC2378, работающий со всеми встроенными в кристалл интерфейсами USB, Ethernet, CAN и UART к которому может подключаться либо модем, либо RS-485. Одновременно может работать только один из интерфейсов. Задача сделать загрузчик через любой из этих интерфейсов. Вот, думаю, как это лучше сделать.
Если в загрузчик включить драйвера для всех этих интерфейсов, то код загрузчика получиться слишком большой. Но есть еще внешняя flash, подключенная через SPI. Можно код загрузчика хранить в этой flash, а в самой LPC только небольшую программку, загружающую загрузчик из внешней flash во внутреннюю, затем получать код программы, где-то(?) сохранять, а затем записывать во flashку LPC, замещая загрузчик (копия загрузчика сохраниться во внешней flashке).
Другой вариант. В программе сделать загрузку загрузчика. Т.е. сначала загружается загрузчик только с тем драйвером интерфейса, через который установлено соединение с устройством. Затем передавать управление загрузчику и принимать от хоста код программы. В этом случае код загрузчика будет меньше, но нужны разные загрузчики.
Какие еще варианты реализации посоветуете?
Спасибо.