- Przegląd architektury systemu
- Oprogramowanie
- Instalowanie zależności kompilacyjnych
- Tworzenie przestrzeni wymiany i przygotowanie katalogu roboczego
- Klonowanie źródeł jądra systemu Linux firmy Toradex
- Wybór odpowiedniej gałęzi jądra
- Klonowanie frameworku nakładek drzewa urządzeń
- Wybór odpowiedniej gałęzi frameworku nakładek
- Konfiguracja ścieżki do źródeł jądra i klonowanie źródeł nakładki Riverdi
- Klonowanie źródeł nakładki Riverdi
- Weryfikacja gałęzi repozytorium i lokalizacja źródeł nakładek
- Tworzenie nakładki i przygotowanie drzewa źródeł jądra
- Dodanie źródeł nakładki Riverdi do środowiska kompilacji
- Rejestrowanie nakładki w systemie budowania
- Tworzenie nakładki drzewa urządzeń
- Wdrożenie
- Podsumowanie
Celem niniejszego przewodnika jest stworzenie działającego systemu na nowym sprzęcie – z wykorzystaniem systemu operacyjnego Torizon oraz przykładowych plików źródłowych drzewa urządzeń z repozytorium Riverdi na GitHubie.
W ten sposób osiągamy:
- Flashowanie systemu operacyjnego Torizon od podstaw
- Stwórz własną nakładkę drzewa urządzeń z repozytorium Riverdi na GitHubie
- Włącz nakładkę w Torizon
- Uruchom system z w pełni graficznym wyświetlaczem i obsługą dotykową
W niniejszym przewodniku celowo pominięto:
- Kompilacja Yocto od podstaw
- Ponowna kompilacja jądra systemu Linux
- Korzystanie z pełnej maszyny wirtualnej z systemem Linux
Przegląd architektury systemu


Sprzęt komputerowy
- Toradex Verdin iMX8MP lub iMX8MM
- Płytka nośna Toradex Dahlia
- Wyświetlacz Riverdi 12,1” (lub dowolny inny wyświetlacz Riverdi, ale w tym przykładzie używamy modelu 12,1”)
Przed wprowadzeniem zmian w systemie należy zrozumieć, jak zbudowany jest potok wyświetlania w układzie Verdin iMX8MP + Dahlia.
Ścieżka danych wyświetlacza
W przypadku wyświetlacza Riverdi o przekątnej 12,1″ łańcuch sygnałowy wygląda następująco:
i.MX8MP LCDIF
↓
MIPI DSI
↓
SN65DSI83 (mostek między DSI a LVDS)
↓
Panel LVDS
- Blok LCDIF w układzie i.MX8MP generuje dane pikselowe.
- Dane są przesyłane za pośrednictwem interfejsu MIPI DSI.
- Układ TI SN65DSI83 przekształca sygnał DSI na LVDS.
- Panel LVDS odbiera dane dotyczące pikseli i posiada wyświetlacz, na którym jest wyświetlany obraz.
Interfejsy sterujące
Oprócz ścieżki wideo należy skonfigurować dwa dodatkowe podsystemy:
- Sterowanie podświetleniem
- Sterowane za pomocą modu PWM z procesora i.MX8MP
- Podłączony do sterownika podświetlenia wyświetlacza
- Cykl pracy reguluje jasność (0–100%)
- Ekran pojemnościowy dotykowy
- Podłączone przez interfejs I2C
- Generuje sygnały przerwań
- Udostępnia urządzenie wejściowe w systemie Linux (/dev/input/eventX)
Oprogramowanie
Korzystaliśmy ze środowiska Linux – w tym przykładzie z maszyny wirtualnej z systemem Windows, na której zainstalowano system Ubuntu. To jest sedno naszego przewodnika. Znajdziesz tu wszystko, co niezbędne – cały kod, z którego korzystamy, wszystkie linki oraz szczegółowe objaśnienia. Poniżej znajdziesz nasz profil na GitHubie:
https://github.com/riverdi/riverdi-toradex-DTS
Instalowanie zależności kompilacyjnych
Przed przystąpieniem do tworzenia nakładek drzewa urządzeń środowisko programistyczne musi zawierać narzędzia wymagane przez system budowania jądra systemu Linux.
Otwórz terminal i zainstaluj wymagane pakiety, korzystając z poniższego polecenia
sudo apt install -y \ git make gcc g++ bc bison flex \ libssl-dev libncurses-dev \ python3 python3-pip rsync wget xz-utils \ device-tree-compiler
Pakiety te zawierają podstawowe narzędzia niezbędne do kompilacji komponentów związanych z jądrem oraz artefaktów drzewa urządzeń.
Następujące narzędzia mają szczególne znaczenie w procesie tworzenia nakładki:
- Git – służy do klonowania źródeł jądra Toradex oraz frameworku nakładek drzewa urządzeń.
- narzędzia kompilacyjne (gcc, make itp.) – wymagane przez system budowania jądra systemu Linux.
- device-tree-compiler (dtc) — kompiluje pliki źródłowe drzewa urządzeń (.dts) do binarnych plików drzewa urządzeń (.dtb lub .dtbo)
- Różne elementy infrastruktury kompilacji jądra wymagają dodatkowych bibliotek, takich jak libssl-dev i libncurses-dev.
Po zainstalowaniu zależności system jest gotowy do sklonowania źródeł jądra Toradex oraz przygotowania środowiska kompilacji do kompilacji nakładki drzewa urządzeń.
Tworzenie przestrzeni wymiany i przygotowanie katalogu roboczego
Podczas pracy w maszynie wirtualnej ilość dostępnej pamięci RAM może być ograniczona. Systemy budowania związane z jądrem mogą wymagać dodatkowej pamięci podczas kompilacji, zwłaszcza podczas przetwarzania dużych drzew kodu źródłowego.
Aby uniknąć błędów kompilacji związanych z pamięcią, zaleca się utworzenie pliku wymiany, który zapewni dodatkową pamięć wirtualną.
Utwórz plik wymiany o rozmiarze 4 GB, korzystając z poniższych poleceń:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Plik wymiany jest następnie dodawany do konfiguracji systemu, dzięki czemu zostanie automatycznie włączony po ponownym uruchomieniu:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Po przygotowaniu przestrzeni wymiany utwórz katalog roboczy, w którym będą przechowywane wszystkie repozytoria i artefakty kompilacji wykorzystywane w niniejszym przewodniku:
mkdir -p ~/work cd ~/work
Ten katalog posłuży jako główne miejsce pracy do sklonowania źródeł jądra Toradex, frameworku nakładek oraz plików nakładek wyświetlacza Riverdi.
Klonowanie źródeł jądra systemu Linux firmy Toradex
Kolejnym krokiem jest pobranie źródeł jądra systemu Linux firmy Toradex. Źródła te zawierają infrastrukturę kompilacyjną oraz pliki nagłówkowe niezbędne do kompilacji nakładki drzewa urządzeń.
Przejdź do utworzonego wcześniej katalogu roboczego i sklonuj repozytorium jądra Toradex:
git clone git://git.toradex.com/linux-toradex.git
To repozytorium zawiera jądro systemu Linux wykorzystywane w wydaniach BSP firmy Toradex oraz pliki konfiguracyjne i skrypty kompilacyjne niezbędne do kompilacji komponentów jądra i nakładek drzewa urządzeń.
Repozytorium jądra jest stosunkowo duże, więc jego sklonowanie może zająć kilka minut w zależności od szybkości połączenia sieciowego. W załączonym filmie ten etap został przyspieszony, aby poradnik był zwięzły.
Po pobraniu repozytorium kolejnym krokiem będzie wybranie gałęzi jądra odpowiadającej wersji BSP używanej w docelowym module Verdin.
Wybór odpowiedniej gałęzi jądra
Po sklonowaniu repozytorium jądra Toradex kolejnym krokiem jest wybranie gałęzi odpowiadającej wersji BSP działającej na urządzeniu docelowym.
Wersje Toradex BSP są oparte na konkretnych wersjach jądra systemu Linux, a nakładki drzewa urządzeń muszą być skompilowane z wykorzystaniem tej samej gałęzi jądra, aby zapewnić zgodność.
Aby wyświetlić listę dostępnych gałęzi jądra związanych z wersją Linux 5.15, należy uruchomić:
git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50
To polecenie filtruje dostępne gałęzie i wyświetla te związane z serią jądra Linux 5.15, z której korzysta kilka wersji BSP firmy Toradex.
git checkout toradex_5.15-2.2.x-imx
Ta gałąź zawiera źródła jądra oraz konfigurację wykorzystywaną przez wersje BSP firmy Toradex oparte na systemie Linux 5.15 dla procesorów NXP i.MX.
Wybranie właściwej gałęzi gwarantuje, że nakładka drzewa urządzeń zostanie zbudowana w oparciu o drzewo jądra, które odpowiada oprogramowaniu działającemu na docelowym sprzęcie.
Klonowanie frameworku nakładek drzewa urządzeń
Kolejnym krokiem jest pobranie frameworku nakładek drzewa urządzeń firmy Toradex. Repozytorium to zawiera infrastrukturę kompilacyjną służącą do kompilowania nakładek drzewa urządzeń przy użyciu systemu budowania jądra systemu Linux.
Skopiuj repozytorium do katalogu roboczego:
git clone git://git.toradex.com/device-tree-overlays.git
To repozytorium zawiera strukturę pliku Makefile oraz elementy integracyjne niezbędne do kompilacji plików .dtbo przy użyciu sklonowanych wcześniej źródeł jądra.
Po sklonowaniu repozytorium w obszarze roboczym pojawi się nowy katalog o nazwie „device-tree-overlays”. Katalog ten posłuży później do dodania źródeł nakładki Riverdi oraz skompilowania ostatecznej wersji nakładki.
Wybór odpowiedniej gałęzi frameworku nakładek
Po sklonowaniu repozytorium nakładek drzewa urządzeń kolejnym krokiem jest wybranie gałęzi odpowiadającej tej samej wersji jądra, z której korzystano wcześniej.
Struktura frameworku nakładek drzewa urządzeń musi być zgodna z gałążą jądra używaną w repozytorium linux-Toradex. Dzięki temu proces kompilacji nakładki wykorzystuje właściwe nagłówki jądra i konfigurację kompilacji.
Najpierw należy wymienić dostępne gałęzie związane z serią jądra Linux 5.15:
git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50
To polecenie filtruje dostępne gałęzie i wyświetla te powiązane z jądrem Linux 5.15, z którego korzysta kilka wersji BSP firmy Toradex.
Następnie sprawdź gałąź odpowiadającą wybranej wcześniej wersji jądra:
git checkout toradex_5.15-2.2.x-imx
Wykorzystanie tej samej gałęzi zarówno dla źródeł jądra, jak i frameworku nakładek gwarantuje, że system budowania pozostaje zgodny z BSP działającym na docelowym module Verdin.
Konfiguracja ścieżki do źródeł jądra i klonowanie źródeł nakładki Riverdi
Przed rozpoczęciem tworzenia nakładek drzewa urządzeń system budowania nakładek musi wiedzieć, gdzie znajdują się źródła jądra systemu Linux. Odbywa się to poprzez zdefiniowanie zmiennej środowiskowej STAGING_KERNEL_DIR, która wskazuje na wcześniej sklonowane repozytorium linux-Toradex.
Ustaw zmienną za pomocą następującego polecenia:
export STAGING_KERNEL_DIR=$HOME/work/linux-toradex
Aby konfiguracja była zachowywana między sesjami terminala, dodaj ją do pliku konfiguracyjnego powłoki:
echo 'export STAGING_KERNEL_DIR=$HOME/work/linux-toradex' >> ~/.bashrc source ~/.bashrc
Ta zmienna umożliwia frameworkowi Overlay Build dostęp do plików nagłówkowych jądra oraz skryptów kompilacyjnych wymaganych przez system budowania jądra Linux.
Klonowanie źródeł nakładki Riverdi
Po skonfigurowaniu ścieżki do jądra kolejnym krokiem jest pobranie kodów źródłowych nakładki Riverdi, z których korzystamy w tym poradniku.
Sklonuj repozytorium do katalogu roboczego:
git clone https://github.com/riverdi/riverdi-toradex-DTS.git
To repozytorium zawiera pliki źródłowe nakładki drzewa urządzeń (Device Tree overlay), służące do konfiguracji wyświetlaczy Riverdi z modułami Toradex Verdin.
W kolejnym etapie niniejszego przewodnika te źródła nakładek zostaną zintegrowane z frameworkiem nakładek firmy Toradex.
Weryfikacja gałęzi repozytorium i lokalizacja źródeł nakładek
Przed rozpoczęciem procesu kompilacji nakładki zaleca się sprawdzenie, czy zarówno repozytorium linux-Toradex, jak i framework nakładek drzewa urządzeń korzystają z tej samej gałęzi jądra.
Dzięki temu proces kompilacji nakładki pozostaje zgodny z wcześniej używanymi źródłami jądra.
Aktywną gałąź w każdym repozytorium można sprawdzić za pomocą:
git rev-parse --abbrev-ref HEAD
Oba repozytoria powinny raportować tę samą nazwę gałęzi, na przykład:
toradex_5.15-2.2.x-imx
Wykorzystanie tej samej gałęzi w obu repozytoriach gwarantuje, że framework nakładek drzewa urządzeń korzysta z właściwych nagłówków jądra i konfiguracji kompilacji.
Następnie przejdź do sklonowanego repozytorium Riverdi, aby znaleźć źródła nakładki drzewa urządzeń:
cd ~/work/riverdi-toradex-DTS ls
To repozytorium zawiera pliki źródłowe drzewa urządzeń (.dts) oraz pliki dołączane (.dtsi) służące do konfiguracji wyświetlaczy Riverdi na platformach Toradex Verdin.
W kolejnym kroku wymagane pliki nakładki zostaną skopiowane do środowiska frameworku nakładek firmy Toradex.
Tworzenie nakładki i przygotowanie drzewa źródeł jądra
Na tym etapie pliki źródłowe nakładki Riverdi znajdują się w katalogu kompilacji nakładki, a sama nakładka została dodana do listy dtb-y w pliku Makefile. Kolejnym krokiem jest skompilowanie nakładki.
Z katalogu device-tree-overlays/overlays uruchom kompilację:
make clean make
Jeśli drzewo źródeł jądra nie zostało jeszcze przygotowane, kompilacja może zakończyć się niepowodzeniem z błędem podobnym do:
Konfiguracja jądra jest nieprawidłowa: brakuje plików „
”, „include/generated/autoconf.h” lub „include/config/auto.conf”
Jest to zgodne z oczekiwaniami, ponieważ framework nakładek Toradex wykorzystuje system budowania jądra Linuksa (Kbuild). Kbuild wymaga skonfigurowanego i przygotowanego drzewa jądra do wygenerowania niezbędnych plików nagłówkowych i artefaktów konfiguracyjnych.
Aby to rozwiązać, przygotuj drzewo źródeł jądra:
- Przejdź do repozytorium jądra.
cd ~/work/linux-toradex - Skonfiguruj kompilację dla platformy Verdin iMX8M Plus. Układ SoC jest 64-bitowym procesorem ARM, więc należy użyć architektury arm64 oraz kompilatora krzyżowego AArch64.
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu- - Zainstaluj toolchain kompilatora krzyżowego w systemie hosta:
sudo apt install -y gcc-aarch64-linux-gnu - Wygeneruj domyślną konfigurację jądra i przygotuj drzewo jądra:
make defconfig
make oldconfig
make prepare
make scripts
Polecenia te generują brakujące pliki konfiguracyjne i nagłówki wymagane przez Kbuild, w tym pliki include/config/auto.conf oraz include/generated/autoconf.h.
Po przygotowaniu drzewa jądra wróć do katalogu nakładki i ponownie uruchom kompilację nakładki:
cd ~/work/device-tree-overlays/overlays make clean make
Nakładka powinna teraz pomyślnie przejść kompilację i wygenerować plik wyjściowy o rozszerzeniu .dtbo.
Dodanie źródeł nakładki Riverdi do środowiska kompilacji
Framework kompilacji nakładek Toradex kompiluje nakładki znajdujące się w katalogu „overlays”. W związku z tym, zanim rozpocznie się proces kompilacji, należy skopiować pliki źródłowe drzewa urządzeń Riverdi do tego katalogu.
Przejdź do katalogu kompilacji nakładki:
cd ~/work/device-tree-overlays/overlays
Skopiuj plik źródłowy nakładki Riverdi dla 12-calowego wyświetlacza DSI:
cp ~/work/riverdi-toradex-DTS/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dts .
Następnie skopiuj dodatkowe pliki do wyświetlacza, wykorzystywane przez nakładkę:
cp ~/work/riverdi-toradex-DTS/display-*.dtsi
Te pliki .dtsi zawierają dane konfiguracyjne dotyczące poszczególnych paneli, takie jak parametry czasowe i definicje interfejsów paneli, wykorzystywane przez główny plik nakładki.
Rejestrowanie nakładki w systemie budowania
Aby nakładkę można było skompilować, należy ją dodać do pliku Makefile używanego przez framework nakładek Toradex.
Otwórz plik Makefile znajdujący się w katalogu overlays:
nano Makefile
Dodaj nowy wpis do listy dtb-y:
cd ~/work/riverdi-toradex-DTS dtb-y += verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo
Ta linia nakazuje systemowi budowania jądra, aby podczas procesu kompilacji skompilował odpowiedni plik .dts do postaci pliku binarnego .dtbo.
Po dodaniu tego wpisu nakładka stanie się częścią celów kompilacji i zostanie wygenerowana po uruchomieniu polecenia kompilacji nakładki.
Tworzenie nakładki drzewa urządzeń
Po przygotowaniu drzewa źródeł jądra można pomyślnie skompilować nakładkę.
Wróć do katalogu kompilacji nakładki:
cd ~/work/device-tree-overlays/overlays
Usuń wszystkie pozostałości po poprzednich kompilacjach:
make clean
Następnie uruchom kompilację nakładki:
make
W trakcie procesu kompilacji system budowania jądra Linuksa uruchamia kompilator drzewa urządzeń (dtc) i kompiluje zarejestrowany plik źródłowy nakładki drzewa urządzeń do postaci pliku binarnego .dtbo.
Jeśli kompilacja zakończy się powodzeniem, w wynikach kompilacji znajdą się następujące informacje:
DTC verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo
Oznacza to, że plik źródłowy drzewa urządzeń został pomyślnie skompilowany.
Wygenerowany plik .dtbo pojawi się w tym samym katalogu overlays i jest teraz gotowy do przesłania na docelowy moduł Toradex Verdin.
Wdrożenie
Łączenie się z modułem Verdin
Po pomyślnym utworzeniu nakładki drzewa urządzeń w systemie hosta kolejnym krokiem jest wdrożenie jej na module Toradex Verdin.
Aby uzyskać dostęp do konsoli Linuksa modułu, należy połączyć się z urządzeniem za pomocą terminala szeregowego. W tym przykładzie do nawiązania połączenia wykorzystano program PuTTY.
Skonfiguruj połączenie szeregowe, używając następujących parametrów:
- Typ połączenia: szeregowe
- Linia szeregowa: Port COM przypisany do portu UART służącego do debugowania urządzenia Verdin – sprawdź to w menedżerze urządzeń
- Prędkość: 115 200
Po nawiązaniu połączenia terminal wyświetli dziennik rozruchu, a następnie umożliwi dostęp do powłoki systemu Linux działającej na module Verdin.
Ta konsola posłuży do przesłania skompilowanego pliku .dtbo oraz włączenia nakładki w konfiguracji rozruchowej.
Konfiguracja interfejsu sieciowego w module Verdin
Przed przesłaniem skompilowanego pliku nakładki na urządzenie docelowe moduł Verdin musi mieć połączenie sieciowe z hostem programistycznym.
Najpierw sprawdź dostępne interfejsy sieciowe i ich aktualną konfigurację:
ip a
To polecenie wyświetla wszystkie interfejsy sieciowe obecne w systemie wraz z ich aktualnym stanem.
Następnie przypisz statyczny adres IP do interfejsu Ethernet:
ip addr add 192.168.10.2/24 dev eth0
Następnie włącz interfejs:
ip link set eth0 up
Po skonfigurowaniu interfejsu moduł Verdin może komunikować się z komputerem głównym za pośrednictwem sieci lokalnej. Połączenie to zostanie wykorzystane w kolejnym kroku do przesłania skompilowanego pliku .dtbo.
Konfiguracja statycznego adresu IP na hostie
Aby umożliwić komunikację między hostem programistycznym a modułem Verdin, oba urządzenia muszą znajdować się w tej samej podsieci.
Po przypisaniu adresa 192.168.10.2 do modułu Verdin należy skonfigurować interfejs Ethernet na komputerze głównym, nadając mu statyczny adres IP.
W systemie Windows otwórz „Zaawansowane ustawienia sieciowe”, a następnie przejdź do właściwości karty sieciowej Ethernet i ręcznie skonfiguruj ustawienia IPv4.
Ustaw następujące parametry: (można ustawić inne, ale my po prostu zalecamy właśnie te)
- Adres IP: 192.168.10.1
- Maska podsieci: 255.255.255.0
- Brama domyślna: pozostaw puste
W tej konfiguracji oba urządzenia znajdują się w tej samej sieci lokalnej:
- Host computer → 192.168.10.1
- Moduł Verdin → 192.168.10.2
Po skonfigurowaniu tego ustawienia oba systemy mogą komunikować się bezpośrednio przez sieć Ethernet, a skompilowany plik .dtbo można w kolejnym kroku przesłać do modułu Verdin.
Przenoszenie nakładki do modułu Verdin
Po połączeniu komputera głównego z modułem Verdin za pośrednictwem sieci skompilowaną nakładkę drzewa urządzeń można przesłać do urządzenia docelowego.
W tym przykładzie plik jest kopiowany za pomocą protokołu scp (Secure Copy Protocol):
scp ~/work/device-tree-overlays/overlays/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo \ [email protected]:/boot/overlays/
To polecenie kopiuje skompilowany plik .dtbo z hosta programistycznego do katalogu /boot/overlays w module Verdin.
Podczas pierwszego połączenia SSH system hosta może wyświetlić komunikat dotyczący bezpieczeństwa z prośbą o potwierdzenie autentyczności urządzenia docelowego. Po zaakceptowaniu odcisku transfer plików przebiega normalnie.
Katalog /boot/overlays służy konfiguracji rozruchowej Toradex do przechowywania plików binarnych nakładek drzewa urządzeń (Device Tree), które mogą być ładowane podczas uruchamiania systemu.
Podsumowanie
Upewnij się, że nakładka dokładnie odpowiada wersji BSP i gałęzi jądra używanej na urządzeniu docelowym – to właśnie stąd bierze się większość problemów z kompilacją. Po prawidłowym skonfigurowaniu środowiska proces staje się powtarzalny: kompilacja, wdrożenie, włączenie i testowanie. Dalsze dostosowywanie nakładek do innych wyświetlaczy Riverdi sprowadza się głównie do modyfikacji plików specyficznych dla danego panelu.
ODKRYJ NASZĄ
Whitepaper
Osiągnij idealną interakcję użytkownika z wyświetlaczem dzięki odpowiedniemu czujnikowi Touch Sensor IC. Czy kiedykolwiek zmagałeś się z problemami związanymi z fantomowymi dotknięciami lub certyfikacją? Rozwiń swoje prace B+R jak profesjonalista dzięki naszemu Whitepaperowi!



