diff --git a/Entwicklungsleitfaden.md b/Entwicklungsleitfaden.md new file mode 100644 index 0000000..162503f --- /dev/null +++ b/Entwicklungsleitfaden.md @@ -0,0 +1,50 @@ +# Entwicklungsleitfaden + +![Entwicklungsleitfaden](images/Entwicklungsleitfaden.png "Entwicklungsleitfaden") + +1. Docker Image bauen \ + Fast die gesamte Entwicklung eines Projektes wird innerhalb von Docker gemacht, da dadurch die Plattformunabhängigkeit gewährleistet ist. Um das Docker Image zu bauen wird der Befehl + ``` + docker build . -t zephyr-configurator + ``` + verwendet. + +2. Docker Volume anlegen \ + Das Docker Volume enthält später das Zephyr SDK, einige Build-Tools, sowie den Source-Code der App. Da der Source-Code später von einer IDE bearbeitet werden soll, wird ein Volume vom Typ `local` verwendet, das das Verzeichnis `$HOME/zephyrproject` nutzt. Zum Erstellen des Volumes wird der Befehl + ``` + docker volume create --driver local --name zephyr --opt type=none --opt device=$HOME/zephyrproject --opt o=uid=root,gid=root --opt o=bind + ``` + verwendet. + +3. Docker Container starten \ + Im nächsten Schritt wird der Container gestartet. Dafür wird der Befehl + ``` + docker run -it -v zephyr:/workdir --rm zephyr-configurator + ``` + verwendet. `--rm` wird dafür genutzt, dass der Container beim Beenden automatisch gelöscht wird. Sonst würde bei jedem Starten ein neuer Container angelegt werden. + +4. Zephyr Workspace anlegen \ + Sobald der Container gestartet wurde, wird ein Menü angezeigt. \ + ![Hauptmenü](images/main_menu.png "Hauptmenü") \ + Im Menü mithilfe der Pfeiltasten `Init Zephyr workspace` auswählen und mit `Enter` bestätigen. + Der Workspace wird dann angelegt. Für den Fall, dass der Workspace schon existiert, wird am Anfang zwar eine Fehlermeldung angezeigt, aber der Workspace wird trotzdem ordnungsgemäß aktualisiert. Nach dem Anlegen des Workspaces wird wieder das Hauptmenü angezeigt. + +5. Leeres Projekt anlegen \ + Mit dem nächsten Menü-Punkt wird ein neues leeres Projekt angelegt. Dieses Projekt ist dann im `/workdir/app`-Verzeichnis gespeichert. Auf dem Host-Betriebssystem ist das dann das `$HOME/zephyrproject/app`-Verzeichnis. + +6. Funktionalitäten hinzufügen \ + Im nächsten Schritt können über den dritten Menü-Punkt weitere Funktionen direkt zum Source-Code hinzugefügt werden. Der Menü-Punkt enthält ein weiteres Untermenü. Die Menüpunkte enthalten dann wieder ein Untermenü. \ + ![Funktionsmenü](images/functions_menu.png "Funktionsmenü") \ + ![Connectivitymenü](images/connectivity_menu.png "Connectivitymenü") \ + Bei der Auswahl einer Funktionalität wird der Code automatisch oberhalb der `main`-Funktion in der `main.c`-Datei eingefügt. Lediglich der Funktionsaufruf muss noch durch den Entwickler an der richtigen Stelle eingefügt werden. + +7. Projekt kompilieren \ + Mit der Auswahl des Unterpunktes `Build project` wird ein Auswahlmenü angezeigt, welcher Mikrocontroller verwendet wird. \ + ![Plattformmenü](images/plattform_menu.png "Plattformmenü") \ + Nach der Auswahl wird das Projekt automatisch kompiliert. \ + Wurde das Projekt zuvor schon für einen anderen Mikrocontroller gebaut, muss zuerst mit dem sechsten Punkt des Hauptmenüs der `build`-Ordner geleert werden. Dann kann das Projekt erfolgreich kompiliert werden. + +8. Projekt flashen \ + Das Flashen ist vergleichsweise schwierig, da das Durchreichen eines USB-Gerätes an einen Docker-Container nicht immer reibungslos funktioniert. Des Weiteren brauchen viele Mikrocontroller auch spezielle Tools zum Flashen. + Deshalb wird unter diesem Menüpunkt nur der Befehl zum Flashen angezeigt, der dann auf dem Host-Betriebssystem im Verzeichnis `$HOME/zephyrproject` ausgeführt werden muss. \ + Dazu müssen dann auch die Flash-Tools, wie zum Beispiel `nrfutil` für nRF-Boards, installiert sein. \ No newline at end of file diff --git a/images/Entwicklungsleitfaden.png b/images/Entwicklungsleitfaden.png new file mode 100644 index 0000000..175d076 Binary files /dev/null and b/images/Entwicklungsleitfaden.png differ diff --git a/images/connectivity_menu.png b/images/connectivity_menu.png new file mode 100644 index 0000000..f4c2f32 Binary files /dev/null and b/images/connectivity_menu.png differ diff --git a/images/functions_menu.png b/images/functions_menu.png new file mode 100644 index 0000000..f19bb10 Binary files /dev/null and b/images/functions_menu.png differ diff --git a/images/main_menu.png b/images/main_menu.png new file mode 100644 index 0000000..b90cc64 Binary files /dev/null and b/images/main_menu.png differ diff --git a/images/plattform_menu.png b/images/plattform_menu.png new file mode 100644 index 0000000..709a856 Binary files /dev/null and b/images/plattform_menu.png differ