Bootloader für Tiny45

Gast #1243507
Lesenswert?
• ▲
▼
Hi, im Datenblatt vom ATtiny25/45 steht etwas von on Chip Boot Code
1
The device is manufactured using Atmel’s high density non-volatile memory technology. The
2
On-chip ISP Flash allows the Program memory to be re-programmed In-System through an SPI
3
serial interface, by a conventional non-volatile memory programmer or by an On-chip boot code
4
running on the AVR core.

Ich finde nur weder im Datenblatt noch in den AppNotes weitere 
Informationen. Gibt es da irgendwas?
Gast #1243531
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
#1243554
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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?
#1243807
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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 :)
#1243861
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
> 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 schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren