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


von neuer Gast (Gast)


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ß

von Roland (Gast)


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.

von neuer Gast (Gast)


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ß

von iii (Gast)


Lesenswert?

Das ist dann kein Bootloader sondern ISP

von neuer Gast (Gast)


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ß

von Peter D. (peda)


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%20Academy&func=viewItem&item_type=project&item_id=1008


Peter

von Roland (Gast)


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.

von neuer Gast (Gast)


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ß

von Peter D. (peda)


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

von neuer Gast (Gast)


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ß

von Peter D. (peda)


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

von Bingo (Gast)


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)

von neuer Gast (Gast)


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ß

von neuer Gast (Gast)


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ß

von Bingo (Gast)


Lesenswert?

@neuer gast

Ich glaube das ist 512 word

/Bingo

von neuer Gast (Gast)


Lesenswert?

stimmt!  text: 1022 dec

von Peter D. (peda)


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

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.