Содержание 3.1 Описание 3.2 Параметры конфигурации 3.3 Архитектуро-специфические действия
3.1 Описание [наверх]
Загрузчик (bootloader) — это первая часть WrmOS, которая выполняется на целевом CPU. Загрузчиком должны быть выполнены следующие действия:
- начальная инициализация системы;
- загрузка kernel.elf, sigma0.elf и roottask.elf из файловой системы RAMFS в память;
- добавить информацию о системных приложениях sigma0.elf и roottask.elf в KIP memory descriptors;
- передать управление ядру ОС.
3.2 Параметры конфигурации [наверх]
Загрузчик имеет следующие конфигурационные параметры:
Имя | Файл | Описание |
---|---|---|
usr_ldr_dbg | cfg/prj/<project-name>.prj | Отладочный флаг загрузчика. Может иметь значение 0 или 1. Флаг позволяет использовать отладочную конфигурацию проекта с assert'ами, дополнительной отладочной выдачей и т.д. (для значения 1) или использовать релизную конфигурацию (для значения 0). |
ldr_uart_paddr | cfg/plt/<platform-name>.prj | Физический адрес UART для загрузчика. |
ldr_uart_bitrate | Битовая скорость UART для загрузчика. |
3.3 Архитектуро-специфические действия [наверх]
Начальная инициализация системы различна для каждой процессорной архитектуры.
SPARC
- Инициализация таблицы трапов (trap table).
- Установка стэка.
- Передача управления функции main().
ARM
- Установка стэка.
- Передача управления функции main().
x86
- Выполнение загрузчика уровня 0 (boot0):
- инициализация сегментных регистров
- установка стэка
- загрузка загрузчика уровня 1 (boot1) из диска в память
- переключение процессора в защищённый режим (protected mode)
- передача управления загрузчику уровня 1 (boot1)
- Выполнение загрузчика уровня 1 (boot1):
- загрузка всего образа загрузчика из диска в память
- передача управления функции main()
x86_64
- Выполнение загрузчика уровня 0 (boot0):
- инициализация сегментных регистров
- установка стэка
- загрузка загрузчика уровня 1 (boot1) из диска в память
- переключение процессора в защищённый режим (protected mode)
- передача управления загрузчику уровня 1 (boot1)
- Выполнение загрузчика уровня 1 (boot1):
- установка 1:1 маппинга
- переключение процессора в 64-битный режим (long mode)
- загрузка всего образа загрузчика из диска в память
- передача управления функции main()