3. WrmOS: загрузчик

← 2. WrmOS: конфигурирование

4. WrmOS: ядро →

Содержание
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

    1. Инициализация таблицы трапов (trap table).
    2. Установка стэка.
    3. Передача управления функции main().

    ARM

    1. Установка стэка.
    2. Передача управления функции main().

    x86

    1. Выполнение загрузчика уровня 0 (boot0):
      • инициализация сегментных регистров
      • установка стэка
      • загрузка загрузчика уровня 1 (boot1) из диска в память
      • переключение процессора в защищённый режим (protected mode)
      • передача управления загрузчику уровня 1 (boot1)
    2. Выполнение загрузчика уровня 1 (boot1):
      • загрузка всего образа загрузчика из диска в память
      • передача управления функции main()

    x86_64

    1. Выполнение загрузчика уровня 0 (boot0):
      • инициализация сегментных регистров
      • установка стэка
      • загрузка загрузчика уровня 1 (boot1) из диска в память
      • переключение процессора в защищённый режим (protected mode)
      • передача управления загрузчику уровня 1 (boot1)
    2. Выполнение загрузчика уровня 1 (boot1):
      • установка 1:1 маппинга
      • переключение процессора в 64-битный режим (long mode)
      • загрузка всего образа загрузчика из диска в память
      • передача управления функции main()

    ← 2. WrmOS: конфигурирование

    4. WrmOS: ядро →