mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootolader für ATMega48


Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der ATMega48 hat ja keinen Bootloader Bereich implementiert.

Gibt es eine Möglichkeit auch für diesen Controller eine Art Bootloader 
zu machen?

Autor: Edi R. (edi_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: B. G. (smarti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhm... in der Tat. Wollte gerade vorschnell Antworten, dass der 
48/88/168 doch identisch sind, aber das Datenblatt sagt was anderes:

> In ATmega48, there is no Read-While-Write support and no separate Boot
> Loader Section. The
> SPM instruction can execute from the entire Flash.

Würd ich auch interessieren, ob es da eine Möglichkeit gibt!

Autor: B. G. (smarti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ui, okey ging ja schnell hier der entscheidende Hinweis:

> Bei AVRs ohne "boot reset vector fuse" (BOOTRST) wie beispielsweise
> ATtinys und kleinen ATmegas (ATmega48) muß der erste Befehl ein RJMP sein. > Für 
C-Programme ist das automatisch sichergestellt (und für Assembler-
> Programme leicht selbst sicherzustellen).

Autor: Tom M. (tomm) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar kann man, welche Features sollte er denn haben?

Als Problem sehe ich die Interrupt-Vektoren, weil der BL diese ja 
bereits überschreibt bzw. in Beschlag nimmt. Würde mir auch schwer tun, 
ein C-Programm so zu compilieren/linken, dass es in den noch freien 
Flash-Bereich passt und den BL nicht überschreibt.

Angesichts der Preise für die grösseren atmega würd ich eher nen 88 oder 
höher kaufen und darauf einen "richtigen" BL einsetzen. :)

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bis jetzt habe ich immer den ATMega88 mit dem AES-Bootloader von 
Atmel(AVR231)benutzt und würde diesen auch gerne weiter verwenden.

Leider ist für das Projekt der ATMega48 vorgesehen.

Wäre es denn möglich den Bootloader Bereich von Hand festzuelegen und 
dann immer nur den Bereich bis zur Bootloader Adresse neu zu 
beschreiben? Das Hauptprogramm für den ATMega48 ist nicht sehr groß und 
würde locker in die 3kB passen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom M. schrieb:
> Als Problem sehe ich die Interrupt-Vektoren, weil der BL diese ja
> bereits überschreibt bzw. in Beschlag nimmt.

Nein tut er nicht.
Ein Bootloader hat nur eine einzige Aufgabe, daher braucht er keine 
Interrupts, er pollt einfach.
Der Bootloader tauscht auch nur den RJMP am Resetvektor aus, die anderen 
Vektoren bleiben original in der Applikation.


Peter

Autor: Tom M. (tomm) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Tom M. schrieb:
>> Als Problem sehe ich die Interrupt-Vektoren, weil der BL diese ja
>> bereits überschreibt bzw. in Beschlag nimmt.
>
> Nein tut er nicht.
> Ein Bootloader hat nur eine einzige Aufgabe, daher braucht er keine
> Interrupts, er pollt einfach.
> Der Bootloader tauscht auch nur den RJMP am Resetvektor aus, die anderen
> Vektoren bleiben original in der Applikation.

Wir sprechen immer noch über den atmega48, oder?

Kannst du ein Binary/Hexfile erzeugen, das nur den Resetvektor tauscht, 
die übrigen Vektoren unangetastet lässt und dann im höheren 
Adressbereich den Bootloader ablegt? Oder ähnliches für ein 
"User-Programm" bewerkstelligen, sodass nur die nötigen Vektoren 
geflasht werden und das Programm dann in einem freien Speicherbereich 
abgelegt wird?

Ich denke zwar schon, dass es möglich ist, traue es mir aber nicht zu. 
Oder hab ich was einfache(re)s übersehen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies Dir mal die Beschreibung von Bootloadern durch.

Es gibt prinzipiell 2 Wege:

1. Der Bootloader patcht den RJMP selber (so mache ich es).
Also auch, wenn Mumpitz gesendet wird, schreibt der Bootloader immer den 
richtigen RJMP zu sich selber an 0x0000.

2.
Ein PC-Programm patcht den RJMP (so macht Hagen es).
Potentiell besteht dabei die Gefahr, daß man sich aussperren kann.


Der Applikation ist das Schnuppe, sie weiß nix vom Bootloader.


Peter

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.