Nur für privaten, experimentellen Gebrauch. Bau, Download und Nutzung erfolgen auf eigene Verantwortung. Niemals an Unternehmensrechner, Produktivsysteme, Industrieanlagen oder sicherheitskritische Systeme anschließen oder diese bedienen. Experimenteller Referenzprototyp ohne freiwillige Funktions- oder Sicherheitsgarantie. Haftung und Gewährleistung werden nur im gesetzlich zulässigen Umfang ausgeschlossen; zwingende Ansprüche bleiben unberührt. Vollständiger Nutzungshinweis und Haftungsausschluss.
Am 30.09.2026 wurde die echte Firmware für Pico 2 / RP2350, ARM Secure, Cortex-M33 vollständig kompiliert, gelinkt und als UF2 erzeugt. Dieser Crossbuild verwendet den offiziellen SDK und den echten TinyUSB-Treiber. Die nativen Simulationstests sind eine zusätzliche, getrennte Prüfung.
Verwendete Versionen
| Bestandteil | Version / Commit |
|---|---|
| Raspberry Pi Pico SDK | Tag 2.1.1, Commit bddd20f928ce76142793bef434d4f75f4af6e433 |
| TinyUSB im SDK | 0.18.0, Commit 86ad6e56c1700e85f1c5678607a762cfe3aa2f47 |
| Offizielle Arm GNU Toolchain | 14.2.Rel1, GCC 14.2.1 20241119, Build arm-14.52, macOS arm64 |
| CMake | 3.31.6, isoliert in temporärer Python-Umgebung |
| picotool für UF2 | 2.3.2-develop, Commit ba3df406c37774144a059b2bdae73ab52587a1d2; automatisch vom SDK geladen und ohne libusb gebaut |
| Native Tests | Apple Clang 21.0.0.21000101; Warnungen als Fehler, AddressSanitizer und UndefinedBehaviorSanitizer |
Es wurden keine System- oder Homebrew-Werkzeuge installiert oder verändert. SDK, Toolchain, CMake, picotool und Build lagen ausschließlich unter /tmp. Der SDK lädt standardmäßig picotool aus dessen develop-Branch; für einen reproduzierbaren späteren Build ein kompatibles picotool mit dokumentierter Version vorab bereitstellen.
Ausgeführter Crossbuild
Für die Veröffentlichung ist der lokale Arbeitsverzeichnispfad durch einen relativen Projektpfad ersetzt. Die folgenden Befehle werden im Verzeichnis hardware-box ausgeführt.
/tmp/hb-cross-tools/bin/cmake -S pico -B /tmp/hb-pico-build-2.1.1 -DPICO_BOARD=pico2 -DPICO_SDK_PATH=/tmp/hb-pico-sdk-2.1.1 -DPICO_TOOLCHAIN_PATH=/tmp/arm-gnu-toolchain-14.2.rel1-darwin-arm64-arm-none-eabi -DPICOTOOL_FETCH_FROM_GIT_PATH=/tmp/hb-picotool-fetch
/tmp/hb-cross-tools/bin/cmake --build /tmp/hb-pico-build-2.1.1 --parallel 8
Ergebnis: hardware_box_pico.elf, .bin, .hex und .uf2. Der finale Build war erfolgreich mit -Wall -Wextra -Werror. Ein dabei entdeckter GCC-Hinweis zur Signedness der CRC-Schiebeoperation wurde durch einen expliziten uint32_t-Zwischenwert behoben; sämtliche nativen Tests bestanden anschließend erneut.
Die ELF-Größenprüfung ergab 34.228 Bytes text, 0 Bytes data und 3.316 Bytes bss. Das ist keine Messung der maximalen Stack-Nutzung.
UF2 SHA-256:
24d898071e9b092a0b80efd40e8add066dcddfdc3014c52f08463e8750308bcd
picotool info -a erkannte die erzeugte Datei als rp2350-arm-s, Pico-Board pico2, SDK 2.1.1, Programm Hardware Box HID, Version 1.0.0, Startadresse 0x10000000 und ARM-Secure-Image ohne zusätzlich aktivierte Sicherheitsfunktionen.
Zusätzliche Prüfungen
- Native CMake-Konfiguration, beide Targets und CTest: 2/2 Tests bestanden.
HB_SANITIZE=1und der exakte SDK-TinyUSB-Pfad: Protokolltests, 20.000 begrenzte Fuzz-Inputs, Firmware-Sicherheits-Simulation und Deskriptor-Integration bestanden mit ASan/UBSan.- Die USB-Deskriptorprüfung bestätigte drei HID-Interfaces, Boot-Protokolle für Tastatur und relative Maus, passende Endpoints, 8/5/5-Byte-Reports und Seriennummern.
Offen: Kein Gerät wurde geflasht. USB-Enumeration, reale UART-Übertragung, GPIO-Verhalten, elektrotechnische Isolation, Not-Aus am aufgebauten Gerät, BIOS/UEFI sowie Windows/macOS/Linux wurden nicht physisch geprüft. Der erfolgreiche Crossbuild bestätigt die Kompilierbarkeit und UF2-Erzeugung, nicht diese Hardwareeigenschaften.