Forum: Mikrocontroller und Digitale Elektronik AVR - Bootloader


von MaX (Gast)


Lesenswert?

Hi,

über das Thema wurde hier ja schon viel geschrieben. Da gibt es
bestimmt auch ein paar Experten, die mir meine Frage beantwroten
können:

Einen Bootloader brennt man doch "einfach" in den Chip und sobald
dieser dort läuft, kann man seriell das eigentliche Programm in den
Chip laden. Der Bootloader (deswegen sicher auch der Name) startet
dieses dann nach jedem reset.

Nun gibt es eine Reihe von Bootloadern. Aber 2 fallen immer wieder auf:
Einer aus der AN109 und einer mit STK500-Protokoll. Wo liegt der
Unterschied? Sind nicht alle Bootloader prinzipiell gleich?

MaX

von Matthias (Gast)


Lesenswert?

Hi

es ist eben ein anderes Protokoll. Das AVR910-Protokoll ist einfacher
und damit kleiner in der Implementierung. STK500 ist das modernere
Protokoll und man kann direkt aus dem AVR Studio den Bootloader
ansprechen. Nachteil ist das es komplexer ist und damit etwas mehr
Platz im Flash braucht. Meinen STK500 kompatiblen Bootloader (in C
geschrieben) hab ich aber immerhin auf unter 1k bekommen. In ASM müßten
eigentlich auch 512 Byte möglich sein.

Matthias

von MaX (Gast)


Lesenswert?

Hallo Matthias,

>Meinen STK500 kompatiblen Bootloader
Meinst Du den aus dem USBISP-Projekt?

Ich will mich gerade mit dem Thema beschäftigen, und suche verzweifelt
einen Anfang. Es gibt so viele verschiedene Ansätze. Aber wo soll man
beginnen?

Ich habe mir auch schon mal den Bootloader von Peter Dannegger (aus dem
Codeforum) angesehen. Aber der ist in ASM und nur mit spärlicher Doku
('tschuldigung Peter ;o) ).

von Matthias (Gast)


Lesenswert?

Hi

Genau den meine ich. Sollte sich problemlos auf jeden anderen AVR
umschreiben lassen. Vorteil an einem Bootloader mit
AVR910/STK500-Protokoll ist halt das man keine eigene Software
schreiben muß um mit dem Bootloader zu kommunizieren.

Matthias

von MaX (Gast)


Lesenswert?

OK, dann werd ich mir den mal ansehen. Der kommuniziert zwar über USB,
aber das Prinzip sollte ja bei UART gleich sein.

Ohne jetzt schon in den Code geguckt zu haben: Hat der eigentlich auch
so was wie eine Passwortabfrage zum Programmieren? Und wartet der nach
einem Reset eine bestimmte Zeit, ob da irgendwer was programmieren
will?

Wenn ich das USB durch UART ersetze, dann muß ich dort auch eine
bestimmte Baudrate vorgeben (wenns keine automatische Erkennung gibt),
richtig?

von Matthias (Gast)


Lesenswert?

Hi

ein paar Änderungen wirst du schon vornehmen müssen. Beim Einschalten
prüft der Bootloader zwei Pins ab ob die auf High sind. Sind sie es
wird in den Bootloader verzweigt. Ansonsten wirst du halt die Routinen
aus der usb.c auf den UART umbiegen müssen. Sollte aber nicht das
Problem sein.

Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.