Загрузка ядра начинается с инициализации процессора, где BIOS или UEFI, а в случае QEMU – OpenSBI, подготавливают среду. Ядро ОС, написанное на C, начинается с функции
Минимальное ядро, представленное в статье, выполняет обнуление секции.bss и входит в бесконечный цикл. Для отладки используются возможности QEMU, позволяющие просматривать состояние регистров процессора и дизассемблированный код.
Интерактивность с ядром достигается через SBI (Supervisor Binary Interface), позволяющий ОС взаимодействовать с прошивкой. Функция
Для форматированного вывода, реализована функция
boot
, где настраивается указатель стека и вызывается kernel_main
. Для этого требуется скрипт компоновщика, определяющий структуру памяти исполняемого файла. Изображение носит иллюстративный характер
Минимальное ядро, представленное в статье, выполняет обнуление секции.bss и входит в бесконечный цикл. Для отладки используются возможности QEMU, позволяющие просматривать состояние регистров процессора и дизассемблированный код.
Интерактивность с ядром достигается через SBI (Supervisor Binary Interface), позволяющий ОС взаимодействовать с прошивкой. Функция
sbi_call
использует инструкцию ecall для вызова функций SBI, например, для вывода символов в консоль. Для форматированного вывода, реализована функция
printf
с поддержкой спецификаторов %d, %x и %s. Базовые функции работы с памятью (memcpy
, memset
), а также строками (strcpy
, strcmp
) были реализованы с нуля. Дополнительно был разработан макрос PANIC
для обработки фатальных ошибок.