Gast
#1243507
Hi, im Datenblatt vom ATtiny25/45 steht etwas von on Chip Boot Code
1 | |
2 | |
3 | |
4 | |
Ich finde nur weder im Datenblatt noch in den AppNotes weitere Informationen. Gibt es da irgendwas?
|
Anzeige
|
Bootloader für Tiny45
Gast
#1243507
Hi, im Datenblatt vom ATtiny25/45 steht etwas von on Chip Boot Code
Ich finde nur weder im Datenblatt noch in den AppNotes weitere Informationen. Gibt es da irgendwas?
Gast
#1243523
Hi >Ich finde nur weder im Datenblatt noch in den AppNotes weitere >Informationen. Gibt es da irgendwas? Datenblatt Kapitel 20. MfG Spess
Gast
#1243531
Hm, du meinst eher Kapitel 19. Es funktioniert also wie ein normaler Bootloader wie zb beim Mega8, nur das es keinen gesicherten Boot Bereich gibt. Aber bleibt der Bootloader dann im Flash oder muss er sich zusammen mit der Applikation selbst überschreiben? Das hab ich noch nicht ganz kapiert
Gast
#1243546
Hi >Hm, du meinst eher Kapitel 19. Ja. >Aber bleibt der Bootloader dann im Flash oder muss er sich zusammen mit >der Applikation selbst überschreiben? Das hab ich noch nicht ganz >kapiert... Du musst einfach aufpassen, das der Bootlader nicht überschrieben wird. Sieh mal in der Codesammlung nach. Da ist ein Beitrag 'Bootloader für ATTiny13 bis ATMega644' oder so ähnlich. MfG Spess Der Bootloader muß in den Controller geladen werden(ISP/Programmiergerät/STK500). Danach ist es möglich, den Flash per Programm seitenweise neu zu beschreiben. Da aber im Gegensatz zu größeren Controllern sich hier kein Speicherbereich schreibschützen läßt, muß man selbst dafür sorgen, daß man sich den Bootloader nicht versehentlich überschreibt. Gruß Jadeclaw.
Gast
#1243578
Ok, also er funktioniert wie jeder andere Bootloader, aber ohne Schreibschutz. Und es scheint auch kein Fusebit zu geben, damit der Bootloader beim Reset aufgerufen wird. Also muss man das in die Applikation einbauen. Seh ich das richtig? Korrekt, der Programmstart läuft durch den Bootloader durch in die Anwendung. Jones wrote: > Ok, also er funktioniert wie jeder andere Bootloader, aber ohne > Schreibschutz. Und es scheint auch kein Fusebit zu geben, damit der > Bootloader beim Reset aufgerufen wird. Also muss man das in die > Applikation einbauen. Seh ich das richtig? Man kann auch den Bootloader so schreiben, daß er die Applikation patcht. Dazu muß der erste Befehl ein RJMP sein, den dann der Bootloader in einen Sprung zu sich selbst ändert. Vorher merkt er sich noch das eigentliche Sprungziel. Peter
Gast
#1243847
Ok, das heißt, das der Bootloader wie immer am Ende des Flash liegt. Der Bootloader läd wie gehabt das Programm an den Anfang des Flash. Er liest aber den Reset Interrupt Vector der Applikation, ändert ihn so, das ein Reset in den Bootloader springt und ändert mit dem vorher gemerkten Reset Vektor der Applikation seinen eigenen Code so, das der letzte Befehl des Bootloaders in die Applikation springt. Selbst modifizierender Code. Schon lange nicht mehr gemacht :) Jones wrote:
> Selbst modifizierender Code. Schon lange nicht mehr gemacht :)
Dürfte auch in die Hose gehen, da man nicht einzelne Words ändern kann.
Ich schreibe daher den Sprung zur Applikation in das Word vor dem
Bootloader, d.h. in das letzte Word der letzten Page der Applikation.
Der Bootloader bleibt unverändert und testet auch vor jedem Schreiben,
daß nicht seine Pages überschrieben werden sollen. Solltest Du also
versuchen, ihm eine zu große Applikation unterzujubeln, wird er Dir was
husten.
Peter
Gast
#1243965
> Dürfte auch in die Hose gehen, da man nicht einzelne Words ändern kann.
Stimmt auch wieder, aber das hätte ich dann schon gemerkt ;)
Eine Frage noch: wo finde ich denn die aktuelle Version von deinem
Bootloader? Der Thread hier im Forum ist etwas ... äh ...
unübersichtlich ^^
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|