www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu Bootloader-Protokoll AVR


Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
- Auf welcher Protokoll-Basis arbeiten Bootloader?

- Kann man im STK500 auf der Spare-RS232 in selber Weise wie mit der 
Ctrl-RS232 flashen? Also mit dem selbem avrdude-Befehl (z.B. "avrdude -c 
stk500v1 -p m168 -P /dev/cu.usbserial-FTDBO1EI -v -Uflash:w:./main.hex")

- Wenn ja, kann man da einen Bootloader empfehlen? (Stabilität) Ist z.B. 
der Arduino-Bootloader geeignet für einen m168?

Ich möchte jetzt während der Entwicklung nicht mehr dauernd umstecken 
und später ist die Hardware an einer schlecht erreichbaren Stelle.

Gruß

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

das Protokoll kann unterschiedlich sein. Die meisten gängigen werden mit 
AVRdude funktionieren, müssen aber nicht. Das musst du für jeden 
individuell herausfinden/ausprobieren.
Wenn du beispielsweise selber einen programmierst, kannst du dir ja das 
Protokoll aussuchen.

Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Roland!

Danke schonmal für die Antwort.

Selber einen programmieren wollte ich (noch?) nicht ;-) Einer der 
"gängigen" und stabilen, die mit dem STK500-Protokoll und "avrdude -c 
stk500v1 -p m168.." arbeiten wäre mir ganz recht. Gibt es da 
Empfehlungen/Erfahrungen?

Gruß

Autor: iii (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist dann kein Bootloader sondern ISP

Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ist dann kein Bootloader sondern ISP

Warum? Wenn es (wie Roland ausführt) Bootloader gibt, welche mit AVRdude 
arbeiten, dann müssen sie sich doch an ein bekanntes Protokoll (hier: 
stk500v1) halten, oder nicht?

Gruß

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer Gast wrote:
> - Auf welcher Protokoll-Basis arbeiten Bootloader?

In der Regel haben Bootloader kein STK500 kompatibles Protokoll, weil 
sie verschiedene zusätzliche Funktionen benötigen, z.B.:

- automatischer Verbindungsaufbau nach Poweron-Reset
- automatische Baudratenerkennung, damit sie auch ohne Quarz 
funktionieren
- automatische 1- oder 2-draht Erkennung.

Außerdem sollten sie möglichst wenig Flash benötigen, damit alle AVRs 
(Attiny13...ATmega2560) damit laufen.


> Ich möchte jetzt während der Entwicklung nicht mehr dauernd umstecken
> und später ist die Hardware an einer schlecht erreichbaren Stelle.

Deshalb entwickele ich auch nur noch mit Bootloader.
Und damit ich auch ohne STK500 proggen kann.

http://www.avrfreaks.net/index.php?module=Freaks%2...


Peter

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber für die ersten Tests mit dem Bootloader kann er natürlich 
spare-RS232 nutzen.

Bootloader suchen, auf den entsprechenden UART einstellen, flashen und 
los gehts. Der große Vorteil ist dann wie Peter schon sagte, dass du das 
STK500 aber dann theoretisch nicht bräuchtest. Wenn du den AVR dann 
woanders einbaust reichen die RxD/TxD Leitungen für Updates.

Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal an euch beide für die Antworten.

Wenn man für den "atmega168 Bootloader" googelt stößt man verstärkt auf 
den Arduino - Bootloader, welcher nach mehrfacher Aussage kompatibel zu 
"avrdude -c stk500 .." (bzw. -c avrisp) kompatibel ist. Das wäre schon 
mal das was ich suche.

Jetzt hab ich mir mal den Sourcode von "ATmegaBOOT_168.c" und dem 
Gegenstück im avrdude "stk500_private.h" angeschaut - das scheint 
ziemlich identisch zu sein.

Werd es damit mal versuchen.

Gruß

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer Gast wrote:
> Wenn man für den "atmega168 Bootloader" googelt stößt man verstärkt auf
> den Arduino - Bootloader

Wenn Du nur nach einem bestimmten Typ suchst, ist natürlich klar, daß Du 
dann keine universellen AVR-Bootloader findest, die sämtliche AVRs mit 
SPM-Befehl unterstützen.


>, welcher nach mehrfacher Aussage kompatibel zu
> "avrdude -c stk500 .." (bzw. -c avrisp) kompatibel ist.

Was eben entsprechende Einschränkungen bezüglich Pinwahl, Baudrate, 
CPU-Takt und Bootloaderstart bedeutet.


Peter

Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>, welcher nach mehrfacher Aussage kompatibel zu
>> "avrdude -c stk500 .." (bzw. -c avrisp) kompatibel ist.

>Was eben entsprechende Einschränkungen bezüglich
>Pinwahl, Baudrate, CPU-Takt und Bootloaderstart bedeutet.

Ja und nein. Die Dinge sind ja (soweit ich sehe) im wesentlichen per 
#define einstellbar.

Dafür hätte ich dann einen spezialisierten, schlanken und stabilen 
Bootloader (Die Arduino-Gemeinde ist ja doch sehr aktiv) Des weiteren 
ist auch der avrdude im stk500-Mode sehr reif.

Gruß

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer Gast wrote:
> Dafür hätte ich dann einen spezialisierten,

Solange man nur einen AVR-Typ (keinen ATmega48, ATtiny) und mit immer 
der gleichen Taktquelle (Quarz wegen UART ohne Autobaud) benutzt, mag 
das nicht stören.


> schlanken

Also schlank ist der keineswegs, ich lese da was von 2kB groß.
Schlanke Bootloader benötigen 512Byte oder weniger.


> und stabilen Bootloader

Heißt das, er war ne zeitlang mal nicht stabil?


> Des weiteren ist auch der avrdude im stk500-Mode sehr reif.

Was soll "sehr reif" bedeuten?
Ein Bootloader soll immer funktionieren und sich nicht versehentlich 
zerstören oder ausschließen können.


Peter

Autor: Bingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Fleury hast einer STK-500 kompatible bootloader macht

Diser kann was du schreib mit avrdude

http://homepage.hispeed.ch/peterfleury/avr-software.html

Aber guck auch am Peter D's fastboot.

mfg
Bingo (Dänemark)

Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer Gast wrote:
>> Dafür hätte ich dann einen spezialisierten,

>Solange man nur einen AVR-Typ (keinen ATmega48,
>ATtiny) und mit immer der gleichen Taktquelle (Quarz
>wegen UART ohne Autobaud) benutzt, mag
>das nicht stören.

Zum Verständnis: welchen Nachteil hat es für ein spezifisches Projekt, 
dessen Hardware-Abhängigkeiten (AVR-Typ, Takt/Quelle, UART..) zur 
Compile-Zeit festzulegen?


>Schlanke Bootloader benötigen 512Byte oder weniger.

Ok, her damit! ;-)


>> und stabilen Bootloader

>Heißt das, er war ne zeitlang mal nicht stabil?

Er wird von einer anscheinend recht großen Gemeinde intensiv verwendet, 
d.h. Fehler sollten dann auch ausgemerzt sein.


>> Des weiteren ist auch der avrdude im stk500-Mode sehr reif.

>Was soll "sehr reif" bedeuten?

Na jetzt komm, die Begriffe "reif" und "stabil" sollten doch im 
Zusammenhang mit Software klar eigentlich sein..


>Ein Bootloader soll immer funktionieren und sich nicht versehentlich
>zerstören oder ausschließen können.

Das ist klar.

Gruß

Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bingo!

Danke für den Hinweis! Der kann auch den 168er, Clock und baudrate 
werden per #define eingestellt, nur 512 byte.. (Seltsam, ist nur ein 
Viertel so groß obwohl auch in "C"!?) Sieht gut auch, den schau ich mir 
mal an!

Gruß

Autor: Bingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@neuer gast

Ich glaube das ist 512 word

/Bingo

Autor: neuer Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt!  text: 1022 dec

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer Gast wrote:

> Zum Verständnis: welchen Nachteil hat es für ein spezifisches Projekt,
> dessen Hardware-Abhängigkeiten (AVR-Typ, Takt/Quelle, UART..) zur
> Compile-Zeit festzulegen?

Hab ja gesagt: "mag das (noch) nicht stören".
Aber in der Regel bleibt es ja nicht bei einem einzigen Projekt.


> Ok, her damit! ;-)

Hier in Codesammlung, Artikelsammlung, AVRfreaks, ...
Der kleinste ist 96Bytes klein.


> Na jetzt komm, die Begriffe "reif" und "stabil" sollten doch im
> Zusammenhang mit Software klar eigentlich sein..

Mich verwunderte nur, daß Du das noch extra betonst. Als hättest Du 
schonmal negative Erfahrungen mit MC-Bootloadern gemacht.

Da Bootloader ein sehr fundamentales Programm sind, laufen sie 
eigentlich alle. Mir ist zumindest bei den AVRs nichts Gegenteiliges 
bekannt.
Unterschiede gibt es nur in den Features. Der von Hagen kann z.B. 
verschlüsseln, meiner hat nen API-Call, damit die Applikation Daten im 
Flash speichern kann, wenn der EEPROM zu klein ist.


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.