Forum: Mikrocontroller und Digitale Elektronik Bootloader für Tiny45


von Jones (Gast)


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?

von spess53 (Gast)


Lesenswert?

Hi

>Ich finde nur weder im Datenblatt noch in den AppNotes weitere
>Informationen. Gibt es da irgendwas?

Datenblatt Kapitel 20.

MfG Spess

von Jones (Gast)


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

von spess53 (Gast)


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

von Jadeclaw D. (jadeclaw)


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.

von Jones (Gast)


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?

von Jadeclaw D. (jadeclaw)


Lesenswert?

Korrekt, der Programmstart läuft durch den Bootloader durch in die 
Anwendung.

von Peter D. (peda)


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

von Jones (Gast)


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 :)

von Peter D. (peda)


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

von Jones (Gast)


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 ^^

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.