Files
wikipedia/Linux Embedded/Linux SBC - Boot Process Lerning.md

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

Linux - Commands