UpdateLoader

UpdateLoader Bildschirmfoto #1

UpdateLoader ist eine grafische Benutzeroberfläche für den AVR Bootloader FastBoot von Peter Dannegger.
Viele der vom Bootloader unterstützten AVR Mikrocontroller (Atmel ATtiny und ATmega) können mit dieser Benutzeroberfläche über eine serielle Schnittstelle programmiert werden.

Das Programm unterstützt die derzeit aktuelle Bootloader-Version 2.1 und ist vollständig Open Source (GPL) verfügbar.
Für die serielle Kommunikation kommt die SynaSer Bibliothek von Ararat zum Einsatz.


Downloads

Aktuelle Version: 2.2.5.0 vom 24. Oktober 2015 (934 kB)

Download “UpdateLoader” (3033-mal heruntergeladen)

Versionsinfo

  • 2.2.0.34 (09/2012): Neu erstellte Version (Grundlage: altes UpdateLoader-Projekt 2.1 von 2009)
  • 2.2.1.63 (12/2012): Neue Signaturen für ATmega328P, ATmega168P; UNC/UTF8-Pfade; Reset-Impuls auf der DTR-Leitung (RC1 für 2.2.1)
  • 2.2.1.72 (08/2013): Neuer Programmpaket-Modus, Veröffentlichung der vorigen Änderungen
  • 2.2.2.0 (10/2013): Verbesserte Fehlerbehandlung, 0x0D wird vor dem Passwort gesendet (Baudrate-Erkennung), Programmpaket direkt in der Oberfläche konfigurierbar, neuer Info-Tab
  • 2.2.3.0 (12/2013): Verbesserter Verbindungsaufbau, Unterstützung für kleine Pufferspeicher, Korrektur Pufferlänge
  • 2.2.4.0 (05/2014): Korrekte Anzeige der Ports, längere Timeouts für Bluetooth-Adapter
  • 2.2.5.0 (10/2015): Firmware-Passwort, invertierte Übertragung, ATmega64 Signatur, neuer Hex-Parser, GUI aufgeräumt

Bedienung

Die Bedienung des Programms ist selbsterklärend:
Nach dem Start den gewünschten COM-Port auswählen, Bootloader-Passwort eingeben, Firmware laden und das Update starten.
Während dem Update-Vorgang erfolgt eine Benutzerführung mit diversen Hinweisen und Statusanzeigen.

Als Firmware muss eine gültige Intel HEX Datei geladen sein bevor das Update gestartet werden kann.
Dateien mit nicht unterstützte Records (z.B. für die erweiterte Adressierung) können nicht geladen werden. Zur Kontrolle steht im erweiterten Modus eine Hex-Ansicht zur Verfügung.

Um den Bootloader zu starten muss der Mikrocontroller während dem Verbindungsaufbau zurückgesetzt werden (Reset-Taster, Spannungsversorgung unterbrechen). Wird ein USB-UART Wandler (z.B. beim Arduino Duemilanove) verwendet darf die USB-Verbindung dabei nicht unterbrochen werden!
Alternativ kann der Bootloader auch automatisch aktiviert werden. Dazu muss die Firmware z.B. über den Watchdog einen Reset auslösen sobald das Bootloader-Passwort oder ein Steuerkommando (Firmware-Passwort) empfangen wurde.

Erweiterter Modus

UpdateLoader Bildschirmfoto #2
Neben dem Eingabefeld für das Bootloader-Passwort kann der „Erweiterte Modus“ aktiviert werden. Alle Einstellungen können bei Bedarf auf dem Reiter „Sonstiges“ zurückgesetzt werden, anschließend muss die Firmware neu geladen werden.

Tipps zur Baudrate & Verbindungsaufbau

Während ein Datenblock zum Mikrocontroller gesendet wird kann die Benutzeroberfläche nicht aktualisiert werden, daher läuft besonders bei niedrigen Baudraten die Animation der Fortschrittsbalken nicht flüssig.
Falls der UpdateLoader den Verbindungsaufbau zu schnell abbricht kann die Anzahl der Verbindungsversuche heraufgesetzt werden. Bei jedem Verbindungsversuch wird ein Steuerzeichen für die Baudraten-Erkennung und das Bootloader-Passwort einmalig übertragen.

Vor dem Verbindungsaufbau kann der DTR-Pin einmalig getoggelt werden (high-low-high, 50ms). Über den DTR Ausgang kann der Mikrocontroller zurückgesetzt werden, z.B. indem Reset über 100nF mit DTR gekoppelt wird.
Die 1-Wire Erkennung sollte nur aktiviert werden wenn der Bootloader tatsächlich im Eindrahtmodus verwendet wird. Zusätzlich können die übertragenen Bytes invertiert werden, z.B. um mit invertierenden RS-485 Treibern oder Pegelwandlern arbeiten zu können.

Mit Version 2.2.5 kann vor dem Verbindungsaufbau (und wahlweise alle 10 Versuche) ein Firmware-Passwort übermittelt werden. Durch die Hex-Eingabe ($48$69 = 0x48 0x69 = ‚Hi‘) können beliebige Kommandos an die Firmware geschickt werden um den Bootloader automatisch aufzurufen.

Funktionen wählen

In der mittleren Spalte können die durchzuführenden Schritte ausgewählt werden. Es muss mindestens “Programmieren” oder “Überprüfen” aktiviert sein um den Update-Vorgang starten zu können. Vom Bootloader nicht unterstützte Befehle werden übersprungen und müssen nicht deaktiviert werden.

Mit der Auswahl “Meldungen ausblenden” wird die komplette Benutzerführung deaktiviert. Dazu gehören sämtliche Hinweistexte während dem Update (“Gerät jetzt ausschalten, …”) und nicht-kritische Warnmeldungen (fehlerhafte Signatur, Überprüfung deaktiviert). Außerdem wird das Fenster bei deaktivierten Meldungen nicht mehr im Vordergrund gehalten.

Um die geladene Firmware zu überprüfen kann die Hex-Ansicht in der Fenstermitte aktiviert werden, die Daten können jedoch nicht bearbeitet werden.

Deaktiviert man im Hauptbildschirm den erweiterten Modus, wird das nächste Update mit den Standardeinstellungen ausgeführt. Die selbst getroffenen Einstellungen werden nicht gelöscht und können durch Umschalten in den erweiterten Modus wieder aufgerufen werden.

Kommandozeilen-Parameter

Beim Start kann eine Einstellungsdatei oder eine Firmware übergeben werden („X:\UL>UpdateLoader-win32.exe firmware.hex“). Die Datei wird anhand der Erweiterung (.ini oder .hex) unterschieden.
Es wird nur ein Parameter ausgewertet, um Konfiguration und Firmware zu übergeben muss der Firmware-Pfad in der Konfiguration hinterlegt und die Einstellungsdatei übergeben werden.
Um verschiedene Konfigurationen zu verwalten kann die UpdateLoader.ini einfach kopiert und angepasst werden. Änderungen werden in die jeweils geladene Datei zurückgeschrieben.

Im Windows-Explorer lässt sich die gewünschte Datei einfach auf die Anwendung ziehen („Mit UpdateLoader für Fastboot V2.1 öffnen“) und wird automatisch als Parameter übermittelt.

Spezialmodus für Programm-/Update-Pakete

UpdateLoader Bildschirmfoto #3

Ab Version 2.2.1 kann der UpdateLoader zusammen mit einer Einstellungsdatei und einer Firmware als Update-Paket ausgeliefert werden.
Um Änderungen an der Konfiguration zu verhindern können Teile der Benutzeroberfläche gesperrt oder komplett ausgeblendet werden. Alle Änderungen werden beim Beenden verworfen und die Einstellungsdatei nicht neu geschrieben.
Der erweiterte Modus kann über die Paketoptionen ausgeblendet werden, die Einstellungen werden auch bei unsichtbarem Reiter beachtet.

Update-Paket erstellen

  1. Anwendung vorbereiten
    1. UpdateLoader und die Firmware-Datei in einem Ordner ablegen
    2. Programm starten, Firmware-Datei laden und alle Optionen (Passwort, Baudrate, ggf. erweiterte Optionen) passend setzen
  2. Paket-Modus aktivieren
    1. Optionen auf dem Reiter „Sonstiges“ einstellen
    2. Konfiguration speichern, Programm beenden
    3. UpdateLoader.ini mit einem Texteditor öffnen und den Firmware-Pfad prüfen. Im Eintrag „FirmwareFilename“ darf nur der Dateiname, kein absoluter Pfad gesetzt sein.
      Richtig: FirmwareFilename=Firmware.hex
      Falsch: FirmwareFilename=C:\Software\Updates\Firmware.hex
      (So wird die Firmware-Datei aus dem Ordner des Update-Pakets verwendet)
    4. Programm mit den neuen Einstellung testen
  3. Update-Paket archivieren

Optionen in der Einstellungsdatei

Alle Einstellungen werden in der Datei „UpdateLoader.ini“ gespeichert, manuelle Änderungen sind mit einem Texteditor möglich. Fehlt die Datei wird sie standardmäßig im Verzeichnis der Anwendung neu angelegt.

Hinweis: Ab Version 2.2.5 werden die erweiterten Einstellungen in der Sektion „Advanced“ gespeichert!
Sind die erweiterten Einstellungen deaktiviert verwendet UpdateLoader die Standardwerte.

Sektion [UpdateLoader]

OptionStandardFunktion
ComPort=n1Nummer des verwendeten Ports (COM1, …)*
BootloaderPassword=txtPedaBootloader-Passwort, muss mit Mikrocontroller überein stimmen (25 Zeichen)
FirmwareFilename=txtAbsoluter Pfad oder Dateiname der Firmware
Page=0-10Reiter 0 (Dateiauswahl, Start) oder Reiter 1 (erweiterte Optionen) zeigen**

*: Im Paketmodus ignoriert
**: Zeigt Reiter 0 wenn der erweiterte Modus deaktiviert ist, im Paketmodus immer 0

Sektion [Advanced]

OptionStandardFunktion
Enabled=1/=00Erweiterte Einstellungen (Reiter 2) freigeben
ProgramWrite=1/=01Firmware in Flash schreiben*
ProgramVerify=1/=01Flash mit Firmware vergleichen*
ProgramStart=1/=01Firmware nach der Aktualisierung starten
ReloadFile=1/=01Firmware-Datei vor jedem Update neu einlesen**
ShowMemory=1/=00Geladene Firmware in der Hex-Ansicht (2. Reiter) darstellen**
HideMessages=1/=00Benutzerführung deaktivieren
BaudRate=n1152004800-128000 Baud (siehe Auswahl im Programm)
ConnectTries=n250Verbindungsversuche (Passwortübertragungen, 4 Stellen)
DetectOneWire=1/=00Erkennung von 1-Draht Verbindungen aktivieren
ToggleDTR=1/=01DTR-Pin beim Verbindungsaufbau toggeln (Reset-Impuls erzeugen)
InvertCom=1/=00Übertragene Bytes invertieren
EnableFirmwareKey=1/=00Beim Verbindungsaufbau Firmware-Passwort übertragen
FirmwareKey=txtFirmware-Passwort (z.B. für Bootloader-Start, 75 Zeichen)***
FirmwareKeyOnce=1/=01FW-Passwort einmalig oder alle 10 Verbindungsversuche übertragen
FirmwareKeyParseMode=1/=00Firmware-Passwort lesen als 0=ASCII, 1=HEX ($48$69 = 'Hi')***

*: Mindestens ein Schritt muss ausgewählt werden
**: Bei großen Dateien (ab 10kB) wird die Darstellung nach dem automatischen Neu-Laden deaktiviert um den Wechsel zwischen den Reitern zu beschleunigen
***: Das Firmware-Passwort kann in ASCII (‚Hi‘) oder in Hex-Darstellung ($48$69 = 0x48 0x69 = ‚Hi‘) eingegeben werden, zur Übertragung von Sonderzeichen (String-Terminator o.ä.) sollte die Hex-Eingabe verwendet werden.

Sektion [PaketMode]

OptionStandardFunktion
Enabled=10Aktiviert den Paket-Modus (immer "1")*
MiniGUI=1/=00Minimalistische Oberfläche (siehe Bilschirmfoto)**
ModalGUI=1/=00Fenster immer im Vordergrund halten
HideAdvancedMode=1/=00Option "Erweiterter Modus" und Reiter ausblenden
LockFilename=1/=00Dateiname schreibgeschützt**
LockPassword=1/=00Passwort schreibgeschützt
HidePassword=1/=00Eingabefeld für das Passwort ausblenden

*: Im Paketmdus werden keine Änderungen in die Einstellungsdatei übernommen.
**: Bei aktivierter Option kann die Firmware nicht manuell geladen werden. Das Programm bricht mit einer Fehlermeldung ab wenn die vorgewählte Datei nicht vorhanden ist.


Tipps zum Kompilieren

Zum Kompilieren werden der Free Pascal Compiler und eine Lazarus-Installation benötigt.

Hinweis: Mit der neuen Lazarus IDE 1.6 (Februar 2016) wird auch der neue Free Pascal Compiler 3.0 ausgeliefert. In dieser Version wurden einige Units abgekündigt und z.B. das Verhalten von AnsiStrings verändert. Die alten Quelltexte (2015) können damit nicht mehr kompiliert werden! Bis eine aktualisierte Version zur Verfügung steht muss der alte Compiler verwendet werden.

Die letzte kompatible Version ist Lazarus 1.4.4 mit FPC 2.6.4 (lazarus-1.4.4-fpc-2.6.4-win32.exe).

UpdateLoader wurde als 32-Bit Anwendung erstellt um auf möglichst vielen System laufen zu können.

  • SynaSer-Bibliothek nicht gefunden
    Unter Projekt -> Projekteinstellungen -> Compilereinstellungen -> Pfade muss im Feld „Andere Units“ der folgende Pfad ergänzt werden: “..\lib\synaser”
  • Unbenutzte Variablen in der SynaSer-Bibliothek
    Fehler in Version 40 der Bibliothek, neuere Versionen erscheinen auf der Seite von Ararat Synapse
  • Intel-Hex Dateien werden nicht eingelesen, Byte-Variablen laufen über bzw. melden Bereichsfehler
    Für die Funktion „addWithOverflow“ aus tools.pas muss die Bereichsüberprüfung deaktiviert werden (Makros „{$R-}“ und „{$R+}“)

Bootloader

Jonas & Tim von „Pointless Circuits“ bieten einen Bootloader-Generator auf ihrer Seite an. Der Generator läuft online, nachdem man alle Einstellungen ausgewählt hat wird einfach der fertige Bootloader heruntergeladen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *