Ich habe mir meinen eigenen Bootlader geschrieben.
Wichtig war für mich, daß er die normale Funktion nicht
beeinflußt (kein eigenständiges Senden über die UART), daß
er schnell ist und daß er bequem nach dem Compilieren in der Batch
aufgerufen werden kann, d.h. nicht jedesmal erst umständlich in einem
Programm mit der Maus geklickt werden muß, wie es leider bei anderen
Bootladern der Fall ist.
Der Bootlader macht sich nur dadurch bemerkbar, daß die Resetzeit um 0,2s länger ist. In dieser Zeit erwartet er eine bestimmte Kennung und geht dann in den Programmiermodus. Ansonsten wird die Anwendung gestartet.
Bei 115200Baud ergeben sich folgende Programmierzeiten::
15kB (ATMega16): | 2.8sec |
7kB (ATMega8): | 1.5sec |
Es werden 1kB durch den Bootlader belegt, d.h. beim ATMega8 sind 7kB für die Anwendung verfügbar.
Der ATMega kann mit einem Quarz oder auch dem internen RC Oszilator getaktet werden, da die Baudrate automatisch optimal eingestellt wird. Werden keine Standardquarze verwendet, wie z.B. 7.3728 MHz, dann kann sich bei hohen Baudraten ein zu großer Fehler ergeben. Bei Problemen ist dann einfach eine kleinere Baudrate zu wählen. Als Pegelwandler ist der MAX202 zu empfehlen, da dessen Spannungswandler nur 100nF Kondensatoren benötigt.
Um nicht jedesmal zum Download den AVR aus- und einschalten zu müssen, empfielt sich die Beschaltung eines Resettasters.
Der Bootlader wird mit dem Atmel AVR Assembler assembliert.
Das PC Programm läuft in der DOS-Box unter Windows98SE oderWindows NT4.0. Andere Windowse benutze ich nicht, kann also nicht sagen, obs darunter auch läuft.
Ich habs mit folgenden AVRs getestet: ATMega8, ATMega16, ATMega162 and ATMega323. Die Fuse Bits müssen so gesetzt werden, daß 1kB für den Bootlader reserviert sind. Für ein einwandfreies Reset sollte man auch immer das Brown-Out Reset aktivieren.
Zur Zeit ist nur die Programmierfunktion implementiert. Nach dem Schalter /P wird das Hex-File angegeben, bzw. nach einem Komma zusätzlich das EEPROM-File, z.B.:
pboot.exe -c1 -b115200 -ptest.hex,test.eep |
Eine genauere Beschreibung werde ich später hinzufügen.