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

3.3 KiB

#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 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 контроллер.

Команды для работы:
cat /proc/device-tree/model - модель платы для которой device tree создан ls /proc/device-tree/ - дерево устройств, которое kernel получил от GPU ls /sys/bus/platform/devices - вывод устройств, которые kernel создал на основе DT lsmod - просмотр загруженных модулей

Commands

Система: vcgencmd get_config int - параметры, которые передает GPU cat /etc/os-release - просмотр версии системы