Utility zum Übertragen der Firmware per CAN-Bus

Autor: W.Büscher, MKT Systemtechnik .
Stand: 2017-03-15 (ISO8601, YYYY-MM-DD)

Inhalt

  1. Einleitung
  2. Bedienung
  3. Sonderfunktionen
  4. Firmware-Update per CANopen
  5. Weiterführende Informationen

Einleitung

Dieses Dokument beschreibt die seit April 2005 in MKT's CAN-Tester für Windows enthaltene Zusatzfunktion zum Übertragen der Firmware per CAN-Bus.

Achtung: Nicht für aus mehreren Teilen bestehende, mit Keil C51 übersetzte Firmware (mit "Code-Banking") geeignet !
Nur für Geräte mit 16- oder 32-Bit-CPU !

Weil die meisten Geräte von MKT immer 500 kBit/Sekunde als CAN-Baudrate für den Bootloader verwenden (auch wenn die Applikation mit einer anderen Baudrate arbeitet), müssen Sie vor dem Aufruf des Firmware-Update-Utilities sicherstellen, daß die CAN-Baudrate im CAN-Tester auf 500 kBit/Sekunde eingestellt ist. Siehe Handbuch CAN-Tester, Kapitel "Konfiguration".

Screenshot "Firmware Update Utility"

Bedienung des Firmware-Update-Utilities

Abhängig vom zu programmierenden Gerät muss zwischen Update per CAN (ohne CANopen) und Update per CANopen unterschieden werden. Seit März 2017 wird z.B. der CANopen-Buskoppler (IO16-BCCO) als 'Brücke' zwischen CAN/CANopen und den dort angeschlossenen Erweiterungsmodulen ("I/O-Klemmen") verwendet, um die Firmware in allen Slaves zu aktualisieren. Der CAN-Tester erstellt bei Geräten mit CANopen daher zunächst eine Liste aller am Buskoppler angeschlossenen Module. Dazu muss das Bootloader-Protokoll gegebenenfalls im Firmware-Update-Utility umgestellt werden.

Öffnen Sie dazu zunächst das Fenster des 'Firmware Update Tools' im Hauptmenü des CAN-Testers:
Tools .. Firmware Update...

Dieser Menüpunkt zeigt auch an, ob das Programmiertool momentan für Geräte mit oder ohne CANopen konfiguriert ist ("Firmware Update via CAN" oder "Firmware Update via CANopen"). Dies kann ggf. im Firmware-Update-Tool umgestellt werden. Die Einstellung wird dauerhaft in einer Konfigurationsdatei des CAN-Testers abgespeichert.

für Geräte mit CANopen (z.B. Buskoppler Typ "IO16-BCCO"):
Im 'Firmware Update Tool' per Button "More".."Bootloader Protocol".."CANopen, object 5FEx" anwählen.

für Geräte ohne CANopen (z.B. MKT-View & Co):
Im 'Firmware Update Tool' per Button "More".."Bootloader Protocol".."Raw CAN, not CANopen" anwählen.

Zum Starten des im CAN-Tester eingebauten Firmware-Update-Utilities:
  1. Die Verbindung mit dem zu programmierenden Gerät per CAN-Bus herstellen
    (Beim Einschalten des zu programmierenden Gerätes die Tasten zur Aktivierung des Bootloaders gedrückt halten, i.A. die "erste" und "dritte" Funktionstaste. Details sind dem Handbuch des zu programmierenden Gerätes zu entnehmen.
    Bei Geräten, die per CANopen "im laufenden Betrieb" aktualisiert werden, entfällt dieser Schritt).
  2. Im Hauptmenü des CAN-Testers "Tools" (="Werkzeuge") anwählen, dann "Firmware-Update via CAN".
  3. Warten, bis die Verbindung aufgebaut wurde (und sich die Statuszeile grün färbt).
    Bleibt die Statuszeile gelb, oder wird rot, gibt es ein Problem mit dem CAN-Bus (Abschlusswiderstände ? Baudrate ? Falscher CAN-Port ? Fehlerhaft installierte CAN-Treiber-Software ? .... )

  4. Nur bei 'Kombi-Geräten' mit CANopen, z.B. Buskoppler mit installierten Klemm-Modulen:
    In der Auswahlliste unter 'Detected Devices' das zu aktualisierende Gerät anwählen,
    z.B. "Coupler" (Buskoppler) oder den ersten "Slave" eines bestimmten Typs.
    Abhängig von dessen Sortware-Artikel-Nummer wird für den im nächsten Schritt folgenden Datei-Auswahl-Dialog ein entsprechendes Auswahlfilter gesetzt, z.B. art11563_*.hex, wenn das in der Liste angewählte Gerät eine Firmware mit der Software-Artikel-Nummer 11563 enthält.

  5. Die Firmware auswählen ("Load", dann die gewünschte HEX- oder BI2-Datei laden).
  6. Auf der Registerkarte "Firmware Info" kontrollieren, ob die geladene Datei sich wirklich für die angeschlossene Hardware eignet.
    Erkennbar ist dies anhand des Firmware-Titels (z.B. "UPT-Handheld"), der Software-Artikel-Nummer (z.B. 11105), und ggf. des Compilationsdatums. Im Zweifelsfall anhand der Fertigungsliste / Software-Artikel-Liste kontrollieren, welche Firmware (Art.-Nr.) geladen werden muss !
    Anwender eines der 'UPT-Programmiertools' finden die Firmwware, und weitere Informationen dazu im Unterverzeichnis 'firmware' in der Datei 'readme.txt'.
  7. Die Firmware ins Zielsystem schicken ("Send").
    Falls der "Send"-Button noch grau dargestellt ist, konnte noch kein Kontakt zum Zielsystem aufgebaut werden. In diesem Fall die Kabel überprüfen, auch den CAN-Abschlußwiderstand nicht vergessen ! Falls das Zielsystem ein Bedienterminal ist, muss dort im Display eine Meldung des Bootloaders stehen, z.B. "Boot V3 - Expect Download - 500 KBIT/SEC". Ist dies nicht der Fall, das Terminal aus- und wieder einschalten, und nochmal versuchen den Bootloader zu aktivieren.
  8. Warten bis die Übertragung beendet ist (kann einige wenige Minuten dauern !)
  9. Das Fenster des Firmware-Update-Utilities wieder schließen ("Close")

Sonderfunktionen

Mit dem Button "MORE" kann ein Menü geöffnet werden, in dem weitere, für den "normalen" Einsatz nicht benötigte Funktionen zur Verfügung stehen. Dies sind:

Verify
Vergleicht den Pufferinhalt mit dem Inhalt des FLASH-Speichers. Nur verfügbar, wenn die CAN-Bus-Verbindung aufgebaut ist, und wenn schon eine HEX-Datei in den Puffer geladen wurde.

Read
Liest den Inhalt des FLASH-Bausteins per CAN-Bus aus, und legt die Daten (i.A. "Firmware") im Puffer ab. Auch die Anzeige der "Software-Informations-Struktur" wird nach dem Auslesen aktualisiert; man kann also kontrollieren, welche Firmware in ein Gerät geladen wurde, wann diese compiliert wurde, und so weiter. Funktioniert natürlich nur, wenn die Firmware einen solchen Eintrag hat !

Patch
Überprüft den Pufferinhalt, und führt gegebenenfalls kleine Änderungen am Pufferinhalt durch. Dazu zählen:


Send magic number or password
Diese Sonderfunktion wird nur benötigt, wenn z.B. der CAN-Bootloader per CAN-Bootloader aktualisiert werden soll. Dazu muss dem (alten) Bootloader erst ein bestimmtes Passwort gesendet werden (welches dem normalen" Anwender nicht bekannt sein dürfte). Für MKT's CAN-Bootloader ist dies eine 8-ziffrige Hex-Zahl, die mit 44... beginnt.
Seit 2013 vergleicht das Bootloader-Utility die Software-Artikel-Nummer des Bootloaders im zu programmierenden Gerät mit dem von der zu ladenden Firmware erwarteten Wert. Dadurch soll sichergestellt werden, dass der Anwender nicht eine 'falsche' Firmware in das momentan angeschlossene Gerät lädt (bei Geräten mit LPC1788 hat dies den unangenehmen Effekt, dass das Gerät danach zur Reparatur an den Hersteller eingeschickt werden muss).
Um für Sonderzwecke trotzdem eine 'andere' Firmware laden zu können, muss mit dieser Sonderfunktion vorher ein spezielles (und eventuell hardwareabhängiges) Passwort gesendet werden.

Send sector, shifted address
Diese Sonderfunktion wird ebenfalls benötigt, wenn z.B. der CAN-Bootloader per CAN-Bootloader aktualisiert werden soll. Mit dieser Funktion kann ein bestimmter Sektor (z.B. der "Bootsektor" im FLASH) mit Daten aus dem Puffer geladen werden, deren Adresse bei der Übertragung verschoben werden (shifted address). Beispiel:
In einigen Geräten mit Mikrocontrollern vom Typ C167 befindet sich der CAN-Bootloader in FLASH-Sektor 1 (EINS). In der vom Linker/Locator erzeugte Datei beginnt der Bootloader-Code aber an Adresse Null (aus Sicht der CPU). Bei der Übertragung mit der Funktion "Send Sector, Shifted Address" muss daher die Sektornummer auf 1 gesetzt werden, die Puffer-Quell-Adresse aber auf Null (vorher muss natürlich die passende Bootloader-Firmware-Datei geladen werden).

Save buffer as binary file
Mit dieser Sonderfunktion kann der Inhalt des Firmware-Puffers als Binärfile abgespeichert werden (*.bin, nicht *.hex ! ) .
Dabei können Start- und Endadresse frei definiert werden. Per Default wird nur der belegte Teil des Puffers abgespeichert.
Tipp: Die so erzeugten Binärfiles können (bei manchen Geräten) auch auf eine Speicherkarte kopiert werden, um den Firmware-Update statt per CAN-Bus per Speicherkarte durchzuführen. Der in den meisten Geräten eingebaute CAN-Bootloader erlaubt -wenn überhaupt- nur das Laden der Firmware aus Binärfiles, nicht aus HEX-Files.

Load buffer from binary file
Mit dieser Sonderfunktion können beliebige Teile des Firmware-Puffers aus einer Binärdatei geladen werden. Dabei kann die Zieladresse im Puffer beliebig verschoben werden. Daher eignet sich diese Funktion auch zum "Patchen" von Firmware-Dateien, z.B. wenn eine Signatur / Seriennummer oder dergleichen ersetzt werden soll.

Firmware-Update per CANopen

Um sowohl die Firmware im "CANopen-Buskoppler" als auch in den am Buskoppler angeschlossenen Klemm-Modulen (IBUS-Slaves) per CANopen zu aktualisieren, kann seit V1.64 das vom Firmware-Updater verwendete Übertragungsprotokoll wie im folgenden Screenshot umgeschaltet werden:


Screenshot des 'Firmware Update Tools' im CAN-Bus-Tester.

Der CANopen-Node-Identifier des zu programmierenden Gerätes kann ggf. im Hauptmenü des CAN-Testers unter 'Tools'..'SDO Client' geändert werden.

Bei erfolgreichem Verbindungsaufbau liest das Firmware-Update-Tool zunächst eine Liste der am Buskoppler installierten Klemm-Module aus. Diese werden tabellarisch aufgelistet, zusammen mit Software-Artikelnummer und Versionsstand (Kompilationsdatum der Firmware in allen Modulen).
Wurde bereits eine Firmware-Datei in den Speicher des CAN-Testers geladen, wird in der Tabellenspalte 'Status' angezeigt, ob die im Gerät vorhandene Firmware aktuell oder veraltet ist ('outdated').


Per CANopen ausgelesene Firmware-Information, auch für Slave-Module

Um die Firmware des Buskopplers oder eines der am Buskoppler angeschlossenen Module zu aktualisieren, wird zunächst die entsprechende Zeile per Mausklick in der Tabelle markiert. Der CAN-Bus-Tester "kennt" nun die Software-Artikel-Nummer des zu programmierenden Moduls, und verwendet eine entsprechende Suchmaske im per "Load"-Button zu öffnenden Datei-Auswahl-Dialog. Die Gefahr einer Fehlbedienung wird dadurch minimiert aber nicht eliminiert.


Auswahl einer für das in der Tabelle markierte Gerät passenden Firmware

Zum Übertragen der geladenen Datei in den Flash-Speicher des Zielsystems dient auch hier der "Send"-Button (wie beim Firmware-Update ohne CANopen).


Bedeutung der Spalten in der Tabelle auf Registerkarte 'Detected Devices':

Weiterführende Informationen

Details zum Bootloader für LPC2xxx / ARM-7, Konfiguration von uVision3 zum Erzeugen eines bootloader-geeigneten HEX-Files:
\drivers1\Doku\LPC24_Code_Segments.pdf (Link funktioniert nur auf dem Rechner des SW-Entwicklers..)

Details zur Implementierung des CAN-Bootloaders auf LPC2468 (u.Ä.):
\cproj\boot_v4\readme_lpc2468_smart_loader.txt (Link funktioniert nur ...  " " " )