Device Tree — Шпаргалка з команд Серія “STM32 з нуля без HAL” · Місяць 3

Всі команди перевірені на Luckfox Pico Pro (RV1106, Buildroot). Команди для хоста позначені 🖥️, для плати (SSH) — 📡.


1. Пошук і перегляд DTS файлів

Знайти DTS для своєї плати

Подивитись ланцюжок includes

Типовий ланцюжок:

Шукати конкретну периферію


2. Runtime — що бачить ядро

/proc/device-tree/ — живе дерево

Важливо: /proc/device-tree/ — це результат компіляції DTB. Якщо змінили DTS але не перезібрали і не прошили — тут буде старе.

Перевірка пристроїв


3. Компіляція і декомпіляція DTB

dtc — Device Tree Compiler

/tmp/.fdt.dtb на Luckfox — це DTB який ядро завантажило. Декомпіляція показує фінальний результат після всіх includes.

Збірка ядра з DTS через Luckfox SDK


4. Модифікація DTS

Увімкнути периферію

Процес: змінити DTS → перезібрати → прошити

⚠ DTB входить до складу boot.img, тому для оновлення DTS потрібно перепрошити boot розділ (mtd3), а не повний update.img.


5. Прошивка: MTD, flashcp, upgrade_tool

Що таке MTD

MTD (Memory Technology Devices) — підсистема Linux для роботи з flash пам’яттю напряму (NOR/NAND). На відміну від HDD/SSD (блочні пристрої /dev/sda), flash вимагає стирання перед записом і має обмежену кількість перезаписів.

На STM32 ви робили st-flash write firmware.bin 0x08000000 — писали прямо у Flash. MTD — та ж ідея, тільки через Linux підсистему з іменованими розділами.

Розмітка MTD на Luckfox Pico Pro

⚠ Ця розмітка задається в bootargs: mtdparts=spi-nand0:256K(env),256K@256K(idblock),...

Прошивка по мережі (SSH)

Прошивка по USB (Maskrom)

⚠ Maskrom режим: затисни BOOT кнопку → підключи USB → відпусти. Використовуй коли SSH недоступний або зламав boot/rootfs.

Збірка окремих компонентів

6. Робота з Serial портами (UART)

Налаштування порту

Відправка і прийом даних

Інтерактивний термінал

Перевірка доступних портів

Карта UART на Luckfox Pico Pro (з Pi Pico Sim800 платою)



7. Діагностика проблем

Пристрій не з’являється в /dev/

Перевірка pinctrl

Порівняти DTS з runtime

 


8. Корисні шаблони grep

 


9. Швидка довідка: адреси периферії RV1106

Периферія Адреса Розмір IRQ (GIC SPI)
uart0 0xff4a0000 0x100 25
uart1 0xff4b0000 0x100 26
uart2 0xff4c0000 0x100 27
uart3 0xff4d0000 0x100 28
uart4 0xff4e0000 0x100 29
uart5 0xff4f0000 0x100 30
i2c0 0xff310000 0x1000 18
i2c1 0xff320000 0x1000 19
i2c3 0xff460000 0x1000 21
i2c4 0xff470000 0x1000 22
spi0 0xff500000
spi1 0xff510000

⚠ Адреси UART йдуть з кроком 0x10000 (64KB блоки). I2C — теж 0x10000.


10. Посилання

  • devicetree.org/specifications — офіційна специфікація
  • Bootlin Device Tree training — безкоштовні слайди + лабораторні
  • Luckfox Wiki — документація і pinout
  • Luckfox SDK DTS: sysdrv/source/kernel/arch/arm/boot/dts/rv1106*.dts*
  • Runtime DTS: /proc/device-tree/ на живій системі

Шпаргалка створена на основі реальної роботи з Luckfox Pico Pro (RV1106G) Серія “STM32 з нуля без HAL” · github.com/pipicosim800-maker/stm32F103

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *