Идея такова:
использовать гововый образ WinCE и его загрузчик, но добавить
инициализацию экрана.
Для этого нужно:
1. Переделать начальный загрузчик, который подгружает zlo.exe.
Качаем пример:
http://arm.cirrus.com/files/demos/spi_boot_example.tar.gzЭтот пример рассчитан на то, что SDRAM прицеплена на SDCS0, а у нас
SDCS3. Правим, если не изменяет память в ассеблерном файле
и одном из *.h. Это будет наш spi_prepend.bin. Он грузит hello_world
из нашего примера.
2. Этот hello_world переделываем так, чтобы он инициализировал экран и
запускал zlo.
Инициализацию экрана берем из исходников последнего u-boot с сайта zao-
zeo. По началу не все получалось. Но потом сделал программку,
которую запустил из-под этого uboot, которая вывела на экран
содержимое регистров RASTERa. Осталось только проинициализировать
RASTER этими значениями. Всё, экран готов. Теперь сам логотип.
Берем подходящую картинку, в фотошопе (например) конвертим ее в 256-
цветный, т.к. экран в этот режим настроил. Заливаем его
например в 0х30000 в SPI eeprom. Можно шапку не заливать, но палитру
нужно оставить, т.к. она понадобится для инициализации LUT RASTERa.
Сам framebuffer расположил в самых верхних адресах SDRAM.
Копируем zlo из EEPROM в SDRAM по адресу 0х40E00 и запускаем с адреса
0х40E00 + 0х204. Эти адреса подсмотрены в оригинальном загрузчике
spi_preload. Если zlo поменяется, то смещение запуска - это адрес
после перого появления слова CRUS.
Осталась одна проблема - при запуске скопированного в SDRAM zlo, он
меняет настройки RASTERA и вообще отрубает бит RasOnP3.
Берем дизасм, напрмер IDA. Ищем где он обращается к RASTERу ,
SYSCON_DEVCFG, SYSCON_VIDIV. Херим. Все полезное из выхереного делаем
в своем hello_world.
Вот и все.
В моем случае научиться собирать винду - задача более серьезная, а тем
более образ такого уровня как этот.
Поэтому для меня такой вариант годится.
Если кого интересуют исходники - пишите.