mirror of
https://github.com/EmbedDevIOT/obsidian-vault-.git
synced 2026-11-05 22:53:25 +03:00
2.8 KiB
2.8 KiB
#DeviceTree #Boot #Linux
Hardware starting. Процесс запуска и инициализации
Далее описан процесс запуска и инициализации оборудования следующих уровней: Firmware layer Hardware descriptional layer kernal initialization stage
- Power On
- Starting GPU on SoC
- ROM внутри Video Core начинает выполнение.
- GPU читает SD карту (загружаются)
Файлы расположены в
/boot или /firmware/boot- ==bootcode.bin== - FirstStage Bootloader. Он инициализирует SDRAM и загружает прошивку start.elf
- ==start.elf== - Second Stage Bootloader Инициализирует систему и загружает ядро линукс, управляет памятью
- ==config.txt== - файл конфигурации Основной конфигурационный файл системы, считываемый GPU используемый для настройки оборудования
- ==cmdline.txt== файл конфигурации, передаваемый ядру линукс при загрузке
- ==device tree== - подгружается дерево устройств. (файлы *dtb) Передается в kernel. Хранятся в каталоге boot / firmware / overlays
- Только после этого GPU включает ARM CPU
- ARM начинает выполнение linux kernal
Device tree - Описание аппаратной конфигурации.
Device Tree wiki Device Tree — это описание аппаратной конфигурации конкретной платы. Применяется GPU до запуска ядра. Device Tree Overlays - фрагмент device tree, или слой абстракции который: добавляет новое устройство включает отключенный контроллер меняет параметры существующего узла
Пример изменения конфигурации DT без перекомпиляции ядра
Открыть config.txt и добавить dtoverlay=i2c-rtc,ds3231
Что происходит:
- GPU загрузит основной DTB
- GPU применит overlay
- GPU передаст модифицированный DT ядру
- Ядро увидит новое устройство
- Драйвер RTC автоматически загрузится
Если удалить узел устройства (например SPI) из Device Tree то ядро просто не создаст SPI контроллер.