Процесс загрузки

Попробуем разобраться с загрузкой на примере процессора BCM2837.
Загрузка начинается с первого раздела носителя, формат должен быть FAT. MBR тоже должен быть.

На сайте https://www.raspberrypi.org/documentation/linux/kernel/building.md есть инфа по разметке микро СД карты :
sdb1 being the FAT (boot) partition, and sdb2 being the ext4 filesystem (root) partition.

Ищется файл bootcode.bin и он первый грузится в память GPU и ему передается управление.

Bootcode.bin использует config.txt , аналогично настройкам биос на PC.

Потом bootcode.bin грузит start.elf в память GPU , то есть в память графического сопроцессора. То есть это код для работы графики.

Bootcode.bin загружает kernel7.img уже в память CPU и передает ему управление.

И вот именно kernel7.img можно заменить своей программой так называемого типа bare metal, которая сама инициализирует CPU , регистры, таблицу прерываний, uart и т.д.

И тут есть нюанс почему kernel7.img ? Оказывается для Raspbarry PI 3 64 - рязрядный вариант arch64 грузит kernel8.img. То есть kernel7.img для 32 разрядного варианта.