Структура MiniOS

MiniOS располагается в NAND памяти и состоит из нескольких частей. Рассмотрим подробнее:

NAND.BIN (загрузчик)

Первым делом процессор при старте считывает первые восемь (шестнадцать?) страниц NAND памяти и переходит на исполнение кода, в них содержащихся. В MinOS таким первичным загрузчиком является файл NAND.BIN. Его задача правильно установить параметры работы SDRAM памяти, NAND памяти, считать и передать управление на вторичный загрузчик LOADER.BIN.

Следует заметить, что для правильной конфигурации NAND памяти, NAND.BIN пытается прочитать параметры NAND с 61-ой страницы, а в случае если она помечена как плохая, то с 62-ой. В связи с этим, при прошивке NAND.BIN следует так же прошивать 61-ю и 62-ю страницы, заполненные правильными параметрами для NAND. Частая ошибка: перед прошивкой MiniOS стирается полностью NAND-память командой nerase 0 4096 0 0, затем зашивается NAND.BIN, затем LOADER.BIN и все остальные файлы, но вот беда - не происходит загрузки LOADER.BIN, при этом никаких ошибок в UART не выводится. Разгадка проста - NAND.BIN пытается прочитать 61-ю страницу, она отлично читается, да вот только все значения в ней - 0xFFFFFFF. Поэтому, повторюсь, не забываем заполнять 61 и 62-ю страницы правильными параметрами для NAND.

Вообще, если очень лениво с ним разбираться, можно оставить NAND.BIN от оригинальной прошивки, еще проще - все первые страницы от 0 до 63.

NAND.BIN располагается начиная с нулевой страницы NAND памяти.

LOADER.BIN

Это уже основной загрузчик всей системы. Его задача правильно считать все компоненты системы, передать управление на точку входа основного ядра. LOADER.BIN находится начиная с 128-ой страницы памяти. Он пытается прочитать DEF_BOOT.BIN с 256 страницы, выводит анимацию из IMG_BOOT.BIN с 512-ой страницы, читает MINIOS.BIN и передает ей управление.

DEF_BOOT.BIN

В файле содержится такая информация, как месторасположение в NAND-памяти основной системы - MINIOS.BIN, сколько страниц она занимает, по какому адресу ее читать в оперативную память и куда передавать управление. Также в DEF_BOOT.BIN содержится информация о месторасположении анимации IMG_BOOT.BIN, а так же сведения о самой анимации. Эту информацию использует загрузчик LOADER.BIN. DEF_BOOT.BIN находиться на 256 странице, и занимает не больше одной страницы.

IMG_BOOT.BIN

В этом файле содержится заставка (анимация), которая показывается при включении устройства. Фактически это обычный покадровый битмап. IMG_BOOT располагается по умолчанию начиная с 512 страницы, хотя его местоположение может задаваться в DEF_BOOT.BIN

MINIOS.BIN

Сама операционная система MiniOS. Здесь находится основной код операционной системы, драйвера, программы и прочее. MINIOS.BIN тесно взаимодействует с RES.BIN, динамически отводя память для тех или иных подгружаемых ресурсов. Располагается по умолчанию начиная с 8192 страницы и занимает 2048 страниц, хотя ее месторасположение и размер могут быть изменены в DEF_BOOT.BIN

RES.BIN

Ресурсы. Картинки, иконки, текст, шрифты, таблицы. Располагается начиная с 32768 страницы.

63-я страница памяти

В 63-ей странице располагается информация о структуре файловой системы (конкретнее, похоже о плохих секторах), доступной для пользователя при подключении устройства к USB. Я не знаю, создается ли эта информация (страница) автоматически при форматировании устройством файловой системы, поэтому как я говорил раньше, будет не лишним копировать содержимое этой страницы с оригинальной прошивки. Ну или просто посмотреть в исходном коде.
Comments