webMCU

Erster ausführbarer Entwicklungsstand für STM32G431CB. Compiler und Linker laufen als WebAssembly vollständig im Browser.

Arbeitsfläche und Projekte

Die obere Featureleiste öffnet Explorer, Debugger, Serialmonitor und Ausgabe. Die Toolbar bietet Verbindung, Run, Speichern, Build/Rebuild und Flashen. Run speichert, kompiliert und flasht; Status und Downloads stehen in der Ausgabe. Projekte und Sammlungen erreichst du über das Menü ⋯ im Explorer.

Das Dropdown „Aktives Projekt“ wählt das Projekt; darunter erscheint nur dessen Datei- und Ordnerbaum. Rechtsklick auf das Projekt bietet Einstellungen, Kopieren und ZIP-Export; Rechtsklick auf Dateien bietet Öffnen, Umbenennen und Löschen. Browserprojekte können später in einen freigegebenen Ordner übertragen werden. Neue Projekte werden bei Anlage gespeichert.

Öffnen und speichern

Die portable WebMCU-Studio.html in Chrome öffnen. Kein Server oder Hilfsprogramm erforderlich. Alternativ die statisch gehostete Ausgabe nutzen und unter ? → Offline speichern vollständig herunterladen.

Arbeitsordner öffnen, Projekt mit dem Plus neben der Auswahl anlegen und mit Strg+S speichern. Ohne gewählten Ordner liegt das Projekt zunächst im Browser. Vor jedem Build wird gespeichert. Projekt-ZIP regelmäßig zur Sicherung herunterladen.

Offizielle Demos und Controller

Unter Sammlungen → Demos laden die öffentliche Sammlung webmcu-demos öffnen. Weitere GitHub-Repositories lassen sich zusätzlich verbinden. Unter Bibliotheken → Quellen verwalten lassen sich auch lokale Ordner mit Bibliotheks- und Beispielkatalogen verbinden. Geladene Quellen bleiben offline nutzbar; die Standardquelle bleibt daneben erhalten. „Projekt öffnen“ lädt eine Vorlage direkt als unabhängiges Projekt.

Bei „Neues Projekt“ den Controller aus dem Dropdown wählen. Profile lassen sich aus dem Demo-Repository laden. „Eigenes Profil“ speichert eine JSON-Datei unter .webmcu/controllers/ im freigegebenen Arbeitsordner. Lokale Profile werden bei Aktualisierungen nicht überschrieben. Neue Controller benötigen neben den Profildaten passende Startup- und Headerpakete; zunächst ist das G431-Paket enthalten.

Vorlagen und Register

Register-Blink, Live-Watches oder leeres Registerprojekt wählen. Die Originalheader von ST und CMSIS sind enthalten. Keine HAL/LL-Treiber. Die Blink- und Live-Demo nimmt beispielhaft PB1 → Vorwiderstand → LED → GND an. Vor Nutzung mit der eigenen Platine vergleichen.

Build und IntelliSense

Strg+Enter baut ELF, BIN, HEX und MAP. Debug enthält DWARF4. Projekteinstellungen enthalten C-/C++-Standard, Optimierung, Defines und Includes. Die Analyse verwendet das aktive Projekt. Sprachfunktionen sind noch nicht vollständig auf dem Niveau eines vollständigen Language Servers.

Projekteinstellungen

Die Einstellungen sind nach Ziel, Compiler, Includes und Linker/Speicher gegliedert und zeigen die resultierenden Compileroptionen. „Übernehmen“ aktualisiert den bearbeiteten Stand; „Speichern & schließen“ speichert ihn.

Includes öffnen und bearbeiten

Unter „Verwendete Includes“ im Explorer stehen die Header aus der aktiven Compileranalyse. Auf einer wörtlichen #include-Zeile per Rechtsklick „Include-Datei öffnen“ oder F12 wählen. Makrobasierte Include-Namen werden derzeit nicht direkt aufgelöst.

ST- und CMSIS-Header sind normale Projektdateien. Bei Bearbeitung eines Toolchain-Headers entsteht eine lokale Kopie unter headers/toolchain/usr/.... Mit Strg+S oder vor Build wird sie im Projekt gespeichert. Compiler und IntelliSense verwenden diese Kopie auch nach dem Neuladen. Andere Projekte und die eingebetteten Originalheader bleiben unverändert.

Speicherlayout

Unter Projektaktionen → Speicherlayout die Regionen bearbeiten. FLASH und RAM versorgen das mitgelieferte Startup; CCM ist separat. Zusätzliche RAM-Sektionen heißen .noinit_NAME und werden nicht initialisiert. Vorschau prüfen, übernehmen und speichern. Beliebige manuelle Linkerskripte werden nicht automatisch in die GUI zurückübersetzt.

Includes und Controllerbibliotheken

Links „Verfügbare Includes“ aufklappen: vollständiger Projektpfad und Einbindungsstatus stehen direkt in der Liste, die Paketquelle im Tooltip. Anklicken öffnet den Header und seinen Ordner im Dateibaum. Beim Schreiben von #include ergänzt Strg+Leertaste die passenden Dateinamen. Funktionen, Register und Typen kennt IntelliSense nach dem Einbinden.

GPIO, UART und CAN 3.0 kombinieren einen gemeinsamen C++-Header mit dem Adapter des ausgewählten Controllers. Bibliotheken → Quellen verwalten verbindet zusätzliche GitHub-Repositories oder lokale Ordner. Bereits angelegte Projekte behalten ihre eigenen Dateien und Revisionen.

Debug und Live

Debug aktivieren, mit Debug-Informationen kompilieren, passende Firmware flashen und ST-Link verbinden. Globale und statische RAM-Objekte können ohne Core-Halt beobachtet werden; lokale Stack-/Registervariablen benötigen Halt. Mehrere Werte sind kein atomarer Snapshot. Hardwareabnahme dieses Stands steht noch aus; bisherige Protokolltests sind Simulationen.

Serialmonitor

Oben Serialmonitor öffnen, Baudrate einstellen und Port verbinden. Standard: 115200 Baud, 8N1. Unter Format stehen Datenbits, Parität, Stopbits und RTS/CTS bereit. Text wird als UTF-8 dargestellt; Hex zeigt die empfangenen Bytes. Senden unterstützt Text mit keinem Zeilenende, LF, CR oder CRLF sowie Hex-Bytepaare (z. B. 01 A0 FF). Hex-Senden fügt kein Zeilenende an.

Der Empfang läuft beim Ausblenden und beim Wechsel zur Build-Ausgabe weiter; Trennen schließt den Port. Der Puffer hält die letzten 256 KiB, ältere Daten werden verworfen und gezählt. Log speichern exportiert den aktuellen Puffer als Text, in Hex-Ansicht als unveränderte Binärdatei. Keine dauerhafte Aufzeichnung, kein ANSI-Terminal und keine automatische Portverbindung. UTF-8-Zeichen am abgeschnittenen Pufferanfang können als Ersatzzeichen erscheinen. UART-Einstellungen werden lokal gemerkt, Logs nicht.

Als Port kann ein passender USB-UART-Adapter oder ein verfügbarer ST-Link-VCP dienen. UART-Verdrahtung und Baudrate müssen zur Firmware passen. Dies ist unabhängig vom SWD-Debugger. Chrome muss Web Serial bereitstellen; das funktioniert auch offline. Tests mit simulierten Ports sind bestanden, physische UART-/VCP-Abnahme steht noch aus.

USB-DFU

Oben STM32 USB-DFU wählen. Board im System-Bootloader starten (BOOT0/Option Bytes gemäß Board) und USB direkt am MCU anschließen; beim G431 PA11/PA12. Verbinden und Flashen, oder Run. BOOT0 danach zurücksetzen. Die IDE löscht nur belegte Flash-Seiten und liest die Firmware zur Kontrolle zurück. Debugging bleibt über ST-Link. Windows benötigt einen WebUSB-kompatiblen DFU-Treiber. Physische DFU-Abnahme steht noch aus.

Arduino ist vorerst zurückgestellt. Neue Projekte arbeiten auf Registerebene.

Entwicklungsstand

GitHub-Sammlungen können gelesen und Vorlagen offline installiert werden. GitHub/GitLab-Beiträge, weitere Controller, SVD-Registeransicht und der vollständige Debuggerumfang sind noch in Arbeit. Den aktuellen Umfang dokumentiert docs/IMPLEMENTIERUNGSSTAND.md im Repository.