AVR-Bootloader erforderlich?

OP #4912206
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
#4912212
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)
Gast #4912267
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.
#4912310
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.
Gast #4912325
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
#4912522
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.
#4913428
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.
#4913458
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.)
Gast #4913511
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.
(Firma: Vescomp) #4913528
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.
(Firma: Vescomp) #4913565
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).
#4913648
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.
(Firma: Vescomp) #4913708
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.
#4913713
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
Gast #4913737
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren