< Projekte
PIC Bootloader
Bootloader für Enhanced Midrange PIC Microcontroller
Beschreibung
Protokoll
PC-Tool
Download
Konfiguration
Applikation

Protokoll:

Aktion Host sendet Target antwortet Beschreibung
Reset/Start in Bootloader - 0x06 <bl_ID> Bootloader identifiziert sich
Read 0xFC <adrL> <adrH> <dataL> <dataH>
Inhalt eines Flash-Wortes lesen
Write
0xFD <adrL> <adrH> <data> ...
...<data> <chksum8>
0x06 (= ACK, wenn ok)
0x15 (= NAK, bei Fehler)
Schreibt einen Datenblock ins Flash
(Länge = kompletter Flash Erase Block)
Version 0xFE 0x06 <bl_ID> Bootloader identifiziert sich nach Anfrage vom Host
Reset 0xFF -
Target führt Reset aus
Nop (alles außer 0xFC..0xFF) - Der Bootloader ignoriert alle ungültigen Befehlscodes

Start:

Nach einem Hardware-Reset wird immer Bootloader-Code ausgeführt, der prüft, ob in die Applikation oder in den Bootloader verzweigt werden soll. Je nach Implementation kann z.B. beim Reset durch einen gedrückten Taster o.ä. in den Bootloader verzweigt werden, oder es kann auch aus der Applikation in den Bootloader gestartet werden. Optional kann der Bootloader durch eine Prüfsumme feststellen, ob der Applikationscode beschädigt oder unvollständig ist und ggf. dann nur gültigen Applikationscode ausführen.
Sobald der Bootloader bereit ist, Kommandos entgegen zu nehmen, identifiziert er sich durch Senden von "ACK" (0x06) und einem Datenbyte, das die Bootloader-Versionsnummer enthält (Bits 0..6), sowie ein Flag (Bit 7) zur Kennzeichnung, ob der Bootloader die Prüfsumme zur Verifizierung des Applikationscodes anwendet oder nicht. 


Read:

Mit dem Read-Befehl wird jeweils ein Wort (14 Bits) aus dem Speicher des PICs gelesen. So kann auf den Programmspeicher, Konfigurations- und ID-Speicher, sowie ggf. auch auf das EEPROM zugegriffen werden.

Adressen:

ab 0x0000: Programmspeicher,
ab 0x8000: Konfigurationsspeicher (8000: User ID, 8004: Device-ID,Revision-ID, 8006: Konfiguration-Words)
ab 0xF000: EEPROM (nur 8 Datenbits je Wort gültig, Inhalt der Bits 8..13 ist undefiniert!)

Write:

Der Schreib-Befehl verarbeitet immer einen Datenblock von der Größe eines Flash Erase Blocks (i.d.R. 16 oder 32 Words, siehe Datenblatt zum jeweiligen PIC), mit Ausrichtung an Blockgrenzen. Das gilt auch für EEPROM-Speicher oder die User-ID Speicherzellen! Obwohl sich die Konfigurations-Worte und Hardware-ID gar nicht per Bootloader ändern lassen, müssen diese beim Write-Befehl trotzdem geschrieben werden, wenn eine User-ID geändert werden soll, weil sie sich im gleichen Erase-Block befinden. Die zu schreibenden (Dummy-)Daten der "Read Only" Speicherzellen müssen nicht mit dem tatsächlichen Inhalt übereinstimmen.
Dem Datenpaket ist ein Püfsummen-Byte angehängt, so daß die Summe aller Bytes nach dem Befehlscode (0xFD), incl. der Prüfsumme selbst, in den unteren 8 Bit Null ergeben muss. Stimmt die Prüfsumme nicht oder liegt die Adresse in einem ungültigen Bereich, gibt der Bootloader ein NAK-Zeichen (0x15) zurück, sonst nach abgeschlossener Schreiboperation ein ACK (0x06).

Version:

Mit diesem Befehl kann der Host die Verbindung zum Bootloader überprüfen und dessen Versionsnummer abfragen.

Reset:

Der Bootloader startet den Mikrocontroller neu. Nach einem erfolgreichem Upload kann dadurch die Applikation gestartet werden. Wenn keine oder eine beschädigte Applikation im Flash steht und der Bootloader die Applikations-Prüfsumme auswertet, wird wieder in den Bootloader gestartet.

   



 


Kontakt