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

Bootloader für Enhanced Midrange PIC Mikrocontroller

(Hinweis: Dieser Bootloader ist nicht für das "klassische" PICALIC-Projekt geeignet, da dessen Controllertypen nicht zur Enhanced Midrange Familie gehören!)

Funktion:

Der Bootloader ermöglicht es, ohne Verwendung eines speziellen Programmiergerätes, ein Anwenderprogramm (die "Applikation") in den Speicher des Mikrocontrollers zu übertragen. Dazu ist lediglich eine Verbindung zum Host-Computer über die serielle Schnittstelle notwendig. Nur zur Initialprogrammierung des PICs mit dem Bootloader selbst ist natürlich nach wie vor einmal ein Programmiergerät notwendig.

Zwischen dem "PICloader"-Tool auf dem Host-PC und dem Bootloader auf dem PIC werden die Daten über eine Signalleitung im Halbduplex-Verfahren übertragen, so daß ein einzelner I/O-Pin am PIC für die Kommunikation ausreicht.
Die Verbindung kann über einen einfachen USB-zu-Seriell-Adapter mit TTL bzw. 5V Ausgang hergestellt werden, z.B. auf Basis eines CP2102, FTR232 o.ä., wie hier skizziert: 

Prinzipschaltung

Der Bootloader ist für die Anwendung im Hobby-Bereich gedacht und hat daher keine Mechanismen zur Verschlüsselung oder zum Schutz gegen Auslesen des Codes eingebaut. Hier soll durch einen kompakten Bootloader-Code möglichst viel Flashspeicher für die Applikation frei bleiben. So belegt der Bootloader weniger als 256 Words im Programmspeicher.

Eigenschaften des Bootloaders

  • Programmierung des Flash-Speichers, Daten-EEPROMs und User-ID Speichers.
  • Auslesen von Flash, Daten-EEPROM, User-ID und des Konfigurations-Speichers.
  • Verifikation der Applikation durch Prüfsumme - unvollständig oder fehlerhaft geladene Programme werden nicht ausgeführt.
  • "Single wire/half duplex" serielle Schnittstelle - nur ein einzelner Pin am Controller zur Verbindung mit dem Hostcomputer/Updater notwendig.
  • Software-UART mit maximal 115200 Baud.
  • Beliebiger I/O-Pin des Controllers für die Datenübertragung nutzbar.
  • Bootloader-Code und Reset-Vektor durch den Bootloader selbst schreibgeschützt.

Speicheraufteilung

Der Bootloader kann wahlweise am Anfang oder in einem hohen Adressbereich im Flash abgelegt werden. Im ersten Fall muss der Applikations-Code dann für eine Startadresse hinter dem Bootloader-Code erzeugt werden (üblicherweise 0x100). Der Interrupt-Vektor (0x004) wird per goto-Befehl direkt an die entsprechende Adresse (0x104) der Applikation weitergeleitet, wodurch sich die Laufzeit der Interrupt Service Routine um zwei Befehlszyklen verlängert.

Wenn der Bootloader im oberen Bereich des Speichers angesiedelt ist, belegt die Applikation den gleichen Speicher, wie ohne Bootloader, d.h. der gleiche Applikationscode kann unverändert sowohl in einen PIC mit Bootloader, als auch (mit geeignetem Programmiergerät) in einen PIC ohne Bootloader geladen werden. Da die Interrupt Service Routine nicht gepatched werden muss, gibt es hier auch keine Laufzeitverlängerung. Das PC-Tool ("PICloader") modifiziert die ersten Befehle der Applikation, so daß der Resetvektor in den Bootloader zeigt und dieser dann in die Applikation startet.