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
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
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) ).
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.