1. RadioShuttle STM32 Utility
„RadioShuttle STM32 Utility“ ist ein spezielles Tool, mit dessen Hilfe sich Firmware über eine USB-Verbindung und unter Verwendung des DFU-Protokolls einfach auf ein RadioShuttle STM32-kompatibles Board hochladen lässt. Das Tool kann über eine Kommandozeile von Mac-, Windows- und Linux-Computern genutzt werden, oder über eine grafische Benutzeroberfläche von Mac- und Windows-Rechnern. Firmware lässt sich auf/von STM32-MCUs hoch- bzw. herunterladen. Das Tool kann mit RadioShuttle-kompatiblen Boards, die bei der Herstellung mit einer gültigen Lizenz (Code) versehen wurden, genutzt werden.
2. Systemvoraussetzungen
- Mac:
ab macOS 10.9 - Windows:
ab Windows 7 - Linux:
Linux ab Kernel 2.6.16
glibc ab 2.4
Hinweis:
Die Software „RadioShuttle STM32 Utility“ funktioniert nur mit vom Hersteller aktivierten Boards. Alle LoRa-Boards sind für die Software „STM32 Utility“ vorbereitet.
3. Firmware auf ein STM32-Board laden
- Verbinden Sie das Board über ein Micro-USB-Kabel mit dem Computer (Abb.1)
Wichtiger Hinweis für Windows-Anwender:
Bevor Sie das STM32-Target-Board unter Windows nutzen können, müssen die RadioShuttle-Treiber installiert werden. Eine Anleitung dazu finden Sie in Abschnitt 7. Treiberinstallation unter Windows.
- Laden Sie das Zip-Archiv RadioShuttle STM32 Tools herunter
- Entpacken Sie das Archiv
- Öffnen Sie das Tool „RadioShuttle STM32 Utility“
Das Board muss zuerst in den DFU-Bootmodus versetzt werden (Statuszeile: "STM32 DFU Target not available (enable via User and Reset button)"
):
- Halten Sie den „User“-Taster gedrückt und betätigen Sie einmal kurz den „Reset“-Taster (Abb. 2)
Nun befindet sich das Board im USB DFU-Bootmodus.
GUI (Windows/Mac)
- Ziehen Sie die „.bin“-Datei, in der sich die Firmware befindet, in das Fenster (Abb. 3a+b):
- Sie können die „.bin“-Datei auch direkt auf das „RadioShuttle STM32 Utility“-Programmicon ziehen
- Alternativ haben Sie die Möglichkeit, über das Menü „File > Upload to target“ zu gehen und dort die „.bin“-Datei auszuwählen
Kommandozeile (Windows/Mac/UNIX)
- Siehe Abschnitt 6. Kommandozeilen-Parameter
Bevor Sie die neue Firmware hochladen können, muss die Statusmeldung im Programmfenster so aussehen:"STM32 (ID:0) Flash: 256 kB"
.
ID: 0
bezeichnet die fortlaufende Nummer des über USB angeschlossenen Boards. Mit dem Tool lassen sich mehrere Boards mit demselben Host verbinden, wobei die ID zwischen den verschiedenen Boards differiert.
Beachten Sie bitte, dass die App „RadioShuttle Utility“ nach dem Hochladen der Firmware den Inhalt automatisch prüft (Abb. 4). Nachdem die Firmware erfolgreich auf das Target-Board geladen wurde, wird die Software automatisch zurückgesetzt, was bedeutet, dass das Board den DFU-Bootmodus verlässt und das neu installierte Programm startet. Um erneut in den DFU-Bootmodus zu gelangen, muss die am Beginn dieses Abschnitts gezeigte Tastenkombination gedrückt werden.
Sobald die Firmware erfolgreich auf das Board gespielt worden ist, öffnet sich automatisch ein Fenster des Programms macOS „Terminal“ (Abb. 5a), das die gesamte Ausgabe des geladenen Programms anzeigt. Dazu gehören beispielsweise die Version des ARM-Compilers, die Versorgungsspannung des Boards und die Art der Quelle, verfügbarer Speicher usw.
Hinweis:
Sollte das Terminalprogramm nicht (wie oben beschrieben) automatisch starten, gehen Sie bitte im „RadioShuttle STM32 Utility“ auf den Menüeintrag „Terminal > ttyusbmodem<…>“.
Innerhalb von 10 Sekunden können zusätzliche Befehle eingegeben werden. Nach Ablauf dieser Zeitspanne ist der Eingang deaktiviert.
Kommandos:
r -- Reset d -- Hexdump of memory address [offset count] h -- help for the command (e.g.: h b [help for blinky]) q -- quit program and continue B -- CPUBench example CPU benchmark p -- Properties non volatile settings editor l -- LoRaPingPong raw LoRa ping pong example w -- RadioContinuousTX LoRa radio continues wave TX test b -- Blinky example without LoRa n -- RadioTestNew RadioShuttle test example x -- PanicButton RadioShuttle panic button example t -- RemoteTempSensor RadioShuttle remote temperature sensor k -- RemoteRelay RadioShuttle remote relay control c -- Continue with default program
Nach 10 Sekunden zeigt das SMT32-Dienstprogramm die verwendete Funkfrequenz, den Spreizfaktor, die Bandbreite, den Modus, in dem der Knoten gestartet wird (z. B. „Node Offline“) usw. an.
Unter Windows können Sie das Programm Tera Term zum Verbinden an den richtigen Virtual-COM-Port nutzen (Abb. 5b).
- Gehen Sie auf „Setup > Serial port…“ und geben Sie den richtigen seriellen Port an (in unserem Beispiel ist das „COM4“):
- Klicken Sie auf „OK“
Danach öffnet Tera Term ein Programmfenster (Abb. 5b), das die gesamte Ausgabe des geladenen Programms anzeigt.
4. Benutzerdefinierte Einstellungen
Das Menü „Preferences“ (Abb. 6) ist optional und wird normalerweise nicht benötigt, es sei denn, spezielle Parameter, wie z. B. die Flash-Startadresse (Offset) weichen von der Standardadresse ab oder die Größe des Flashs soll begrenzt werden.
- (Windows): Gehen Sie auf „Help > Preferences…“.
(Mac): Gehen Sie auf „RadioShuttle STM32 Utility > Preferences…“ - Wählen Sie aus dem Aufklappmenü „STM32 Target:“ das gewünschte Board aus, z. B. „STM32 ID:0“
- Falls erforderlich, passen Sie die Werte für „Offset“ und „Size“ an:
Aktivieren Sie die Checkbox „Options“ und neue Werte für den Offset, zur Festlegung einer eigenen Adresse, und die Größe („Size“) ein. Die Werte können entweder in dezimaler oder in hexadezimaler Notation eingegeben werden
Die benutzerdefinierten Einstellungen werden gespeichert und beim nächsten Start des Tools erneut verwendet. Im Fall von mehreren verbundenen Target-Boards wird die ID des Boards dagegen nicht gespeichert. Das Tool verwendet automatisch das erste Target-Board, das nach dem Start gefunden wird.
5. Flash-Speicher auslesen
- Gehen Sie auf „File > Download from target“
Beachten Sie bitte, dass beim Herunterladen der gesamte Flash-Speicher extrahiert und in eine „.bin“-Datei auf dem Host gespeichert wird. Also selbst wenn nur ein kleiner Teil verwendet wird – der gesamte Flash-Inhalt wird entpackt und gespeichert. Das liegt daran, dass das Tool während des Downloads nicht weiß, wieviel des gesamten Flash-Speichers tatsächlich verwendet wird und deshalb alles ausliest. Mithilfe der Größenoptionen („Offset“/„Size“) lässt sich die Download-Größe begrenzen.
Wichtiger Hinweis:
Das Tool löscht nicht den gesamten Inhalt des Speicherchips, sondern löscht bzw. schreibt nur die Größe der „.bin“-Datei in den Speicher und bewahrt die übrigen vorhandenen Daten im Flash-Speicher.
6. Kommandozeilen-Parameter
Statt mit dem „RadioShuttle STM32 Utility“ lässt sich die Firmware auch per Kommandozeilen-Tool auf das Board flashen.
- Wechseln Sie dazu in der Kommandozeile in das Verzeichnis, in dem „RadioShuttleSTM32Tool“ installiert ist
- Geben Sie folgende Zeile ein:
RadioShuttleSTM32Tool
Nach dem Start wird eine Liste aller verfügbaren Kommandozeilen-Optionen angezeigt.
Optionen
-l list connected STM32 USB-targets
-u upload image to target device
-d download image from target device
-e erase flash chip or pages (via offset/length)
-o offset of target flash address for download/upload (optional)
-s size of target flash operation for download/upload/erase
-i index for multiple targets (default: 0)
-f image file (default: image.bin)
-q no text output (quiet)
Achtung:
Verwenden Sie die Option erase flash chip or pages
mit Vorsicht. Beim Löschen des gesamten Chips werden ggf. auch Bootloaderdateien sowie permanenter Speicherinhalt entfernt! Als Vorsichtsmaßnahme ist diese Option deshalb in „RadioShuttle STM32 Utility“ auch nicht verfügbar.
Beispiele
Beispiel zum Flashen des Boards mit der Datei „MyProg.bin“:RadioShuttleSTM32Tool MyProg.bin
Flashen des Boards mit der Datei „MyProg.bin“ mit dem Flashspeicher-Offset 0x0400:RadioShuttleSTM32Tool -o 0x0400 MyProg.bin
Die komplette Firmware eines Boards in die Datei „flash.bin“ flashen:RadioShuttleSTM32Tool -d -f /Users/rs/Desktop/flash.bin
Exit codes
0: Success
1: No Device
2: Device Read Error
3: Device Write Error
4: Device Erase Error
5: Firmware Verify Error
6: USB Error
7: Parameter Error (command line arguments)
8: Unix Error (out of memory etc)
9: Offset Alignment Error
10: Invalid Start Address
11: Read File Error
12: Write File Error
13: Firmware Too Big
7. Treiberinstallation unter Windows
Bevor Sie das STM32-Target-Board unter Windows nutzen können, müssen die erforderlichen Gerätetreiber installiert werden.
Installation des „STM32 BOOTLOADER“-Treibers
- Bringen Sie das STM32-Board, welches Sie mit einem Windows-Computer verbunden haben, in den DFU-Bootmodus indem Sie den „User“-Taster gedrückt halten und den „Reset“-Taster einmal kurz betätigen (Abb. 2)
- Öffnen Sie den Windows „Geräte-Manager“
Hinweis:
Wurde auf dem Board bereits ein älterer Treiber installiert oder hat Windows dem STM32-Board automatisch einen Treiber zugewiesen, z. B. in „Universal Serial Bus devices“ oder „USB-Controller“, muss dieser zuerst deinstalliert werden:
- Führen Sie einen Doppelklick auf den Geräteeintrag aus, um die Eigenschaften zu öffnen
- Klicken Sie in der Registerkarte „Treiber“ auf „Deinstallieren“
- Vergewissern Sie sich, dass Sie die Checkbox „Die Treibersoftware für dieses Gerät löschen“ aktiviert haben und klicken Sie auf „OK“
- Halten Sie den „User“-Taster gedrückt und betätigen Sie einmal kurz den „Reset“-Taster, um das Board erneut in den DFU-Bootmodus zu bringen
Nun erscheint der Eintrag „STM32 BOOTLOADER“ unter „Andere Geräte“. Das Icon ist mit einer Warnung versehen, dass Windows keinen passenden Treiber finden konnte:
Der Treiber kann jetzt installiert werden:
- Entpacken Sie das „RadioShuttle STM32 Tools.zip“-Archiv
- Führen Sie einen Doppelklick auf den Eintrag „STM32 BOOTLOADER“ aus, um die Eigenschaften zu öffnen
- Klicken Sie in der Registerkarte „Allgemein“ auf „Treiber aktualisieren…“
Das Windows-System fragt, wie Sie nach dem benötigten Treiber suchen möchten:
- Klicken Sie auf „Auf dem Computer nach Treibersoftware suchen“
(Wählen Sie nicht die Methode „Automatisch nach aktueller Treibersoftware suchen“!) - Navigieren Sie mithilfe der Schaltfläche „Durchsuchen…“ zu dem entpackten Ordner „RadioShuttle STM32 Tools“
- Navigieren Sie in diesem Ordner zu „Windows > driver“ und klicken Sie auf „OK“
- Klicken Sie auf „Weiter“ und bestätigen Sie den folgenden Dialog mit „Installieren“
Sobald Windows die Treibersoftware erfolgreich installiert hat, erscheint der Eintrag „STM32 BOOTLOADER“ im „Geräte-Manager“ unter „Universal Serial Bus devices“:
- Führen Sie einen Doppelklick auf den Eintrag „STM32 BOOTLOADER“ aus und vergewissern Sie sich, dass die Informationen so aussehen:
Installation des CDC DEVICE (Virtual Serial COM Port)
In einem zweiten Schritt muss der Treiber „CDC DEVICE“ installiert werden:
- Drücken Sie auf dem Target-Board den „Reset“-Taster
Hinweis:
Wurde auf dem Board bereits ein älterer Treiber installiert oder hat Windows dem STM32-Board automatisch einen Treiber zugewiesen, z. B. in „Anschlüsse (COM & LPT)“, muss dieser zuerst deinstalliert werden:
- Führen Sie einen Doppelklick auf den Geräteeintrag aus, um die Eigenschaften zu öffnen
- Klicken Sie in der Registerkarte „Treiber“ auf „Deinstallieren“
- Vergewissern Sie sich, dass Sie die Checkbox „Die Treibersoftware für dieses Gerät löschen“ aktiviert haben und klicken Sie auf „OK“
Wurde bisher noch kein Treiber zugewiesen, erscheint der Eintrag „CDC DEVICE“ unter „Andere Geräte“. Das Icon ist mit einer Warnung versehen, dass Windows keinen passenden Treiber finden konnte:
Der Treiber kann jetzt installiert werden:
- Führen Sie einen Doppelklick auf den Eintrag „CDC DEVICE“ aus, um die Eigenschaften zu öffnen
- Klicken Sie in der Registerkarte „Allgemein“ auf „Treiber aktualisieren…“
Das Windows-System fragt, wie Sie nach dem benötigten Treiber suchen möchten:
- Klicken Sie auf „Auf dem Computer nach Treibersoftware suchen“
(Wählen Sie nicht die Methode „Automatisch nach aktueller Treibersoftware suchen“!) - Navigieren Sie mithilfe der Schaltfläche „Durchsuchen…“ zu dem entpackten Ordner „RadioShuttle STM32 Tools“
- Navigieren Sie in diesem Ordner zu „Windows > driver“ und klicken Sie auf „OK“
- Klicken Sie auf „Weiter“ und bestätigen Sie den folgenden Dialog mit „Installieren“
Sobald Windows die Treibersoftware erfolgreich installiert hat, erscheint der Eintrag „STM32 CDC (z. B. COM20)“ im „Geräte-Manager“ unter „Anschlüsse (COM & LPT)“:
- Führen Sie einen Doppelklick auf den Eintrag „STM32 CDC (z. B. COM20)“ aus und vergewissern Sie sich, dass die Informationen so aussehen:
Wurde bisher noch kein Treiber zugewiesen, wurden die Treiber erfolgreich installiert und Sie können in Abschnitt 3. Firmware auf ein STM32-Board laden weiterlesen.
8. Lizensierung
Das Tool wird nur Kunden zur Verfügung gestellt, die ein RadioShuttle-kompatibles Board mit einer RadioShuttle-Lizenz erworben haben. Auf dem Board muss bei der Herstellung RadioShuttle aktiviert worden sein, sonst wird es nicht unterstützt und funktioniert nicht.
9. Fragen & Antworten
a) Mein Board wird im „RadioShuttle STM32 Utility“ nicht angezeigt.
Prüfen Sie folgende Punkte:
- Ist das USB-Kabel mit dem Host verbunden?
- Ist das USB-Kabel mit dem Board verbunden?
- Wurde das Board in den DFU-Bootmodus versetzt (siehe 3. Firmware auf ein STM32-Board laden)?
- Wird das Board von RadioShuttle unterstützt?
b) Das Laden der Firmware hat bei z. B. 0x08001000 einen Fehler.
Einige MCU-Chips könnten schreibgeschützt sein, der Speicher kann nicht überschrieben werden oder bestimmte Speicherblöcke sind schreibgeschützt.
c) Das Herunterladen von Speicherinhalten schlägt fehl.
Einige MCU-Chips könnten gegen Auslesen geschützt sein. Bitte wenden Sie sich an Ihren Händler.
d) Nach dem Flashen startet das Programm nicht mehr.
Standardmäßig ist die Startadresse 0x08000000. Möglicherweise benötigt die Software eine andere Startadresse, die Sie im Menü „Preferences“ angeben können. Ebenso kann es sein, dass die Firmware („.bin“) nicht mit Ihrem Board kompatibel ist oder Softwarefehler enthält. In diesem Fall vereinfachen Sie die Anwendung und testen Sie erneut.
e) Wie lang dauert es, die Firmware hochzuladen und den Flash Speicher zu programmieren?
Das hängt von der Größe des Flash-Images („.bin“) ab. Ein kleines Image lässt sich innerhalb einer Sekunde in den Speicher schreiben. Ein größeres, z. B. 200 kB großes Image, benötigt 3 Sekunden.
© 2018 www.radioshuttle.de