LINK / BAUUNTERLAGEN

Pico-Firmware: Buildnachweis

SDK, Toolchain, Crossbuild und Firmware-Hash.

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=1 und 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.