Forum: Mikrocontroller und Digitale Elektronik Arduino: ISP vs. Bootloader


von Alexander M. (a_lexander)


Lesenswert?

Hallo Zusammen,

Ich bin grad dabei mich mit dem ATMEGA328 zu beschäftigen, incl. dem 
Arduino.
Und da stelle ich mir aktuell die Frage, warum eigentlich nicht gleich 
ein Chip eingebaut wird, der USB zu SPI kann, dann würde man einen 
Bootloader gar nicht benötigen und man wäre komplett frei in der 
Programmierung.
Oder natürlich den Chip so fertigen, dass UART als ISP verwendet werden 
kann...

Wo ist da mein Denkfehler?

Danke.

Grüße

von Stefan F. (Gast)


Lesenswert?

Alexander M. schrieb:
> Und da stelle ich mir aktuell die Frage, warum eigentlich nicht gleich
> ein Chip eingebaut wird, der USB zu SPI kann, dann würde man einen
> Bootloader gar nicht benötigen und man wäre komplett frei in der
> Programmierung.

Die ersten Arduino Modelle waren als billige 1-Chip Lösung konzipiert. 
Damals hätte jede Variante der USB Anbindung erheblich extra gekostet.

Beim jetzigen Arduino UNO hätte man das bestimmt sogar ohne Mehrkosten 
machen können (ist ja nur eine Frage der Firmware), aber man hat sich 
wohl mehr am Design der originalen Modelle orientiert, die einen 
seriellen Bootloader verwenden.

von Alexander M. (a_lexander)


Lesenswert?

Danke :)

Schade eigentlich...

Grüße

von Jens M. (schuchkleisser)


Lesenswert?

Weil man so den UART auch noch für's Terminal benutzen kann, das ist mit 
SPI doof.

Und weil man ja so die SPI-Leitungen belegt hätte, die wollte man aber 
für Peripherie frei haben.

UART wird zu 99% für PC-Anschluss benötigt, SPI 99% für Peripherie. Da 
würde man sich selbst ins Bein schießen, wenn man das belegen würde.
Hält dich aber keiner auf, einen ISP-Adapter statt des UART-Adapters zu 
nehmen...

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Alexander M. schrieb:

> Ich bin grad dabei mich mit dem ATMEGA328 zu beschäftigen, incl. dem
> Arduino.
> Und da stelle ich mir aktuell die Frage, warum eigentlich nicht gleich
> ein Chip eingebaut wird, der USB zu SPI kann, dann würde man einen
> Bootloader gar nicht benötigen

So ein Chip wäre eine (teure) Sonderanfertigung, während man USB-to-UART 
Chips praktisch hinterhergeworfen bekommt. Ganz zu schweigen davon, daß 
ein USB-UART eine genormte USB-Geräteklasse ist (USB CDC), für die es 
generische Treiber gibt. Eine Bridge von USB auf ISP (was mehr ist als 
nur SPI) bräuchte dann auch wieder eigene Treiber.

Nichts desto trotz gibt es natürlich dennoch USB-zu-ISP Konverter. Nicht 
in Form eines Chips, aber in Form eines Moduls. Und die heißen dann 
"ISP-Adapter". Bekannte Vertreter dieser Gattung heißen z.B. "AVR ISP 
MkII" oder "USBASP". Tatsächlich ist das ein derart weites Feld, daß das 
hiesige Wiki eine extra Seite dafür hat: AVR In System Programmer

Diese Geräte sind aber zu aufwendig, als daß man sie auf jeden Arduino 
gleich mit draufpacken wöllte. Stattdessen haben die meisten Arduinos 
einen ISP-Anschluß, an den man einen ISP-Adapter anstecken kann. Den man 
dann nur einmal kaufen muß.

von dirk (Gast)


Lesenswert?

Gruss zur Nacht

Die Story kommt mir aber gedeckelt
vor,  beim Arduino als ISP wird
der Bootloader per Elko übergangen. Mag sein das der Zugang zur UART 
beim UNO nur- und nicht -einfach sein kann.

Dirk St

von Einer K. (Gast)


Lesenswert?

Axel S. schrieb:
> Diese Geräte sind aber zu aufwendig, als daß man sie auf jeden Arduino
> gleich mit draufpacken wöllte.

Der UNO und der Mega hat einen ATMega16U2 als USB Serialwandler.
Diesen kann man auch zum ISP Adapter machen.
Schließlich hat dieser auch einen ISP Stecker und 4 weitere 
herausgeführte IOs
Also möglich ist das schon, wenn auch nicht bei allen Arduinos.

Der "Github Hoodloader2" könnte als Bastler Basis dienen.
Oder dieses 
https://welldoneblog.fedevel.com/2015/04/13/how-to-flash-arduino-bootloader-without-a-programmer/

von Andreas B. (bitverdreher)


Lesenswert?

Alexander M. schrieb:
> Oder natürlich den Chip so fertigen, dass UART als ISP verwendet werden
> kann...
Wegen ein paar Hobbysten wird kein Halbleiterhersteller irgend etwas 
fertigen.

> Wo ist da mein Denkfehler?
Daß Du Arduino benutzt. ;-)
Die LPC haben so etwas fix und fertig.

Aber wie schon erwähnt: Für die sauberste Lösung halte ich eigentlich 
ISP.
Deswegen:
> und man wäre komplett frei in der
> Programmierung.

von Praktiker (Gast)


Lesenswert?

Hallo

weil "der" Arduino ursprünglich ein ATmega 8 war und aktuell immer noch 
der ATmega 328 ist.
Das sind relativ einfache und eigentlich auch veraltete (obwohl von den 
typischen Leistungsanforderungen im Arduinoumfeld und auch wo diese 8Bit 
µC sonst eingesetzt werden auch im Jahr 2020 vollkommen ausreichend) 
Mikrocontroller - der kleine ATmega8 wird wohl schon so 15 - 20 Jahre 
alt sein, der ATmega 328 ist auch nicht viel jünger.

Halbleiterfläche kostet Geld.
Dann soll, weniger beim Arduino, beim Betrieb eine möglichst geringe 
Leistungsaufnahme erfolgen - noch ein Stromsparmodus mehr der aktiviert 
werden müsste um die "Bootloaderelektronik" abzuschalten wenn diese 
nicht genutzt wird.
Auch werden die µC vorwiegend im professionellen Umfeld eingesetzt - da 
muss der Bootloader 100% sicher funktionieren und vor allem garantiert 
niemals den Programmablauf stören, und sag jetzt nicht der liegt ja in 
einen ganz anderen Speicherbereich es gibt "immer" böse Fallstricke und 
"komische" Konstellationen.
Und so ein Bootloader fällt nicht von Himmel - er muss entwickelt oder 
eventuell eingekauft werden (Lizenzen) auch das kostet.

Und wohl noch einiges mehr.

Bei einigen "großen" und neueren Arduinos die nicht einen AVR nutzen ist 
der Bootloader wohl aber mit drauf - diese Chips sind aber auch eine 
ganz andere Generation und auch keine 8 Bitter mehr und für wohl über 
99% der Arduinoanwendungen vollkommen oversized (Mit Atomraketen auf 
Fliegen schießen).

Praktiker

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.