Компиляция MiniOS

Вступление

Перед началом компиляции и работы с MiniOS, рекомендуем Вам ознакомиться со страницей Структура MiniOS , чтобы лучше понимать из чего состоит MiniOS.

Кросс-компилятор

Для сборки MiniOS необходимо скачать кросс-компилятор. Можно собирать как под Windows, так и под Linux. Я использовал операционную систему Fedora Linux 10 в виртуальной машине VMWare и кросс-компилятор mipsel-4.1.2-nopic.tar.bz2, скачанный с официального FTP Ingenic (зеркало с быстрой скоростью). Для сборки под Windows нужно скачать cygwin версию соответственно.
Затем, распаковав кросс-компилятор, скажем, в директорию /opt, необходимо добавить путь в переменную окружения PATH: 
export PATH=/opt/mipsel-4.1.2-nopic/bin:$PATH

Примечание: Сборка под cygwin в Windows происходит значительно дольше, чем сборка даже на виртуальной машине с установленной Linux. Так, некоторые сообщают, что полная сборка MiniOS под Windows занимала около 40 минут, в то время как на том же железе на виртуальной машине с установленой Linux сборка происходит за 2-3 минуты.

NAND.BIN 

Чтобы собрать nand.bin лезем в /soc_src/JZ4725/nandboot, делаем make clean, make. У меня по дефолту не собрался, поэтому правим в файле /mtv_50/configure.mak SOC_GENERATION на 4750L .
SOC_GENERATION=4750L
Ну и все, можно его заливать в 0-ю страницу с ECCPOS 3, BCHBIT 8 . Только не забываем заполнить 61 и 62-ю страницы правильными параметрами для NAND памяти, или скопировать их из оригинальной прошивки.

Ресурсы (res.bin) 

Папка res137_480x272, из нее запускаем PkgMaker. Галки никакие не трогаем, кроме номера версии (там 0 по умолчанию). Нужно поставить 137. Нажимаем на нижнюю левую кнопку и ждем (софтина тормозная, может показаться что она ничего не делает, на самом деле делает). После этого нам предлагают сохранить получившиеся файлы ResID.h и Res.bin. Все, кидаем полученный файл ResID.h в /mtv_50/common, а res.bin зашиваем в NAND со страницы 32768 при параметрах ECCPOS 8, BCHBIT 
8 .

Лоадер (loader.bin) 

Лоадер собирается из /mtv_50/loader командой make clean, make. По-моему ругается на отсутствие address_jz4750l.lds, поэтому идем в наш конфиг /mtv_50/jz4750l_taurus.mak, находим там путь до address_jz4750l.lds и удаляем последнюю букву "L". То есть теперь будет использоваться файл address_jz4750.lds.
SECT_LDS_ADDRESS := ../sectionlds/address_jz4750.lds

Не знаю насколько это правильно, надо подумать на эту тему. Но как-то работает. В папке /mtv_50/loader/target получаем loader.bin, который зашиваем в 128 страницу с ECCPOS 3, BCHBIT 8 . Вообще, ECCPOS по-моему зависит от того, чего написано в 61 странице памяти, поэтому если использовать NAND.BIN и 61-62 страницы от оригинальной прошивки, шить нужно с ECCPOS 8.

Сама minios. (minios.bin)

Собирается из папки /mtv_50 командой make cleanall, make build. Не забывайте делать make cleanall, иначе иногда возникают глюки. В папке /HostLink на выходе будет файл mini_os.bin . Зашиваем его в 8192 страницу с параметрами ECCPOS 8, BCHBIT 8. 

def_boot.bin, img_boot.bin

def_boot.bin содержит инфу о том, откуда лоадеру начинать читать minios.bin, по какому адресу в память ее читать, куда передавать управление, а так-же инфу о анимации, содержащейся в файле 
img_boot.bin. Китайцы сказали, что если ничего не воротить с ресурсами и анимацией, то можно использовать дефолтные. Скачать можно тут: http://rghost.ru/3774115 Если вдруг что-то понадобиться серьезное изменять, то их можно создавать с помощью этой программы (тот же 
PkgMaker, только видимо другая версия): http://rghost.ru/3774147 . Я зашивал стандартные, все работает. def_boot.bin прошиваем на 256 страницу, img_boot.bin на 512 с параметрами ECCPOS 8, BCHBIT 8.