RadioShuttle STM32 Utility

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 „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)
Abb. 1: Micro-USB-Kabelverbindung zwischen Host und Target-Board

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.

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)
Abb. 2: „User“- und „Reset“-Taster auf dem Target-Board

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):
Abb. 3a: Binärdatei wird in das Fenster des RadioShuttle STM32 Utility gezogen (Windows)
Abb. 3b: Binärdatei wird in das Fenster des RadioShuttle STM32 Utility gezogen (Mac)
  • 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)

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.

Abb. 4: Die Binärdatei wird auf das Board geflasht

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.

Innerhalb von 10 Sekunden können zusätzliche Befehle eingegeben werden. Nach Ablauf dieser Zeitspanne ist der Eingang deaktiviert.

Kommandos:

p   PropertyEditor
t LoRa PingPong test
x LoRa TX continuous wave test
d Hexdump of memory address [offset count]
r Reset
c Continue with RadioShuttle

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.

Abb. 5a: Ausgabe des Programs macOS „Terminal“

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 „COM20“):
  • Klicken Sie auf „OK“

Danach öffnet Tera Term ein Programmfenster (Abb. 5b), das die gesamte Ausgabe des geladenen Programms anzeigt.

Abb. 5b: Ausgabe des Programms „TeraTerm“ (Windows)

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.

Abb. 6: Menü „Preferences“
  • (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 eingeben 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:
Die Treiberversion muss mindestens 1.0.0.0 sein

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:
Die Treiberversion muss mindestens 1.0.0.0 sein

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.
By default, the start address is 0x08000000. Maybe the software requires another start address which can be specified in the “Preferences” setup. Another option may be that the firmware (“.bin”) is not compatible with your board or contains software errors. In this case simplify the application and test again.

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.

(c) 2019 www.radioshuttle.de