Für die Programmierung eigener Programme für das Yocto-Image, mit dem Ziel der Ausführung auf dem Raspberry Pi, ist zunächst das SDK erforderlich. Zu diesem Zweck wird ein weiteres Image erstellt, das auf das erste Image aufbaut. Das Resultat ist ein Image für die SD-Karte, das eine geringe Größe hat, aber auch ein vollständiges SDK, um alle benötigten Softwarequellen zur Verfügung zu haben.
Die Konfiguration des zweiten Images erfolgt wiederum im Verzeichnis meta-raspilab/recipes-core/images. Es hat sich als vorteilhaft erwiesen, die identische Bezeichnung des Images zu verwenden, wobei lediglich die Bezeichnung -dev ergänzt wird.
# ~/yocto/poky-kirstone/meta-raspilab/recipes-core/images/raspilab-image-dev.bb
SUMMARY = "RaspiLab development image"
inherit core-image
inherit populate_sdk_qt6
require raspilab-image.bb
IMAGE_FEATURES += "dev-pkgs"
Das SDK kann ebenfalls mit bitbake erstellt werden. Dazu ist in der Docker-Umgebung folgende Anweisung auszuführen:
bitbake raspilab-image-dev -c populate_sdk
Die Erstellung des Software Development Kits (SDK) erfordert einen erheblichen Zeitaufwand und einen hohen Speicherbedarf, sowohl Arbeitsspeicher als auch Festplattenspeicher. Das System sollte über 32 GB Arbeitsspeicher und 400 GB freien Festplattenspeicher verfügen.
Im Falle eines Absturzes des Rechners oder des Docker-Containers kann die Erstellung an der entsprechenden Stelle wieder aufgenommen werden. Dazu ist es erforderlich, den Docker-Container neu zu starten, das Script zur Initialisierung der Yocto-Umgebung auszuführen und die Erstellung des SDKs fortzusetzen.
cd ~/yocto
docker run --rm -it --name=crops-yocto -v yocto:/workdir crops/poky:debian-12 --workdir=/workdir
source poky-kirkstone/oe-init-build-env rpi-build
bitbake raspilab-image-dev -c populate_sdk
Sollte der Build-Prozess fortgesetzt werden, können unter Umständen Fehlermeldungen ausgegeben werden, da ein oder mehrere Pakete nicht vollständig erstellt werden konnten. In einem solchen Fall besteht die Möglichkeit, die fehlerhaften Pakete in einen sauberen Zustand zurückzusetzen.
bitbake -c cleansstate <paketname>
Nach erfolgreicher Erstellung des SDK befindet sich das Installationsscript für das Hostsystem im Verzeichnis ~/yocto/rpi-build/tmp/deploy/sdk.
Die Ausführung des Installationsskripts wird im Hostsystem vorgenommen.
cd ~/yocto/rpi-build/tmp/deploy/sdk
./poky-glibc-x86_64-raspilab-image-dev-cortexa72-raspberrypi4-64-toolchain-4.0.25.sh
Poky (Yocto Project Reference Distro) SDK installer version 4.0.25
==================================================================
Enter target directory for SDK (default: /opt/poky/4.0.25): ~/yocto/SDK
You are about to install the SDK to "/home/marco/yocto/SDK". Proceed [Y/n]? Y
Extracting SDK..................................................................................................................................................................................................................................................................................................................................................................................................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$ . /home/marco/poky/SDK/environment-setup-cortexa72-poky-linux
Im darauffolgenden Schritt erfolgt die Einrichtung der IDE. Da die Software für den Raspberry Pi mit dem Qt Creator erstellt werden soll, wird im Folgenden die Konfiguration des Kits erläutert. Es ist von essentieller Wichtigkeit, dass vor dem Start der IDE das von dem Installationsscript angegebene Script zur Initialisierung der Build-Umgebung auf dem Hostsystem ausgeführt wird.
. /home/marco/poky/SDK/environment-setup-cortexa72-poky-linux
qtcreator &
Die Konfiguration des Kits befindet sich im Menü Bearbeiten > Einstellungen...
Der Debugger und der Compiler sollten automatisch gefunden worden sein.
Für den Debugger lautet der Pfad:~/yocto/SDK/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gdb
Der Compiler sollte unter folgenden Pfaden gefunden werden, dabei wurde ein C-Compiler und ein C++-Compiler gefunden.~/yocto/SDK/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc
~/yocto/SDK/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++
Die Qt-Version bzw qmake6 wurde sehr wahrscheinlich nicht automatisch gefunden. Mit der Schaltfläche Hinzufügen kann eine neue Qt-Version angegeben werden.
Der Name kann wie folgt gewählt werden: Qt %{Qt:Version} (Raspberry Pi 4-64)
Als qmake-path wird folgender Pfad gewählt: ~/yocto/SDK/sysroots/x86_64-pokysdk-linux/usr/bin/qmake6
Es ist darauf zu achten hier das Sysroot für das Hostsystem zu verwenden ist. Im Sysroot des Zielsystems wird sich kein qmake6 befinden, bzw. liesse sich damit nur auf dem Zielsystem arbeiten.
Im letzen Schritt wird nun das Kit angelegt. Hier wird ein Name vergeben, das Sysroot, der Compiler, Debugger und die Qt-Version eingetragen.
Beim Sysroot ist dieses mal darauf zu achten das hier das Sysroot des Zielsystems verwendet wird.
Die Einrichtung kann mit der Schaltfläche Übernehmen bzw. Ok abgeschlossen werden, die IDE ist nun bereit.
