Files
obsidian-vault-/Linux/SBC Lesson/Linux SBC - Boot Process Lerning.md
T

53 lines
2.8 KiB
Markdown

#DeviceTree #Boot #Linux
## Hardware starting. Процесс запуска и инициализации
Далее описан процесс запуска и инициализации оборудования следующих уровней:
Firmware layer
Hardware descriptional layer
kernal initialization stage
1. Power On
2. Starting GPU on SoC
3. ROM внутри Video Core начинает выполнение.
4. GPU читает SD карту (загружаются)
Файлы расположены в `/boot или /firmware/boot`
1. ==bootcode.bin== - FirstStage Bootloader.
Он инициализирует SDRAM и загружает прошивку start.elf
2. ==start.elf== - Second Stage Bootloader
Инициализирует систему и загружает ядро линукс, управляет памятью
3. ==config.txt== - файл конфигурации
Основной конфигурационный файл системы, считываемый GPU используемый для настройки оборудования
4. ==cmdline.txt==
файл конфигурации, передаваемый ядру линукс при загрузке
5. ==device tree== - подгружается дерево устройств. (файлы *dtb)
Передается в kernel. Хранятся в каталоге boot / firmware / overlays
5. Только после этого GPU включает ARM CPU
6. ARM начинает выполнение linux kernal
## Device tree - Описание аппаратной конфигурации.
[Device Tree wiki](https://www.altlinux.org/Device_Tree)
Device Tree — это **описание аппаратной конфигурации конкретной платы**.
Применяется GPU до запуска ядра.
Device Tree Overlays - фрагмент device tree, или слой абстракции который:
добавляет новое устройство
включает отключенный контроллер
меняет параметры существующего узла
Пример изменения конфигурации DT без перекомпиляции ядра
Открыть config.txt и добавить `dtoverlay=i2c-rtc,ds3231`
Что происходит:
1. GPU загрузит основной DTB
2. GPU применит overlay
3. GPU передаст модифицированный DT ядру
4. Ядро увидит новое устройство
5. Драйвер RTC автоматически загрузится
Если удалить узел устройства (например SPI) из Device Tree то ядро просто не создаст SPI контроллер.
[[Linux - Commands]]