AVR - Bootloader

Gast #125457
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
Gast #125458
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
Gast #125459
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) ).
Gast #125460
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
Gast #125461
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?
Gast #125462
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.