Forum: Mikrocontroller und Digitale Elektronik AVR-Bootloader erforderlich?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Andreas M. (andreas61)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bis jetzt war ich immer der Meinung, und ich habe auch nochmal im 
AVR-Tut. nachgelesen, dass man für die AVRs einen Bootloader braucht.

Heute lag die aktuelle Make im Briefkasten. Da wird der Bau eines 
USB-Programmers mit einem ATtiny85 beschrieben. Im Text steht:

"Für die winzigen Mikrocontroller der ATTiny-Serie ist das Betreiben 
ohne Arduino-Bootloader aus Speicherplatzgründen oder um Pins zu sparen, 
besonders nützlich."

Gibt es unterschiedliche Bootloader - Arduino und AVR, und kann man den 
tatsächlich weglassen?

Ich bin jetzt etwas verwirrt....

Gruß Andreas

von H.Joachim S. (crazyhorse)


Bewertung
0 lesenswert
nicht lesenswert
Klar kann man den weglassen. Er macht einem das Leben aber einfacher, 
wenn man das betreffende Teil über eine (fast) beliebige Datenverbindung 
neu flashen kann. Willst du das nicht, brauchst du keinen bootlader. 
Musst dann eben das komplette Programm entweder:
-vor Einbau flashen
-das IC steckbar machen
-eine ISP-Schnittstelle in der Zielhardware vorsehen (das geht meist 
ohne tatsächlich Pins zu verlieren)

von FUD Detector (Gast)


Bewertung
1 lesenswert
nicht lesenswert
In welchem AVR-Tutorial willst du das denn bitte gelesen haben?
In http://www.mikrocontroller.net/articles/AVR-Tutorial kommt das Wort 
Bootloader noch nicht einmal vor.

Selbstverständlich braucht ein AVR keinen Bootloader. Und da die 
Arduino-Heinis kein Patent darauf haben, kann sich auch jeder seinen 
eigenen Bootloader schreiben, so er das für nötig hält.

von Andreas M. (andreas61)


Bewertung
0 lesenswert
nicht lesenswert

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Nur geht es dort nicht um AVRs.

Moderne Controller haben tatsächlich oft einen Bootloader integriert. 
Der AVR eher nicht (außer Arduinos, weil die über die serielle 
Schnittstelle geflasht werden).

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert

von Dampf Stampf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wie sollte denn ein Bootloader integriert sein ? Es sind zumindest 
vorstellbar in einer Applikation zu booten von
-SD Karte
-Serielle Schnittstelle mit einem beliebigen Protokoll

Das beliebige serielle Protokoll hat immer einen Hintergrund.
zB
- muss es moelicherweise verschluesselt kommunizieren
- muss es mit einem proprietaeren Programm verbinden
- muss es ueber Bluetooth mit einer App funktionieren,
- muss es per http mit einem Internetserver kommunizieren,
- muss es ueber eine Mobilfunkverbindung mit einer Infrastruktur 
kommunizieren.

von Andreas M. (andreas61)


Bewertung
0 lesenswert
nicht lesenswert
Wenn ich den Controller eingelötet habe, und die ISP-Schnittstelle über 
eine Wannenbuchse auf dem Boad aufgelötet habe, bringt mir der 
Bootloader doch keinen Nutzen mehr? Zum Flashen brauche ich dann sowieso 
den ISP-Programmer.

Oder bin ich da immernoch auf dem Holzweg?

Andreas

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
Andreas M. schrieb:
> Oder bin ich da immernoch auf dem Holzweg?

Wenn du einen ISP-Programmer hast und auf dem Board einen entsprechenden 
Anschluß, brauchst du keinen Bootloader.

Fabrikneue AVRs werden mit leerem Speicher ausgeliefert. Kein 
Bootloader, kein gar nichts, nur FFs. Um diese Controller zu 
programmieren, braucht man immer einen Programmer. Damit kann man jedes 
Programm auf den Controller flashen. Das kann die jeweilige Anwendung, 
aber auch ein Bootloader sein.

von dfggffgjk (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas E. schrieb:
> Fabrikneue AVRs werden mit leerem Speicher ausgeliefert.

Ich glaube, mich zu erinnern, dass auf Atmega8/16/32U2/4 ab Werk immer 
ein USB Bootlader drauf ist.

Das DB des ATmega16U4 / ATmega32U4 sagt auf Seite 1:

– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
All supplied parts are preprogramed with a default USB bootloader

Beim Atmega*U2 habe ich es nicht gefunden.

dfggffgjk

von Andreas M. (andreas61)


Bewertung
0 lesenswert
nicht lesenswert
Danke, jetzt ist alles klar!

Gruß Andreas

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
> Atmega8/16... ab Werk immer ein USB Bootlader drauf ist.

Zeig mal die USB-Pins im DB...

Har har haaarrrrr.

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Dampf Stampf schrieb:
> Es sind zumindest vorstellbar in einer Applikation zu booten von
> -SD Karte
> -Serielle Schnittstelle mit einem beliebigen Protokoll

Ein AVR kann weder von SD-Karte noch von einer seriellen Schnittstelle 
"booten". Nur der Flashinhalt kann ausgeführt werden.

Andreas M. schrieb:
> Oder bin ich da immernoch auf dem Holzweg?

Es gibt mehrere Möglichkeiten, ein Programm in einen AVR zu bekommen:
- Bootloader (wenn vorhanden)
- ISP (wenn /RESET-Pin nicht wegkonfiguriert)
- HV-Programmierung (geht immer).

Und ja, wenn du den /RESET-Pin per Fuse zu einem normalen I/O-Pin 
machst, dann geht auch ISP nicht mehr.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
-1 lesenswert
nicht lesenswert
S. R. schrieb:
> Ein AVR kann weder von SD-Karte noch von einer seriellen Schnittstelle
> "booten". Nur der Flashinhalt kann ausgeführt werden.

 Nun ja, wenn dieser AVR ein OS besitzt, kann man das schon...

von Marc V. (Firma: Vescomp) (logarithmus)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#4912386:
>> Atmega8/16... ab Werk immer ein USB Bootlader drauf ist.
>
> Zeig mal die USB-Pins im DB...
>
> Har har haaarrrrr.

 Hier.

von S. R. (svenska)


Bewertung
-2 lesenswert
nicht lesenswert
Marc V. schrieb:
> Hier.

Das ist für einen ATmega16U4, nicht für einen ATmega16.

Marc V. schrieb:
> Nun ja, wenn dieser AVR ein OS besitzt, kann man das schon...

Zeige mir mal einen AVR, der Code von einer SD-Karte ausführen kann. Und 
damit meine ich keinen Bytecode-Interpreter.

von Pandur S. (jetztnicht)


Bewertung
1 lesenswert
nicht lesenswert
Bezueglich der erwaehnten SD Karte...
Es ging um einen Bootloader der die Applikation zB von einer SD Karte 
laden kann, oder von einem Webserver irgendwo.
Der Bootloader laedt die Applikation, dazu muss er sich an die 
Randbedingungen halten, welche nicht universell sein koennen.

Normales Produkte update eben.
Ich hab mal einen Bootloader geschrieben, der konnte http Requests 
auswerten und per http die Applikation laden.

: Bearbeitet durch User
von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Sapperlot W. schrieb:
> Es ging um einen Bootloader der die Applikation zB von einer SD Karte
> laden kann, oder von einem Webserver irgendwo.

Das ist auf einem AVR nicht möglich, da Code nur vom Flash ausgeführt 
werden kann. Du kannst natürlich ein Firmware-Update laden, in den Flash 
schreiben und dann ausführen, aber das ist eben nicht die Applikation!

(Auf anderen Architekturen gilt das nicht unbedingt.)

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
> > Zeig mal die USB-Pins im DB...
> >
> > Har har haaarrrrr.

> Hier.

Die Rede war von:

> > Atmega8/16

Also mal kein U fuer ein " " vormachen...

Wer lesen kann ist klar im Vorteil.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> Das ist für einen ATmega16U4, nicht für einen ATmega16.

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸. schrieb:
> Die Rede war von:
>
>> > Atmega8/16
>
> Also mal kein U fuer ein " " vormachen...

 Zitiere:
dfggffgjk schrieb:
> Ich glaube, mich zu erinnern, dass auf Atmega8/16/32U2/4 ab Werk immer
> ein USB Bootlader drauf ist.



(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb:
> Wer lesen kann ist klar im Vorteil.

 Ja.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> Zeige mir mal einen AVR, der Code von einer SD-Karte ausführen kann. Und
> damit meine ich keinen Bytecode-Interpreter.

 Da kann man jetzt darüber streiten ob das unbedingt etwas mit
 booting zu tun hat.
 Streng genommen ist booting nur Initialisierung des Systems und
 nirgendwo ist vorgeschrieben, dass entsprechendes Program vom RAM
 ausgeführt werden muss.

 Und selbst ein AVR kann mehrere OS (im Flash allerdings) haben
 und je nach Inhalt der SD-Karte nur einen davon ausführen.
 Dementsprechend werden auch die ev. angeschlossenen Geräte
 erkannt und von uC initialisiert (oder eben nicht).

von S. R. (svenska)


Bewertung
-1 lesenswert
nicht lesenswert
Marc V. schrieb:
> Streng genommen ist booting nur Initialisierung des Systems und
> nirgendwo ist vorgeschrieben, dass entsprechendes Program vom RAM
> ausgeführt werden muss.

Kann es auf einem AVR auch nicht, daher wäre die Aussage unsinnig.

Marc V. schrieb:
> Und selbst ein AVR kann mehrere OS (im Flash allerdings) haben
> und je nach Inhalt der SD-Karte nur einen davon ausführen.

Dann bootet er trotzdem aus dem Flash. Das Programm, was die 
Initialisierung vornimmt - um bei deiner Terminologie zu bleiben - ist 
bereits vorher im Flash vorhanden und vollkommen unabhängig vom Inhalt 
der SD-Karte.

Und nun hör auf zu nerven und mach' jemanden anders an.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> Und nun hör auf zu nerven und mach' jemanden anders an.

 Ok.
 Und du kannst mal nach der Definition von booten suchen, gleich
 danach nach boot loader und wenn du den Unterschied verstanden hast,
 kannst du zurückkommen, um mich weiter zu nerven.

: Bearbeitet durch User
von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
-1 lesenswert
nicht lesenswert
Marc V. schrieb:
> um mich weiter zu nerven.

Der Obernervkotz in diesem Forum bist du.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
-1 lesenswert
nicht lesenswert
Thomas E. schrieb:
> Der Obernervkotz in diesem Forum bist du.

 Du bist eine Null, sowohl vom Wissen als auch vom Charakter her.

 Suchst immer wieder nach Gelegenheiten, von hinten (wie alle
 Feiglinge) einen Stein zu werfen.

 Dass ich wesentlich mehr Ahnung als du habe, sollte doch kein
 Grund sein, sich so zu benehmen.

 Im Zusammenhang mit dir fällt mir nur Hyäne ein.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
-1 lesenswert
nicht lesenswert
Marc V. schrieb:
> Du bist eine Null, sowohl vom Wissen als auch vom Charakter her.
>
>  Suchst immer wieder nach Gelegenheiten, von hinten (wie alle
>  Feiglinge) einen Stein zu werfen.
>
>  Dass ich wesentlich mehr Ahnung als du habe, sollte doch kein
>  Grund sein, sich so zu benehmen.
>
>  Im Zusammenhang mit dir fällt mir nur Hyäne ein.

https://www.youtube.com/watch?v=7Sing06uO6M

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Dampf Stampf schrieb:
> Wie sollte denn ein Bootloader integriert sein

Meist als ROM (LPC, STM32) oder in einem speziellen Flash-Block (8051, 
EFM8, EFM32, STM8) das hat auch den Vorteil dass das User-Programm wie 
gehabt an Adresse 0 anfangen kann.

Da bei AVR beides nicht geht wird der Bootloader als normales Programm 
an Adresse 0 mit Programmer geflasht und das User-Programm muss dann für 
eine höhere Adresse nach dem Bootloader gelinkt werden.

Andreas M. schrieb:
> Wenn ich den Controller eingelötet habe, und die ISP-Schnittstelle über
> eine Wannenbuchse auf dem Boad aufgelötet habe, bringt mir der
> Bootloader doch keinen Nutzen mehr?

In einem Produkt wird keine Programmier- oder Debug-Schnittstelle 
rausgeführt. Das User-Programm holt sich der Bootloader über vorhandene 
Schnittstellen z.B. UART, CAN, I2C

Im übrigen ist das was bei AVR ISP heisst eigentlich gar kein echtes ISP 
weil ISP so definiert ist, das es dafür keine spezielle Hardware braucht 
und schon gar kein SPI

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Lothar schrieb:
> Im übrigen ist das was bei AVR ISP heisst eigentlich gar kein echtes ISP
> weil ISP so definiert ist, das es dafür keine spezielle Hardware braucht
> und schon gar kein SPI.

Naja, du verwürfelst da gerade "ISP als Konzept" mit dem "ISP als 
Atmel-Protokoll für AVR". Das sind zwei verschiedene Dinge, die leider 
den gleichen Namen tragen.

von argh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> Naja, du verwürfelst da gerade "ISP als Konzept" mit dem "ISP als
> Atmel-Protokoll für AVR". Das sind zwei verschiedene Dinge, die leider
> den gleichen Namen tragen.

Schlimmer noch, er verwechselt sogar SPI mit ISP

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]
  • [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.