Forum: Mikrocontroller und Digitale Elektronik ATMEGA Bootloader


von Mister M. (mistermatheys)


Lesenswert?

Hallo.
Ich beschäftige mich seit kurzem mit der Programmierung von 
Mikrocontrollern.
Jetzt habe ich schon öfters was über den Bootloader gelesen.
Wie ich das verstanden habe ist der Bootloader dafür zuständig das dass 
geschriebene Programm in den Flashspeicher geladen werden kann.

Wie ist es denn jetzt z.B mit dem AVR NetIO von Pollin?
Da ist ja wahrscheinlich auch ein Bootloader drauf.
Wie funktioniert es denn wenn ich jetzt mein eigenes Programm über ISP 
in den ATMega32 laden will.
funktioniert das denn mit den vorprogrammierten Bootloader oder ist der 
Bootloader nur für die von Pollin vorgesehene Software (Netserver)?

Und was ist wenn ich ein nackten nagelneuen ATMega habe und den 
Pogrammieren will. Muss ich vorher ein Bootloader in den Controller 
brennen bevor ich ihn Programmieren kann?

Vielen Dank schon mal für die Antworten
mfg

von Timmo H. (masterfx)


Lesenswert?

Einen Bootloader brauchst du nur wenn du den Controller per RS232 oder 
sonst wie programmieren willst. Wenn du das per ISP machen willst, 
braust gar keinen Bootloader, da kann der Controller auch absolut leer 
sein.

von Flo (Gast)


Lesenswert?

Hi,

da ich eine sehr ähnliche Frage habe, wollte ich mich hier ranhängen 
anstatt einen gleichartigen Thread aufzumachen.

Ich habe soeben vermutlich meinen ATMEGA32 16PU geschrottet und habe nun 
ein sehr günstiges Angebot für ATMEGA328P mit Arduino UNO Bootloader 
entdeckt.

Wenn ich den Thread richtig verstanden habe, dann ist der Bootloader für 
mich unerheblich, da ich über den AVRISP MKII flashen möchte.

D.h. ein fabrikneuer ATMEGA32 hat gar keinen Bootloader und braucht ihn 
auch nicht, wenn er mit einem ISP geschrieben wird? Der Bootloader wird 
also nur gebraucht wenn man über ein Board programmieren will? Und wenn 
einer drauf ist, stört das nicht? Ich bin verwirrt :)

danke und lg

von Ulrich F. (Gast)


Lesenswert?

Flo schrieb:
> Und wenn
> einer drauf ist, stört das nicht? Ich bin verwirrt :)
Wenn die Fuses auf Bootloaderbetrieb stehen, aber kein Bootloader drauf 
ist, das Programm aber bis oben reicht, wirst du Fehlfunktion ernten.

Also:
Wenn du deinen 328 per ISP beschreibst, solltest du auch die Fuses 
ändern.

Flo schrieb:
> ein fabrikneuer ATMEGA32 hat gar keinen Bootloader
Ein fabrikneuer ATMEGA328P auch nicht.

von Flo F. (grange)


Lesenswert?

Hallo Ulrich und danke für die Antwort.
Habe mich zwischenzeitlich mal registriert.

D.h. wenn ich dich richtig verstehe dann wurde diesem 328P ein Arduino 
Bootloader aufgespielt, damit man ihn gleich mit Arduino Board- und IDE 
verwenden kann?

Ich kann diese µC also problemlos kaufen/verwenden, muss nur einmal die 
Fuse-Bits richtig setzen?
Das hilft mir schon weiter, dann kann ich die Bestellung schon aufgeben 
:)

danke für deine Hilfe!

von S. Landolt (Gast)


Lesenswert?

> meinen ATMEGA32 16PU geschrottet ...
> Angebot für ATMEGA328P
Damit keine Missverständnisse aufkommen: der 328 hat deutlich weniger 
Anschlüsse als der 32, ist also kein gleichwertiger Ersatz.

von Flo F. (grange)


Lesenswert?

S. Landolt schrieb:
>> meinen ATMEGA32 16PU geschrottet ...
>> Angebot für ATMEGA328P
> Damit keine Missverständnisse aufkommen: der 328 hat deutlich weniger
> Anschlüsse als der 32, ist also kein gleichwertiger Ersatz.

Ja danke, das ist mir klar. Viel mehr als einen LED-Fader mit RGB-LEDs 
werde ich damit nicht umsetzen, wollte damit anfangen und dann 
schrittweise vll. noch Infrarot-Diode f. Fernsteuerung dazubauen. Alles 
in allem komme ich mit den 24 IO Pins aber leicht aus (oder übersehe ich 
etwas?).

von Ulrich F. (Gast)


Lesenswert?

Flo F. schrieb:
> oder übersehe ich
> etwas?
Weiß nicht....
Der 328 ist ein durchaus brauchbarer Prozessor.
Der genau das macht, was im Datenblatt steht.

von Sebastian S. (amateur)


Lesenswert?

Mit einem Bootloader erreichst Du üblicherweise alles außer dem 
Bootloader selbst.
Der allerdings benötigt einiges an Speicher für sich selber. Weniger 
freies FLASH.
Vorteil: Du kannst das Teil über einen seriellen Anschluss USBeh, RS232 
oder andere serielle Kandidaten neu programmieren.

Über den ISP kannst Du dem Teil sowohl einen (Deinen) neuen Bootloader 
verpassen, als auch Dein Programm neu aufspielen. Oder beides. Natürlich 
sind dabei die zugehörigen Sicherungen zu berücksichtigen, da die 
Bootprozesse funktionell voneinander abweichen.
Vorteil: Du kannst praktisch 100% des verfügbaren Speichers verwenden.
Nachteil: Du brauchst einen ISP.

von Lothar (Gast)


Lesenswert?

Matthias H. schrieb:
> Wie ich das verstanden habe ist der Bootloader dafür zuständig das dass
> geschriebene Programm in den Flashspeicher geladen werden kann.

Jeder Hersteller außer Atmel liefert uC mit seriellem Bootloader aus. 
Solange der Flash leer ist, ist der Bootloader nach Power-Up aktiv und 
man kann mit einem USB-seriell-Kabel über Terminal das HEX-File laden 
(ohne Programmer). Bei fortschrittlichen Herstellern ist der Bootloader 
sogar in einem ROM oder in einer Lock Page, damit der nicht 
versehentlich von einem zu großen HEX-File überschrieben werden kann. 
Üblicherweise gibt es einen Bootloader-Pin der bei Power-Up geprüft 
wird.

Ulrich F. schrieb:
> Wenn du deinen 328 per ISP beschreibst, solltest du auch die Fuses
> ändern.

Kein Hersteller außer Atmel nutzt für uC Fuses (Fehlerquelle Nr. 1 für 
Anfänger)

von Flo F. (grange)


Lesenswert?

Lothar schrieb:
> Kein Hersteller außer Atmel nutzt für uC Fuses (Fehlerquelle Nr. 1 für
> Anfänger)

scheint so als hätte sich Atmel bereits einen guten Ruf gemacht ;)
Welche µC würdest du für Anfänger empfehlen?

Ich habe übrigens einen MKII hier herumliegen, sollte also kein Problem 
sein.

: Bearbeitet durch User
von Sven L. (svenl)


Lesenswert?

@Lothar:
Und die Config-Bytes bei den PICs sind keine Fuses? - Gleicher Wein in
gleich alten Schläuchen...heißt nur anders!

Bei Cypress heißt es dann Non-volatile latches, ist im Prinzip aber
genau der gleiche Quark.

Was willst Du uns eigentlich erzählen?

Bootloader-Applikationen sind, wenn sie klein sein müssen, auf einen
bestimmten Zweck zugeschnitten. Kaum ein Hersteller liefert seine µCs
mit geflashtem Bootloader aus, es sei denn man bestellt >1k von den
Dingern, dann kann man sich das auch aussuchen.

Die "Stangenware" ist immer nackig. - Dass Dein Horizont ggf. nicht über
irgendwelche Eval-Bretter mit integriertem Bootloader hinaus reicht,
können wir nichts dafür.

Viele Grüße!

Sven

von Lothar (Gast)


Lesenswert?

Sven L. schrieb:
> Die "Stangenware" ist immer nackig

Silabs liefert schon den kleinsten EFM8BB10F2 für 30 Cent mit 
Pre-Programmed Bootloader. NXP liefert alle 8051 mit Flash-Bootloader 
und alle ARM mit ROM-Bootloader schon ab DIP-8. STM alle ARM mit 
Bootloader. STC alle mit Flash-Bootloader.

Übrigens liefert sogar Atmel einige ausgesuchte uC mit Pre-Programmed 
Bootloader für die Erstprogrammierung mit FLIP

Sven L. schrieb:
> Bootloader-Applikationen sind, wenn sie klein sein müssen, auf einen
> bestimmten Zweck zugeschnitten.

Was für ein Zweck? Der Zweck ist das HEX-File auf den uC zu schaffen. 
Damit ist es sogar möglich, zuerst zu bestücken und dann über RX/TX zu 
flashen, also nur zwei Kontakte. Da die meisten uC verschiebbare 
Vektortabellen haben, kann man bei einmaliger Anwendung dann auch den 
Bootloader überschreiben und den gesamten Flash nutzen.

von Loddaar (Gast)


Lesenswert?

Lothar schrieb:
> Da die meisten uC verschiebbare
> Vektortabellen haben, kann man bei einmaliger Anwendung dann auch den
> Bootloader überschreiben und den gesamten Flash nutzen.

kann ich mir gerade nicht vorstellen, den Bootloader sich selbst 
überschreiben lassen, ist das nicht den Ast absägen auf dem man gerade 
sitzt

von Sven L. (svenl)


Lesenswert?

8051 - Technik von Vorvorgestern. Gut, mann muss wahrscheinlich jenseits 
der 50 Jahre alt sein, um sich so was anzutun.

STM32 - Jetzt mal ehrlich: Die Qualität der Doku ist unter aller Sau! 
Dann haben die Dinger noch jede Menge Hardware-Errata, die nicht oder 
nur unzureichend dokumentiert sind. Ich sage nur I²C... - Wenn man damit 
ernsthaft ein Projekt umsetzen will, muss man ausreichend Reserven 
(finanziell und zeitlich) einplanen.

Ob Bootloader oder nicht, liegt nicht am Kern, sondern ist einfach eine 
Policy des Herstellers. Kannst ja mal einen Fresscale i.MX nehmen, da 
ist nackig auch nichts dabei, außer ein paar Boot-Switches, die feste 
Sprungadressen in verschiedenen Speichern anspringen.

SiLabs-Controller habe ich noch nicht benutzt, vielleicht ist das mal 
einen Blick wert!?

Es gibt jedenfalls auch für den Anwendungszweck zugeschnittene 
Bootloader. Zum Beispiel ein Bootloader über Modbus RTU und RS-485, der 
zwar letztendlich auch UART benutzt, aber noch High-Level-Protokoll 
mitbringt. Oder Update über beliebige Feldbussysteme.

Mit Atmel's FLIP habe ich auch schon arbeiten müssen. Das Tool ist mehr 
oder weniger Pain in the *rse, dann schon eins der verfügbaren 
OpenSource-Tools, die das gleiche Protokoll können.

Du siehst, der Anwendungszweck für einen Bootloader über UART ohne 
irgendwelche High-Level-Protokolle ist recht eingeschränkt. Nicht jeder 
Entwickler lässt eine UART brach liegen, über die dann im Zweifelsfall 
geflasht werden kann. - In der Entwicklung hat man einen vernünftigen 
ISP- oder ICSP-Programmer oder der Prototyp führt diese UART nach 
draußen. Die Serienfertigung sieht ganz anders aus.

@Flo:
Ich würde schon mit den AVRs anfangen. Die 8-Bitter sind für den 
Einstieg komplex genug und verlangen nach effektiver Programmierung, 
wenn man damit mehr machen will als nur ein paar LEDs blinken zu lassen.

Atmel glänzt mit einer sehr aktiven Community und ausgezeichneter 
Dokumentation, die wohl auch ein ausschlaggebender Grund für die 
Community ist. Das Forum hat nicht umsonst einen "AVR" als Favicon im 
Browder. ;)

Werden die Atmegas zu klein, kann Du über den Tellerrand schauen nach 
einem ARM-Core oder SoC.

Persönlich interessant finde ich den Cypress PSoC 5LP, ein Cortex-M0 mit 
FPGA in einem TQFP-100-Gehäuse. Damit lassen sich sehr spezialisierte 
Schaltungen zu großen Teilen in den FPGA legen oder mittels der 
digitalen Filterblöcken direkte Signalverarbeitung mit dem schnellen ADC 
und DAC des ICs machen. Auch ein SDR-Radio lässt sich mit so einem 
Controller bauen. - Leider sind sie nicht ganz günstig (so um die 10$ 
pro Stück) und die Community ist kaum existent. Die Dokumentation und 
die Entwicklungsumgebung sind dagegen aber gut.

Viele Grüße!

Sven

von Lothar (Gast)


Lesenswert?

Sven L. schrieb:
> Nicht jeder Entwickler lässt eine UART brach liegen, über die
> dann im Zweifelsfall geflasht werden kann.

Das ist bei den meisten 8051 und ARM auch nicht nötig weil die eine 
Switchmatrix/Crossbar o.ä. haben d.h. wenn der Bootloader läuft sind die 
UART0 Pins anders geroutet als wenn das Programm läuft.

Sven L. schrieb:
> SiLabs-Controller habe ich noch nicht benutzt, vielleicht ist das mal
> einen Blick wert!?

Das sind 8051 :-) erst Anfang des Jahres ist die neue EFM8 Serie 
rausgekommen: für 1 EUR bis zu 72 MHz und 20x 14-bit ADC und 4x 12-bit 
DAC

http://community.silabs.com/t5/Projects/EFM8-8-bit-Microcontroller-Oscilloscope-Demo/m-p/140609

Die SiLabs EFM32 Serie gehört leider zu den ARM mit etwas zu komplexer 
Peripherie und entsprechend umfangreicher Doku.

Sven L. schrieb:
> STM32 - Jetzt mal ehrlich: Die Qualität der Doku ist unter aller Sau!

Zustimmung, zum Vergleich mal eine NXP LPC ARM Doku ansehen. Allerdings 
hat sich STM32 trotzdem fast überall durchgesetzt, ist also kein 
Hinderungsgrund.

von Flo F. (grange)


Lesenswert?

Hallo Sven, hallo Lothar,

danke für eure Sichtweise der Dinge.
@Sven: ja, ich finde die AVRs für den Anfang auch komplex genug. 
Insbesondere wenn das schon eine "sehr gute" Doku ist, hätte es wenig 
Sinn mit weniger guter Doku zu beginnen ^^ Bin ja mit den PDFs schon 
manchmal überfordert, bin ich doch als Informatiker anderen Umfang an 
APIs/Dokus gewöhnt.

Apropos: durchaus auch mal erfrischend, von einer technischen Diskussion 
nur einen Bruchteil zu verstehen :-D

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.