Как создать, скомпилировать и связать загрузчик? - PullRequest
0 голосов
/ 01 марта 2019

Я делаю небольшую операционную систему и пишу для нее рабочее ядро.Но как мне создать загрузчик для вызова ядра, компиляции и связывания ядра и загрузчика.Я использую GCC и YASM.Я также могу использовать нос, если требуется.

1 Ответ

0 голосов
/ 05 марта 2019

Во время загрузки в основном есть 2 шага (очень упрощенных) (в частности, связанных с платами на базе ARM Embedded Linux):

  1. Когда питание подается, процессор просыпается и его ПЗУкод выполнен.Этот код жестко закодирован в чипе, предоставленном производителем.Этот код ПЗУ после выполнения базовой подготовки аппаратного обеспечения и проверки работоспособности вызывает загрузчик.Вам нужно посмотреть в документах, где (по какому адресу) этот начальный код ищет загрузчик.Если он находит загрузчик, он отказывается от своего управления, и управление переходит к загрузчику.

  2. Снова загрузчик ищет несколько предварительно определенных областей памяти для двоичного файла ядра (скомпилированный образ),Затем он (загрузчик) отказывается от управления и передает управление ядру (с небольшим количеством аргументов, а иногда и с памятью дерева устройств).

AFAIK, ядро ​​и загрузчик не "обычно компилируется / связывается.Это процесс, на котором одна стадия полностью отказывается от себя и передает управление другой (как описано в двух предыдущих шагах).

...