Zilog ZNEO Bootloader

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Einleitung

Resident in den obersten 4kByte des EROM-Flash Speichers dient dieser Code zum Laden jeweils eines Anwenderprogramms via USB/RS232 vom PC in den Mikrokontroller Flash oder RAM. Um seine Aufgabe zu erfüllen wird er einmalig in den Mikrokontroller gebrannt.

Das zu ladende Anwenderprogramm muss im Intel Hex32 Format vorliegen, so wie es vom Zilog Entwicklungspaket ZDS II erzeugt wird.

Der Bootloader kann sich selbst downloaden und aktualisieren. Dabei wird ein eventuell vorhandenes Anwenderprogramm gelöscht.

Auf Seiten des PC wird ein beliebiges Terminal Programm, z. B. HyperTerminal, benötigt. Die Kommunikation erfolgt mit maximal 115kBaud.

Bei der Entwicklung wurde den besonderen Erfordernissen einer über USB getunnelten RS232 Verbindung mit vom Zielsystem gespeisten FTDI Chip FT232R Rechnung getragen.

Funktionsweise

Nach Reset des Mikrokontrollers wird als Erstes der Code des Bootloaders ausgeführt. Dieser verzweigt in die beiden nachfolgenden Möglichkeiten:

  • Im Normalfall startet der Bootloader sofort das im Mikrokontroller vorhandene Anwenderprogramm und beendet sich dabei selbst bis zum nächsten Reset.
  • Soll das Anwenderprogramm geändert werden geht der Bootloader in Kommunikation mit dem PC und stellt dort ein Auswahlmenü dar.

Üblicherweise erfolgt die Verzweigung zur PC-Kommunikation wenn nach Reset sofort eine Zeichenfolge via RS232 vom PC empfangen wird. Bei der über USB getunnelte RS232 Verbindung ist dieses Verfahren aber nicht anwendbar wenn der verwendete FTDI Chip FT232R seine Betriebsspannung vom Zielsystem erhält. Da der FT232R vor Einschalten des Zielsystems ohne Funktion ist kann der PC keinen virtuellen COM-Port anlegen und das Terminalprogramm keine Verbindung aufbauen. Nach Einschalten des Zielsystems wird der Bootloader deshalb niemals die wichtige Zeichenfolge zur Funktionsverzweigung vom PC erhalten.

Für diesen Bootloader wurde deshalb ein anderes Erkennungsverfahren gewählt. Es basiert auf der Auswertung des statischen Pegels am TxD-Ausgang des FT232R und funktioniert sowohl bei Speisung des FTDI Chips vom Zielsystem als auch bei Speisung über USB vom PC. Beide Varianten sind auf dem nachfolgenden Bild unter Verwendung einer Mini-B USB Buchse dargestellt.

ZneoFT232RL.png

Ist keine elektrische USB-Verbindung zum PC etabliert so ist der TxD-Ausgang des FT232R hochohmig. Ein 150kOhm Widerstand nach Masse zieht den Pegel an TxD auf Low. Der Bootloader bewertet diesen Pegel als fehlende USB-Verbindung und startet das Anwenderprogramm. Verbindet ein USB-Kabel den aktiven FTDI Chip mit dem PC so liegt am TxD-Ausgang High Pegel. Der nach Reset startende Bootloader interpretiert das als Aufforderung zur Kommunikation, initialisiert den ZNEO UART und wartet auf das erste vom PC gesendete Zeichen. Nach Dessen Erhalt sendet er das Auswahlmenü zum Terminalprogramm

Wie in nachfolgendem Bild gezeigt, besteht das Menü nur aus zwei Punkten. Wird D zum Download gewählt muss nachfolgend die *.hex Datei vom PC-Programm gesendet werden. Ist ein Anwenderprogramm auf dem ZNEO gespeichert so wird auch der Menüpunkt G angezeigt.

ZneoHyperTerminal.png

Die richtige Reihenfolge der Bedienschritte zum Download und Start eines neuen Anwenderprogramms ist folgende:

  • Zielsystem und PC mittels USB-Kabel verbinden.
  • Einschalten des Zielsystems.
  • Wenn notwendig, Treiber für FT232R-Chip installieren.
  • Start eines Terminalprogramms und verbinden mit dem virtuellen COMx-Port bei folgenden Parametern:
    • 115200 Bits pro Sekunde:
    • 8 Datenbits
    • keine Parität
    • 1 Stoppbit
    • keine Flusssteuerung
  • Betätigen einer Zeichentaste auf dem PC damit der Bootloader das Auswahlmenü sendet.
  • Betätigen der Taste D für Download.
  • Auswahl und senden der HEX-Datei über das Terminalprogramm im Textformat.
  • Nach Abschluss des Downloads, drücken der Taste G zum Start des neuen Anwenderprogramms.

Wird eine neue Version des Bootloaders zum Zielsystem gesendet so startet der aktualisierte Programm Kode nach Abschluss des Downloads selbständig.

Kompilierung

Die hier unter Download verfügbare ZIP-Datei enthält das ZDS II Projekt des Bootloaders, geschrieben in C und konfiguriert für den Z16F2810VH. Bei Umstellung auf einen anderen Z16 Mikrokontroller sind in den Project Settings für Debug und Release jeweils anzupassen:

  • General - CPU
  • Debugger – Setup – Clock Frequency (MHz) - Internal – 5.52960

In der Datei application.h befinden sich zusätzliche Optionen bezüglich UART und Menütext.

Download

Links