Forum: Mikrocontroller und Digitale Elektronik AVR-Bootloader erforderlich?


von Andreas M. (andreas61)


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)


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)


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)


Lesenswert?


von S. R. (svenska)


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)


Lesenswert?


von Dampf Stampf (Gast)


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)


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. (thomase)


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)


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)


Lesenswert?

Danke, jetzt ist alles klar!

Gruß Andreas

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


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)


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)


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:

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)


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)


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)


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)


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)


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)


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)


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)


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. (thomase)


Lesenswert?

Marc V. schrieb:
> um mich weiter zu nerven.

Der Obernervkotz in diesem Forum bist du.

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


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. (thomase)


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)


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)


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)


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

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.