3.3 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 контроллер.
Команды для работы:
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 - просмотр версии системы