Forum: Mikrocontroller und Digitale Elektronik Unterschied ISR und Bootloader


von Achim S. (achims)


Lesenswert?

Hallo Gemeinde
Was ist eigentlich der Unterschied zwischen einem Bootlader und ISR?
Erklärung:
Ich habe bisher meinen AT 128 immer über ISR programmiert. Es ist ein 6 
pol Anschluss dazu vorhanden.
Bei einigen Boards z.B. RN steht dahinter, über Bootloader oder ISR 
programmierbar oder vorhanden.
Was ist den nun möglich oder besser? Wie wird es über Bootloader 
gemacht?
achim

von flädu (Gast)


Lesenswert?

Naja. ISP bedeute den Programmer einstecken. Bedeutet in der Regel das 
Board ist zugreiffbar, offen. Bedeutet es muss ein Fachman da sein, das 
Tool bedienen, usw.

Waehrend ein Bootloader bedeutet, Programmieren durch eine 
Schnittstelle. zB seriell, zb Bluetooth, zB SD Karte. Bedeutet, das 
Board kann eingebaut sein, eingebaut bleiben, Bedeutet irgendjemad mit 
marginalen Instruktionen kann das tun, allenfalls sogar remote.

von Karl H. (kbuchegg)


Lesenswert?

Ein Bootloader ist nichts anderes als ein Programm, welches schon im µC 
sitzt und mit dem ein Frontend (meist auf einem PC) per handelsüblicher 
Schnittstelle (zb serielle Schnittstelle) Kontakt aufnimmt, um dort das 
neue Programm einzuspielen. Der Teil im µC nimmt die Programmdaten 
entgegen, prüft so zb mittels Checksumme und brennt dann mit diesen 
Daten das neue Programm in den µC.

Vorteil: du brauchst keine ISP Hardware. Man kann im Bootloader 
Prüfungen einbauen. Je nach µC kann man das ganze dann auch so 
gestalten, dass man über einen Bootloader keinen Unfug anstellen kann 
(zb sind einige Fusebits bei den AVR nicht per Programm änderbar - auf 
einem Mega16 kann man sich nicht mittels falscher Fuse Bits aus dem µC 
aussperren)

Nachteil: der Bootloader braucht selber ein bischen Platz im Speicher.

von flädu (Gast)


Lesenswert?

Die eingebaueten Bootloader sind spezifisch zu einem Tool. Da muss man 
allenfalls selbst ran, wenn man was Spezielles will. Und um die Vorteile 
des Bootloaders auszunutzen muss man laengerfristig was Spezielles 
haben.

Ich hab, zB mal einen internetfaehigen Bootloader geschrieben.

von Achim S. (achims)


Lesenswert?

Zum ISR brauche ich Hardware, z.B. Prommer AVR ik2 von Atmel, hab ich. 
Ist das universeller, z.B. für verschiedene Prz?
Wenn ich richtig gelesen habe, wird der Bootlaoder damit überschrieben. 
Wie komme ich mit dem Bootloader und Programm auf den Atmel?
Sorry, noch nie gemacht
achim

von Falk B. (falk)


Lesenswert?

@ Achim Seeger (achims)

>Was ist eigentlich der Unterschied zwischen einem Bootlader und ISR?

Bootloader: Kleines Programm zur Programmierung eines Mikrocontrollers, 
meist über RS232 oder ähnlich.
ISR: Interrupt Service Routine.

Ergo Beide Sachen haben praktisch nichts miteinander zu tun.

>Ich habe bisher meinen AT 128 immer über ISR programmiert.

Nö. Bestenfalls ISP.

Immer dieser AbKüFi!

von ich (Gast)


Lesenswert?

Der Bootlader muß einmal per ISP (nicht ISR, das ist eine 
Interruptroutine) auf den Prozessor programmiert werden und dann 
übernimmt er die Kommunikation mit dem PC und das "Brennen" des 
Prozessors.

Ab diesem Zeitpunkt läuft alles über die Verbindung PC->Bootlader.

Den ISP-Anschluß mit Programmiergerät brauchst du nur dann wieder, wenn 
du einen anderen Bootlader aufspielen willst.

von flädu (Gast)


Lesenswert?

Der ISP ist moeglicherweise zum Entwickeln schneller. Der Bootloader 
muss zur Entwicklungsumgebung passen, waehrend der ISP sowieso passt. 
Falls der Bootloader nicht passt, muss man nach dem Kompilieren, das 
andere Programm aufrufen .. ist ein paar clicks mehr. Soweit ich weiss 
ist ein Bootloader von Atmel downloadbar. Und sonst von anderswo.

von Hugo (Gast)


Lesenswert?

Das was du meinst, heißt ISP und nicht ISR... nur so am Rande.

Wenn du bei deinem Projekt gut an die ISP Schnittstelle herankommst, 
spricht nichts dagegen, das weiterhin so zu machen.

Ein Bootloader ermöglicht dir beispielsweise die FW auch über andere 
Schnittstellen zu updaten. Z.B. serielle Schnittstelle, über CAN oder 
vom USB-Stick etc.
Der einfachste und verbreiteste Fall ist vermutlich ein Bootloader der 
die Daten per serieller Schnittstelle entgegen nimmt.
Z.B. wenn dein Board (mit CAN Schnittstelle) in den Tiefen eines 
Roboters verbaut ist, du aber irgendwo bequemen Zugang zum CAN Bus hast, 
dann bietet sich ein Bootloader mit CAN Unterstützung an.

Der Bootloader ist wie schon gesagt selber ein Programm und muss ggf. an 
deine Bedürfnisse angepasst werden. Sprich es ist damit auch 
zusätzlicher Aufwand verbunden.

von Achim S. (achims)


Lesenswert?

ISP ist ok. Beim AbKüFi waren die Finger schneller als der Geist folgen 
konnte. Danke für den Hinweis. Da bleibe ich doch lieber beim ISP, da 
ich alles habe. Danke für die Hilfe
achim

von Amateur (Gast)


Lesenswert?

Der aus meiner Sicht der größte Nachteil des Bootloaders ist, dass er, 
insbesondere bei kleinen (speichermäßig) Prozessoren, zuviel Speicher 
blockiert.
Ein interessanter Aspekt des Bootloaders ist, praktisch jeder Kunde hat 
ein USB-Kabel und könnte, ein Update pflegeleicht verpackt, die neue 
Version einspielen. Einen ISP-Programmer hat meist nur der 
Programmierer.

von flädu (Gast)


Lesenswert?

Die kleinen Prozessoren lohenn sich eh nur bei extrem hohen 
Stueckzahlen.
Meine aktuellen Preise
ATMEGA8-16AU    : 1.00Eur
ATMEGA16-16AU   : 1.80Eur
ATMEGA32-16AU   : 2.50Eur
ATMEGA644P-20AU : 4.30Eur

Also auch bei 1000 Stueck ist die Einsparung begrenzt, solange man einen 
Nutzen hat. Und 1000 mal ein Gehaeuse aufschrauben ist doch eine 
Einsparung.

von Axel S. (a-za-z0-9)


Lesenswert?

Achim Seeger schrieb:
> Was ist eigentlich der Unterschied zwischen einem Bootlader und ISP?

Wenn man mal über den Tellerand hinausblickt, dann sind sie im Prinzip 
sehr ähnlich. ISP bedeutet ja erstmal nur "In System Programming" - 
heißt der µC ist in der Anwendungsschaltung programmierbar. Wer das für 
nix Besonderes hält: du bist zu jung. Es gab eine Zeit, da mußte man µC 
zum Programmieren in den Sockel eines Programmiergeräts stecken.

Der erste µC auf dem ich das anders kennen lernte war der 68HC11 von 
Motorola. Wenn man da beim Reset zwei Pins passend beschaltet hatte, 
aktivierte der µC seine serielle Schnittstelle und man konnte 256 Byte 
in das RAM laden die dann ausgeführt wurden. Das war so Anfang der 90er 
...

Der 68HC11 hatte den Bootloader im internen ROM, das nur in dieser 
Betriebsart eingeblendet wurde. Viele andere µC machen das so ähnlich. 
Die serielle ISP-Schnittstelle der AVRs ist im Prinzip auch nix anderes. 
Ein paar dezidierte Pins des µC und eine besondere Startbedingung lassen 
den µC in einen Programmiermodus wechseln. Atmel schweigt sich über die 
Details aus, aber ich gehe davon aus daß der ISP zumindest teilweise die 
CPU verwendet und dazu ein spezielles ROM einblendet. Auch JTAG haut in 
die gleiche Kerbe, auch wenn das eher in Hardware realisiert ist.

Gemeinsame Merkmale dieser Methoden:

- vom Hersteller vorgegebene Pins und Signalisierung, oft (aber nicht 
immer) ist die Schnittstelle proprietär
- sie sind weitgehend "unkaputtbar", z.B. kann man das Bootloader-ROM 
des 68HC11 nicht löschen oder kaputt konfigurieren

Was man spezifisch bei den AVR als Bootloader bezeichnet, ist aber etwas 
anderes. Aus Sicht des AVR ist der Bootloader ein stinknormales Programm 
im Flash, das nach dem Reset losläuft. Dieses Bootloader-Programm prüft 
nun eine Hardware-Bedingung wie z.B. daß zwei Pins verbunden sind und 
geht dann entweder in den Programmiermodus oder startet das 
Anwenderprogramm das zusätzlich zum Bootloader im Flash liegt.

Der Vorteil eines solchen Bootloaders ist, daß er eine beliebige 
Schnittstelle zum Download des Anwenderprogramms benutzen kann. 
Angefangen vom UART über USB hin zu CAN. Oder sogar etwas so exotisches 
wie das "Wackeln" an der Betriebsspannung ist denkbar. Vorzugsweise 
benutzt man aber eine Schnittstelle, die in der normalen Anwendung 
sowieso gebraucht wird.

So ein Bootloader hat aber auch Nachteile:

- er belegt Platz im Flash
- er kann keine Fuses ändern
- er kann kaputt gehen. z.B. ist er nach einen Chip Erase weg

und speziell bei den AVRs muß man leider auch sagen: es gibt viel zu 
viele verschiedene Bootloader, die meistens spärlich bis gar nicht 
dokumentiert sind und oft (aber nicht immer) wiederum proprietäre 
Programme auf der PC-Seite verlangen.


HTH, XL

von flädu (Gast)


Lesenswert?

>es gibt viel zu viele verschiedene Bootloader, die meistens spärlich bis gar 
nicht dokumentiert sind und oft (aber nicht immer) wiederum proprietäre
Programme auf der PC-Seite verlangen.

Nun. Es steht zumindest jedem frei sich selbst einen Bootloader zu 
schreiben. Den universalen Alleskiller. Ich kann mir dazu vorstellen :
-Lesen ab eingesteckter SD Karte
-Lesen ab eingestecktem USB Stick
-Lesen ab einer Webseite

was man rueberschieben muss kann zB ein Hex & EPP File sein. Plus 
allenfalls eine Verschluesselung, plus allenfalls eine Authentifizierung 
des Mediums

von Axel S. (a-za-z0-9)


Lesenswert?

flädu schrieb:
>>es gibt viel zu viele verschiedene Bootloader, die meistens spärlich bis
>>gar nicht dokumentiert sind und oft (aber nicht immer) wiederum
>> proprietäre Programme auf der PC-Seite verlangen.
>
> Nun. Es steht zumindest jedem frei sich selbst einen Bootloader zu
> schreiben.

Das ist Teil des Problems und auch von andersher [1] wohlbekannt:

"Alle Lösungsansätze für Problemm FOO haben die eine oder andere 
Einschränkung. Außerdem gibt es viel zu viele davon und sie sind 
inkompatibel. Laßt uns also die perfekte Lösung bauen."

Und schwupps gibt es statt N "Lösungen" jetzt N+1. Und im nächsten Jahr 
kommt der nächste Depp zur gleichen Schlußfolgerung wie oben und es 
werden N+2. usw. usf.


XL

[1] das Beispiel wo ich das hautnah erlebt habe waren X-Window Toolkits 
und darauf basierende Programmsuiten/Desktopumgebungen für Linux. 
Konkret ist KDE genauso entstanden. Wobei Qt wirklich sexy ist (oder 
zumindest damals war)

von flädu (Gast)


Lesenswert?

Also waere ein Bootloader Generator langsam drin. Klicki-Bunti, mit 
allen Optionen zum Ankreuzen.

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.