mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader für Tiny45


Autor: Jones (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, im Datenblatt vom ATtiny25/45 steht etwas von on Chip Boot Code
The device is manufactured using Atmel’s high density non-volatile memory technology. The
On-chip ISP Flash allows the Program memory to be re-programmed In-System through an SPI
serial interface, by a conventional non-volatile memory programmer or by an On-chip boot code
running on the AVR core.

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Datenblatt Kapitel 20.

MfG Spess

Autor: Jones (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jones (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrekt, der Programmstart läuft durch den Bootloader durch in die 
Anwendung.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jones (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jones (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.