ZPUTA (ZPU-Testanwendung)
ZPUTA
Urspruenglich zielten die ZPUTA/zOS-Entwicklungen nur auf die ZPU-Architektur ab, und sie hatten zwei primaere Ausfuehrungsmethoden:
- als von IOCP gebootete Anwendung,
- eigenstaendig als ZPU Evo Startup-Firmware gebootet.
Kuerzlich wurde zOS/ZPUTA auf die ARM Cortex-M4-Architektur portiert, fuer die Verwendung mit dem Freescale K64F im tranZPUterSW-Projekt. Da der K64F eine feste Architektur-CPU/SoC ist, existiert nur eine Ausfuehrungsmethode: 'eigenstaendig'.
Die Idee hinter ZPUTA ist hauptsaechlich das Testen, den internen Zugang zu einem eingebetteten Hardwaresystem zu erhalten und Codelets auszufuehren, um Hardwarefunktionen zu testen oder auszuprobieren. Jeder Test wuerde als interne Funktion und als externe App gebaut, was aufgrund der verwendeten Entwicklungsboards von entscheidender Bedeutung war.
Zum Betrieb benoetigt ZPUTA mindestens eine serielle Verbindung (physisch oder USB-virtuell), vorzugsweise zwei fuer Debug-Ausgabe. Auf der primaeren seriellen Verbindung ist es vorzuziehen, ein ANSI/VT100-Terminal-Emulator-Paket angeschlossen zu haben.
Verwendung von ZPUTA
Vor ZPUTA erstellte ich ein Bootstrap-Programm namens IOCP (I/O Control Program), das auf den niedrigsten Hardwareebenen arbeitete und in der Lage war, anspruchsvollere Programme zu booten, z.B. ZPUTA. IOCP ist groessenempfindlich und wurde zum Bootstrappen von jedem Speichergeraet entworfen, und durch Einbeziehung einer SD-Karte und Petit FatFS kann es von einer SD-Karte bootstrappen.
Kommandozeile
Die erste Begegnung mit dem Betriebssystem ist eine Anmeldemeldung, die CPU, Version usw. anzeigt und eine Eingabeaufforderung fuer Befehlseingaben ausgibt:

Die Readline-Tastenzuordnungen und die vollstaendige Befehlsliste fuer Disk-IO, Disk-Buffer, Dateisystem, Speicher, Hardware, Leistungstests, Programmausfuehrung und Anwendungen sind identisch mit der englischen Version und werden dort aufgelistet.
Anwendungen
Technische Details
Speicherorganisation
Die IOCP- und ZPUTA-Speicherkarten sind identisch mit der englischen Version und werden dort dargestellt.
Anwendungsschnittstelle
Wie die meisten Betriebssysteme stellt ZPUTA eine API bereit, die eine entsprechend kompilierte Anwendung nutzen kann, um ihre Groesse und Komplexitaet zu verringern und Funktionen innerhalb des Betriebssystems wie die serielle Verbindung wiederzuverwenden.
Anstatt einen benutzerdefinierten API-Satz zu entwerfen, war es sinnvoller, Methoden innerhalb von ZPUTA fuer die Anwendung freizugeben, z.B. printf. Dies wird durch Erstellen einer Sprungtabelle an einem festen Vektor innerhalb von ZPUTA ermoeglicht.
Die vollstaendige API-Vektortabelle und Codebeispiele sind identisch mit der englischen Version.
Automatische Einrichtung und Erstellung (empfohlen)
build.sh gesteuert, das IOCP, ZPUTA und die Apps fuer eine gewaehlte CPU in einem einzigen Durchgang assembliert/kompiliert. ZPUTA kann als einzelnes eigenstaendiges Image mit eingebetteter Funktionalitaet erstellt werden (nuetzlich, wenn keine SD-Karte vorhanden ist) oder aufgeteilt mit den Applets auf der SD-Karte. Zwei Toolchains sind beteiligt und die Einrichtungsskripte stellen beide bereit:
| Toolchain | Ziel-CPU | Quelle |
|---|---|---|
ZPU zpu-elf-gcc 3.4.2 |
Small Medium Flex Evo EvoMin (ZPU) |
installiert nach /opt/zpu (aus ZPU_TOOLCHAIN_URL) |
ARM arm-none-eabi |
K64F (Kinetis / Teensy 3.5) |
im Repository unter tools/arm mitgeliefert (keine Installation) |
Da beide Toolchains Linux- / Cross-Binaerdateien sind, laeuft die Erstellung nativ unter Linux, in Docker unter macOS und via WSL1 unter Windows:
| Skript | Plattform | Hinweise |
|---|---|---|
setup_zSoft.sh |
Linux (nativ) / macOS (Docker) | Installiert die Basis-Build-Tools + die ZPU-Toolchain; unter macOS erfolgt die Erstellung im zsoft-build:latest Docker-Image. |
setup_zSoft_windows.cmd |
Windows 10 / 11 | Per Doppelklick startbarer Launcher, der das untenstehende PowerShell-Skript aufruft. |
setup_zSoft_windows_native.ps1 |
Windows 10 / 11 (WSL1) | Richtet WSL1 ein (Standard-Distribution Ubuntu-24.04) und fuehrt die Linux-Einrichtung darin aus. |
setup_zSoft_wsl1.sh |
innerhalb WSL1 | Der Linux-Einrichtungsschritt, der automatisch innerhalb der WSL1-Distribution aufgerufen wird. |
Linux / macOS — setup_zSoft.sh
chmod +x setup_zSoft.sh
./setup_zSoft.sh
Windows 10 / 11 — setup_zSoft_windows_native.ps1 — Doppelklick auf setup_zSoft_windows.cmd, oder von einer PowerShell-Eingabeaufforderung:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_zSoft_windows_native.ps1
Die Einrichtung klont ZSOFT_REPO_URL (Standard https://git.eaw.app/eaw/zSoft.git) nach ~/zSoft. Sobald sie fertig ist, erstellen Sie ZPUTA mit (build.sh waehlt automatisch nativ / Docker / WSL1 fuer den Host):
./build.sh -C Evo -O zputa # ZPUTA for the Evo ZPU
./build.sh -C K64F -O zputa # ZPUTA for the K64F (ARM Cortex-M4)
./build.sh -h # all options (-C CPU, -I IOCP, -O os, -o os ver, addresses, sizes ...)
build/ und build/SD/ — das Boot-ROM (BOOT.ROM / BOOTTINY.ROM), der IOCP_<func>_<addr>.bin-Bootloader und die ZPUTA-.bin, dazu die bin/-App-Binaerdateien, bereit zum Kopieren auf eine FAT-formatierte SD-Karte.
Nuetzliche Umgebungsvariablen-Ueberschreibungen:
| Variable | Zweck |
|---|---|
ZSOFT_REPO_URL |
Zu klonendes Repository (Standard https://git.eaw.app/eaw/zSoft.git). |
ZSOFT_DIR |
Erstellung innerhalb eines vorhandenen Checkouts statt Klonen. |
ZPU_TOOLCHAIN_URL |
Speicherort des zpu-elf-gcc 3.4.2 Toolchain-Tarballs, installiert nach /opt/zpu. |
ZSOFT_BUILD_IMAGE |
Docker-Image fuer die macOS-Erstellung (Standard zsoft-build:latest). |
ZSOFT_WSL_DISTRO |
Name der WSL1-Distribution unter Windows (Standard Ubuntu-24.04). |
ZSOFT_ASSUME_YES=1 |
Alle Abfragen nicht-interaktiv bestaetigen (unbeaufsichtigte / CI-Installationen). |
build.sh-Flag-Matrix — im Abschnitt Software Build direkt darunter dokumentiert.
Software-Build
Dieser Abschnitt zeigt, wie ein einfacher ZPUTA-Kernel erstellt wird. Der Ausgangspunkt fuer den Build von ZPUTA ist das ‘build.sh’-Skript.
Pfade
Die vollstaendige Pfadtabelle und Build-Tree-Dokumentation sind identisch mit der englischen Version.
Werkzeuge
Alle Entwicklung erfolgte unter Linux, insbesondere Debian/Ubuntu. Die erforderliche Software umfasst die ZPU GCC ToolChain und optional Arduino und Teensyduino.
Build.sh
Die vollstaendige build.sh-Dokumentation mit allen Parametern und Beispielen finden Sie in der englischen Version.
Danksagungen
Danksagungen und Lizenzen sind identisch mit der englischen Version.
Lizenzen
Die FreeBSD-Lizenz
Dieses Projekt steht unter der FreeBSD-Lizenz. Details finden Sie in der englischen Version.
Die GNU Public License v3
Teile dieses Projekts stehen unter der GPLv3. Details finden Sie in der englischen Version.