Forum: Mikrocontroller und Digitale Elektronik ATMEL Chips mit oder ohne Bootlader


von Rudi E. (eh31157)


Lesenswert?

Hallo,

bin ATMEL Neuling und will mit dem ATMega328 anfangen.

Es gibt sie mit und ohne Bootloader.
Kann mir jemand die Zusammenhänge erklären ?

Meine Konfiguration soll sein:
BASCOM über USB ISP-Programmierer auf ATMEGA328 im Experimentierboard

oder

Arduino-IDE über USB zum ARDUINO UNO R3 MEGA328P.

Danke schon mal vorab für eure Mithilfe
Rudi

von marixstorm (Gast)


Lesenswert?

Hi.

Ein Bootloader erlaubt dir mehr Freiheiten, wie du den IC programmierst.

Ohne Bootloader steht dir praktisch nur ISP oder HVPP (high voltage 
parallel programming ). In bestimmten Faellen sogar nur HVPP - und 
dafuer brauchst du ein extra Programmiergeraet.

Mit Bootloader kann dein IC quasi jede Moeglivhkeit Daten in den IC zu 
schieben zur Programmierung nutzen. Nachteil ist, das man den Bootloader 
ersteinmal mit einer der o.g. Methoden in den IC schreiben muss.

Beispielsweise ist USBaspLoader 
(https://github.com/baerwolf/USBaspLoader) ein Bootloader um per USB 
einen ATmega wie z.B. im tinyUSBboard 
(matrixstorm.com/avr/tinyusbboard/) zu programmieren.

MfG

von Stefan S. (stefan2013)


Lesenswert?

Du darfst auch nicht vergessen, dass der Bootloader Speicherplatz im 
Flash benötigt.

von Stephan B. (matrixstorm)


Lesenswert?

Ja, richtig.

marixstorm schrieb:
> Nachteil ist, das man den Bootloader
> ersteinmal mit einer der o.g. Methoden in den IC schreiben muss.

Ich ging aber davon aus, das die obige Aussage das impliziert.
Aber gute Idee nocheinmal explizit darauf hinzuweisen.

MfG

von Rudi E. (eh31157)


Lesenswert?

Erst mal DANKE an alle, die mir um Mitternacht noch antworteten.

Wenn ich es richtig verstehe, werde ich mir für alle Fälle solche Chips 
anschaffen, welche einen Bootloader bereits enthalten.

Gut ist der Tip von marixstorm, den USBaspLoader runter zu laden und 
bereit zu halten.

Bestimmt gibt es noch etliche Fragen im weiteren Verlauf, gerne werde 
ich die in diesem Forum einstellen.

Schönes WE an alle Beteiligten.

von Wolfgang (Gast)


Lesenswert?

Rudi Einstein schrieb:
> Wenn ich es richtig verstehe, werde ich mir für alle Fälle solche Chips
> anschaffen, welche einen Bootloader bereits enthalten.

Warum? Wenn du sowieso einen ISP-Programmierer hast, kannst du dir den 
Bootloader einfach selber draufflashen.

von Thomas E. (thomase)


Lesenswert?

Rudi Einstein schrieb:
> Hallo,
>
> bin ATMEL Neuling und will mit dem ATMega328 anfangen.
>
> Es gibt sie mit und ohne Bootloader.
> Kann mir jemand die Zusammenhänge erklären ?
>
> Meine Konfiguration soll sein:
> BASCOM über USB ISP-Programmierer auf ATMEGA328 im Experimentierboard
>
Hierfür brauchst du keinen Bootloader. Wenn einer drauf ist, wird er 
beim Programmieren über ISP gelöscht und ist erstmal Geschichte. Also 
spar dir die 50 ct, die der Chip mit Bootloader mehr kostet. Wenn du den 
Aruino-Bootloader irgendwann mal draufhaben möchtest, lädts du dir den 
runter und brennst ihn drauf. Einen ISP-Programmer hast du ja.
>
> Arduino-IDE über USB zum ARDUINO UNO R3 MEGA328P.
>
Genau für diese Umgebung sind die Bootloader auf den Chips drauf. Dann 
bindest du dich aber an das Arduino-System und dessen 
Programmierumgebung. Kannst den natürlich jederzeit auch mit 
ISP-Programmer flashen.

Wenn du also auf die Bascom-Schiene gehen willst, nimmst du Chips ohne 
Bootloader, wählst du Arduino brauchst du Controller mit dem speziellen 
Arduino-Bootloader. Das sind aber so ziemlich die einzigen Controller, 
die mit Bootloader angeboten werden. Also Bootloader = Arduino.

Das Bootloader-Programmieren hat aber auch noch den Nachteil, daß du an 
die Hardware-Konfiguration des Arduino gebunden bist. Üblicherweise 
laufen die Controller dabei mit 16MHz und externem Quarz. Jeder AVR kann 
aber auch mit internem Oszillator betrieben werden. Also ohne Quarz. Die 
Möglichkeit hast du in dem Arduino-System nicht. Auch gibt es jede Menge 
kleine Controller(Attiny), die du damit nicht verwenden kannst.

Flexibel bist du nur mit deiner Bascom/ISP-Lösung.

Bootloader sind gerade, insbesondere durch die Arduinos, groß in Mode. 
Nice to have. Mehr aber auch nicht. Zu einer richtigen 
Entwicklungsumgebung gehört ein ISP-Programmer. Auch wenn es nur ums 
Hobbybasteln geht.

mfg.

von c-hater (Gast)


Lesenswert?

marixstorm schrieb:

> Ein Bootloader erlaubt dir mehr Freiheiten, wie du den IC programmierst.

Quatsch.

Richtig ist: Bootloader ermöglichen es, den Controller über andere 
Medien zu programmieren als über physische Verbindungen zum ISP-Port 
bzw. zum HV-Port.

Dafür schränken Sie aber die Freiheit massiv ein. Man kann die Fuses 
nicht mehr programmmieren und man man kann den Bootloader-Bereich nicht 
mehr uneingeschränkt nach eigenem Gusto benutzen. Dies sind die 
minimalen Einschränkungen der Freiheit, die man hinnehmen muß.

Allerdings ist das sicher oft akzeptabel, wenn man die Vorteile eines 
Bootloaders dafür bekommt. Insbesondere dann, wenn der Protokollstack 
des Bootloaders für das gewählte Medium dann auch von der Anwendung 
benutzt werden kann. Das ließe zumindest den Verlust an Flash-Space 
verschmerzbar werden, weil eben große Teile des vom Bootloader benutzten 
Bereiches dann überhaupt nicht verloren wären.

Allerdings habe die C-only-Nasen offensichtlich ein Problem damit, das 
zu ermöglichen, warum auch immer, es wäre auch in C trivial, eine 
sinnvolle Schnittstelle zu designen, ein stabiles ABI dafür in den 
Bootloader zu integrieren und dies in Form eines C-Headers für 
Anwendungen bereitzustellen.

Scheinbar sind das aber alles Leute, die das Design des Linux-Kernels 
derart verinnerlicht haben, daß ihnen sowas wie ein stabiles ABI 
förmlich als Sakrileg vorkommt...

> Ohne Bootloader steht dir praktisch nur ISP oder HVPP (high voltage
> parallel programming ). In bestimmten Faellen sogar nur HVPP - und
> dafuer brauchst du ein extra Programmiergeraet.

Ja, aber nur über diese Wege hat man wirklich völlige Freiheit.

von Rudi Einstein (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Flexibel bist du nur mit deiner Bascom/ISP-Lösung.
>
> Bootloader sind gerade, insbesondere durch die Arduinos, groß in Mode.
> Nice to have. Mehr aber auch nicht. Zu einer richtigen
> Entwicklungsumgebung gehört ein ISP-Programmer. Auch wenn es nur ums
> Hobbybasteln geht

Hallo Thomas,
diese Antwort bringt mich schon mal viel weiter und in der Betrachtung 
meines Anliegens ist das sehr verständlich dargestellt.

Ich bin schon 67 und bin nun mal mit BASIC "alt" geworden. Die 
Entwicklungsumgebung von BASCOM ist auch deshalb interessant, da die 
Demo- Version voll umfänglich zur Verfügung steht.

Im Fokus bei mir steht die Vorstellung, Abläufe im Haus zu steuern und 
Messgrößen zu erfassen um sie statistisch zu verwerten.

Gruß Rudi

von Stephan B. (matrixstorm)


Lesenswert?

c-hater schrieb:
> Allerdings habe die C-only-Nasen offensichtlich ein Problem damit, das
> zu ermöglichen, warum auch immer, es wäre auch in C trivial, eine
> sinnvolle Schnittstelle zu designen, ein stabiles ABI dafür in den
> Bootloader zu integrieren und dies in Form eines C-Headers für
> Anwendungen bereitzustellen.
>
> Scheinbar sind das aber alles Leute, die das Design des Linux-Kernels
> derart verinnerlicht haben, daß ihnen sowas wie ein stabiles ABI
> förmlich als Sakrileg vorkommt...

Kannst du das bitte weiter Ausfuehren.

Ich bin derzeit krank und brauche dringend was zum Lachen.

MfG

von Thomas E. (thomase)


Lesenswert?

Stephan B. schrieb:
> c-hater schrieb:
>> Allerdings habe die C-only-Nasen offensichtlich ein Problem damit, das
>> zu ermöglichen, warum auch immer, es wäre auch in C trivial, eine
>> sinnvolle Schnittstelle zu designen, ein stabiles ABI dafür in den
>> Bootloader zu integrieren und dies in Form eines C-Headers für
>> Anwendungen bereitzustellen.
>>
>> Scheinbar sind das aber alles Leute, die das Design des Linux-Kernels
>> derart verinnerlicht haben, daß ihnen sowas wie ein stabiles ABI
>> förmlich als Sakrileg vorkommt...
>
> Kannst du das bitte weiter Ausfuehren.
>
> Ich bin derzeit krank und brauche dringend was zum Lachen.
>
> MfG

Hör nicht auf sein Getöse. Bei dem sind alle C-Programmierer Idioten und 
nur er hat es verstanden.

mfg.

von c-hater (Gast)


Lesenswert?

Stephan B. schrieb:

> Kannst du das bitte weiter Ausfuehren.

Wenn du erklärst, was genau du davon nicht verstanden hast, führe ich 
das gern weiter aus.

> Ich bin derzeit krank und brauche dringend was zum Lachen.

Alles klar, das erklärt alles. Du bist krank. Schön, daß du das selber 
zugibst, sonst würde ich mich bei den Moderatoren gleich wieder der 
Beleidigung verdächtig machen, wenn ich es einfach nur behaupten 
würde...

von Thomas E. (thomase)


Lesenswert?

Rudi Einstein schrieb:
> Ich bin schon 67 und bin nun mal mit BASIC "alt" geworden. Die
> Entwicklungsumgebung von BASCOM ist auch deshalb interessant, da die
> Demo- Version voll umfänglich zur Verfügung steht.
>
Dann bleib einfach dabei. Nicht wegen Hans und Hänschen, sondern weil es 
ziemlich egal ist, in welcher Sprache man auf dem Controller entwickelt.
Auch wenn über die Bascommer öfter mal hergezogen wird. Dazu gehöre ich 
manchmal auch. Aber das muß man nicht Ernst nehmen. Bei Problemen wird 
dir hier auch mit Bascom kompetent geholfen. Bei Arduino ist das ein 
bisschen spärlicher.

> Im Fokus bei mir steht die Vorstellung, Abläufe im Haus zu steuern und
> Messgrößen zu erfassen um sie statistisch zu verwerten.
>
Das sollte kein Problem sein.

mfg.

von c-hater (Gast)


Lesenswert?

Thomas Eckmann schrieb:

> Hör nicht auf sein Getöse.

Getöse? Fakten.

Zeig' mir doch z.B. einfach einen in C geschrieben Ethernet-Bootloader, 
der es Anwendungen ermöglicht, den notwendigerweise ja bereits im 
Bootloader integrierten Gerätetreiber und den IP-Stack zu sharen.

Wie schon gesagt: mir ist völlig bewußt, daß das kein Problem der 
Sprache C an sich ist, es wäre definitiv auch in C realisierbar. Bloß 
macht es scheinbar keiner ihrer Apologeten...

von Thomas E. (thomase)


Lesenswert?

c-hater (Hofnarr) schrieb:
> Alles klar, das erklärt alles. Du bist krank. Schön, daß du das selber
> zugibst, sonst würde ich mich bei den Moderatoren gleich wieder der
> Beleidigung verdächtig machen, wenn ich es einfach nur behaupten
> würde...

Wie kommst du denn darauf? Das würde ja bedeuten, daß man dich Ernst 
nimmt.

mfg.

von Matthias (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Dann bindest du dich aber an das Arduino-System und dessen
> Programmierumgebung.

Was meinst du damit?
Die Arduino Boards und die zugehörigen Libraries lassen sich doch unter 
Verwendung von "Arduino for Visual Studio and Atmel Studio" genauso in 
Atmel Studio verwenden (http://visualmicro.codeplex.com/)

von c-hater (Gast)


Lesenswert?

Thomas Eckmann schrieb:

> Wie kommst du denn darauf? Das würde ja bedeuten, daß man dich Ernst
> nimmt.

Nun, ich lege keinen besonderen Wert darauf, von C-Apologeten ernst 
genommen zu werden. Diese Typen sind wie Mitglieder irgendwelcher 
Sekten. Völlig gehirngewaschen. Mit denen ist eine faktenbasierte 
Diskussion meistens unmöglich.

Selbst dieser (vergleichsweise kurze) Thread zeigt das sehr deutlich. 
Auf die konkrete Kritik geht keiner der C-Jubelperser ein (natürlich 
auch du nicht).

Statt dassen: Herabsetzung und Verächtlichmachung der "Andersgläubigen". 
Armselig, aber durchaus passend in's Schema gehirngewaschener 
Sektenmitglieder.

von Stephan B. (matrixstorm)


Lesenswert?

Naja, c-hater:

Mir ist eigentlich die Zeit zu Schade deine Psychosen zu füttern.
(Ja, ich ahne schon, auch fuer diesen Satz wirst du dich wieder 
herablassend aeussern.)

Aber viellicht ein paar Denkansaetze fuer dich:

1) Uebe dich doch bitte in Diplomatie - auch wenn du es nicht fuer 
noetig haelst und dich als staendig angegriffen fuehlst. (Du strahlst 
eine Aura der Feindseeligkeit aus, wie es nur kaum zu ertragen ist.)

2) Kennst du denn ueberhaupt einen Bootloader, der einen Codereuse 
praktiziert so wie du ihn ertraeumst?

3) Das spminterface 
(https://github.com/baerwolf/USBaspLoader/blob/master/firmware/spminterface.h) 
vom USBaspLoader implemtiert eine feste ABI. Zwar nur fuer eine 
Schreibfunktion aus normalen Regionen des Flashs - aber immerhin. Wenn 
fuer Entwickler sich der Bedarf ergeben sollte, das sie den USB-Stack 
reusen wollen, koennen Sie es nachpatchen.
Auch du wirst sicherlich einsehen, alles auf einmal ist ein wenig viel 
fuer einen Entwickler...

MfG

von Stephan B. (matrixstorm)


Lesenswert?

Rudi Einstein schrieb:
> Hallo,
>
> bin ATMEL Neuling und will mit dem ATMega328 anfangen.

Hallo, nochmal zum eigentlichen Kern des Threads - naemlich dir - Rudi:

Ausschlieslich ISP zu verwenden birgt gerade als Anfaenger die Gefahr, 
das du dir den Chip in einen Zustand versetzt aus dem du ihn nicht 
weiter benutzen kannst. (Stichwort: "Verfusen")

Dadurch das du eben immer in der Lage bist, Lock- und Fusebits zu 
setzen, kannst du theoretisch bei jeder Programmierung den Chip 
"umkonfigurieren".
Leider auch in Konfigurationen, in denen ISP nicht mehr funktioniert.
Speziell beim ATmega328 koenntest du versehentlich den RESET-PIN 
deaktivieren, externe Clocks (die du nicht vorraetig hast) konfigurieren 
oder einfach "serielles Programmieren" ausschalten.

Ein Bootloader konfiguriert den IC beim Zeitpunkt seiner Programmierung 
und verhindert spaeteres Aendern durch sich selbst.
Ein installierter Bootloader schliest ausserdem zunaechst nicht die 
weitere Verwendung von ISP aus, erlaubt aber z.B. ueber die 
Deaktivierung von ISP hinaus eine weitere Programmierung (z.B. wenn man 
den Reset-PIN doch lieber anderweitig benutzen will).

Ich hoffe das dir das weiter hilft - weitere Fragen beantworte ich dir 
gern so gut ich kann.

MfG

Nachtrag: Mit Bootloader programmieren ist meist auch schneller und 
schont den Flash - da u.a. kein Chip-erase (der den ganzen Flash 
loescht) notwendig ist.

Ein Mensch deiner Erfahrung duerfte zudem mit Steckmontage loeten 
vertraut sein.
Vielleicht moechtest du dir ja mal 
http://matrixstorm.com/avr/tinyusbboard/ genauer ansehen...

von Thomas E. (thomase)


Lesenswert?

Matthias schrieb:
> Thomas Eckmann schrieb:
>> Dann bindest du dich aber an das Arduino-System und dessen
>> Programmierumgebung.
>
> Was meinst du damit?
> Die Arduino Boards und die zugehörigen Libraries lassen sich doch unter
> Verwendung von "Arduino for Visual Studio and Atmel Studio" genauso in
> Atmel Studio verwenden (http://visualmicro.codeplex.com/)

Natürlich ist man nicht in der Arduinowelt gefangen. Aber zu Anfang und 
darum geht es in diesem Thread, macht man nur Arduino. Das Verwenden der 
Arduino-Libs in der "normalen" Umgebung kommt auch eher von der anderen 
Seite. Nämlich daß der "normale" Programmierer, Arduinoteile in seine 
Programme einbaut.

mfg.

von Thomas E. (thomase)


Lesenswert?

c-hater (Hofnarr) schrieb:

> Statt dassen: Herabsetzung und Verächtlichmachung der "Andersgläubigen".
> Armselig, aber durchaus passend in's Schema gehirngewaschener
> Sektenmitglieder.

Immer wieder erheiternd deine Beiträge. Danke. Weiter so.

mfg.

von Matthias (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Natürlich ist man nicht in der Arduinowelt gefangen. Aber zu Anfang und
> darum geht es in diesem Thread, macht man nur Arduino.

Meinst du mit "Arduino" die Hardware, die Code-Plattform oder die IDE 
(wenn man dies Ding mit sein rudimentären Grundfunktionen so nennen 
darf)?

Arduino als Code-Plattform hat den Vorteil, dass die meisten Details 
erstmal unter einer glatten Oberfläche verborgen sind und viel 
Funktionalität in besseren "Dreizeilern" umsetzbar ist. Das vermeidet 
viel Anfängerfrust. Wenn man dann aus dem Anfängerstadium raus ist, hat 
man die Möglichkeit, bei Bedarf in C bis auf Registerebene an den 
Prozessor ranzukommen.

von Thomas E. (thomase)


Lesenswert?

Matthias schrieb:
> Meinst du mit "Arduino" die Hardware, die Code-Plattform oder die IDE
> (wenn man dies Ding mit sein rudimentären Grundfunktionen so nennen
> darf)?

Das gesamte System.

> Arduino als Code-Plattform hat den Vorteil, dass die meisten Details
> erstmal unter einer glatten Oberfläche verborgen sind und viel
> Funktionalität in besseren "Dreizeilern" umsetzbar ist. Das vermeidet
> viel Anfängerfrust. Wenn man dann aus dem Anfängerstadium raus ist, hat
> man die Möglichkeit, bei Bedarf in C bis auf Registerebene an den
> Prozessor ranzukommen.

Bis man dann da sitzt wie der Ochs vorm Berg:

Beitrag "bootloader per arduinoUno auf atmega168PV-10AU"

mfg.

von Thomas L. (thomas_hx)


Lesenswert?

Thomas Eckmann schrieb:
>>
>> Arduino-IDE über USB zum ARDUINO UNO R3 MEGA328P.
>>
> Genau für diese Umgebung sind die Bootloader auf den Chips drauf. Dann
> bindest du dich aber an das Arduino-System und dessen
> Programmierumgebung.

Ist blödsinn.
Der Bootloader der Arduinos dient nur dazu das Programm mittels AVRDUDE 
in den Flash zu laden, und ist von der Programmierumgebung der Arduinos 
völlig unabhängig. Wenn eine Entwicklungsumgebung AVRDUDE zum hochladen 
nutzt, kann auch der Bootloader genutzt werden.
Da Du dich anscheinend noch nicht für eine Entwicklungsumgebung 
entschieden hast , schau dir doch mal LunaAVR an: http://avr.myluna.de
Und ja, die kann auch den Arduino Bootloader nutzen.

von Frank K. (fchk)


Lesenswert?

Rudi Einstein schrieb:

> Ich bin schon 67 und bin nun mal mit BASIC "alt" geworden. Die

Echt? Nicht Fortran oder Algol?

fchk

von Rudi Einstein (Gast)


Lesenswert?

Frank K. schrieb:
> Echt? Nicht Fortran oder Algol?
>
> fchk

Hallo fchk,

du hast GCOS6 etc. nicht genannt.
Aber ehrlich,Hochsprachen wie diese deckten doch ganz andere Bereiche 
ab.

Dein Beitrag hat mich jetzt auch nicht besonders weiter gebracht.
Trotzdem Danke für Nichts.

Gruß Rudi

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.