Forum: Mikrocontroller und Digitale Elektronik bootloader, ISP, Programmer, verständnisfragen


von spice (Gast)


Lesenswert?

Also ich habe mich mit dem thema bootloader beschäftigt, aber ich habe 
noch ein paar verständnisfragen, die mir vielleicht jemand beantworten 
könnte.
Hab übrigens die artikel dazu auch durchgelesen.

ist ein bootloader ein MUSS für ein controller?
wenn ich über einen "MySmartUSB"-programmer mein mega8 flashe, was genau 
passiert da? Ist da der Bootloader auch schon in aktion?
benötige ich den ISP nur, wenn ich den Mega erst in der Zielschaltung 
flashen will oder hat das auch was mit dem bootloader zu tun?
Was kann man mit einem bootloader sinnvolles anstellen (mir fehlt ein 
wenig die vorstellungskraft). vielleicht kann mir jemand ein wenig 
helfen?
Danke im Voraus
und schönen abend

Spice

von Michael U. (amiga)


Lesenswert?

Hallo,

ein Bootloader ist ein (Hilfs-)Programm für den µC.
Das Programm macht es möglich, den µC über eine andere am µC verfügbare 
Schnittstelle zu programmieren.

Erspart dann das Programmieren über ISP oder andere spezielle 
Programmiergeräte/-software.

Mit einem Bootloader der z.B. eine serielle Schnittstelle am UART 
unterstützt kann ich dann den µC einfach an einen beliebigen Rechner an 
die seriell Schnittstelle stecken und ein neues Programm per 
Terminalprogramm auf den µC programmieren.

Den Bootloader selbst muß man natürlich zuerst mit den üblichen Mitteln 
(ISP o.ä.) auf den µC brennen. Der bleibt dann z.B. bei den AVR durch 
passendes setzen der Fuse-Bits dort schreibgeschützt drauf.

Gruß aus Berlin
Michael

von spice (Gast)


Lesenswert?

Vielen Dank für dein sehr aufschlussreiche Antwort...

Warum steht das so nicht in der Artikelbeschreibung...

Also wäre es möglich, wenn ich einem mega8 per ISP oder einem anderen 
programmer vorerst einen bootloader flashe, dann diesen mega auf einer 
zielplatine mit einem usb-seriell-wandler über den usb-anschluss eines 
xbelibigen PCs meine softwareanwendung flashe?! verstehe ich das 
richtig?
Also kurz zu meinem vorhaben, ich möchte einen mega8 per usb in einer 
windowsapplikation nutzen und auch daten austauschen. Da dachte ich mir, 
dass ich eventuell mit dem usb anschluss auskomme auch fürs 
programmieren, anstatt mir noch die isp-pins herrauszuführen?!
ist das möglich?
danke und gruss
Spice

von Ralf (Gast)


Lesenswert?

Hi spice,

ja, das ist so möglich. Es kommt dann halt drauf an, wie du es lösen 
magst. Z.B. als Befehl an die Applikation, den Bootloader zu starten 
(wenn schon ne Applikation drauf ist), oder den umgekehrten Weg, den 
Bootloader vor der Applikation zu starten, der BL wartet eine gewisse 
Zeit, wenn in dieser Zeit eine bestimmte Sequenz über die Schnittstelle 
reinkommt, weiss der BL dass ein neues Programm kommt. Die zweite 
Variante ist soweit ich weiss die üblichere. Ich experimentier grad auch 
ein bisschen damit, will allerdings noch eine zusätzliche Variante, bei 
die GPIOs des USB-Chips die ISP-Leitungen bedienen können. Hat bei 
SMD-Controllern den Vorteil, dass ich sie zum Programmieren nicht erst 
in eine andere Schaltung setzen muss, und ich muss auch keinen 
"riesigen" Stecker für ein externes Tool aufs Board bringen.

Ralf

von Gast (Gast)


Lesenswert?

Ich habe auch eine Frage zum Thema Boot-Loader.

Ist es möglich im Rom mehrere kleine Programme abzulegen die je nach 
Situation gewählt werden?

Ich hatte mir dass so vorgestellt:
Man schreibt die Programmen in den Speicher und wählt das Programm, dass 
laufen soll über ein Mausklavier oder vergleichbares aus.
Ich habe nämlich dass Problem, dass ich eine zeitkritische Aufgabe habe, 
die sich je nach angeschlossener Pheripherie ändert.
Und ich will nicht umbedingt, nur weil ich etwas an der Peripherie 
umstecke, alles neu programmieren.

Ist dass so machbar?

von Peter D. (peda)


Lesenswert?

Gast wrote:

> Und ich will nicht umbedingt, nur weil ich etwas an der Peripherie
> umstecke, alles neu programmieren.

Schreiben mußt Du die einzelnen Funktionen ja in jedem Fall.

Bloß eben nicht als getrennte Programme, sondern als Unterfunktion, die 
dann zu beginn des Main ausgewählt werden.

Das hat auch den Vorteil, daß gemeinsam benötigte Funktionen nicht 
mehrmals im Flash stehen müssen.


Peter

von Baster (Gast)


Lesenswert?

So etwas wie einen selektiven boot loader würde mich auch reizen, da ich 
auch schon dass eine oder andere mal 2 oder mehrere Programme auf einem 
uC haben wollte.

>Bloß eben nicht als getrennte Programme, sondern als Unterfunktion, die
>dann zu beginn des Main ausgewählt werden.
Diese Idee hatte ich auch schon.
Bei der Main funktioniert dass schön.
Aber mir ist noch keine vernünftige Lösung eingefallen wie ich dass dann 
mit den Interrupt's lösen soll.

Denn wenn alles in einem Topf (Programm) gemacht wird, benötigt man am 
Anfang jedes Interupt's eine Unterscheidung welches Programm jetzt 
läuft.
Außerdem muß ich dann bei jeder zusätzlichen Funktion immer wieder 
Überprüfen ob sich das Ganze mit den Takten noch ausgeht.
Außerdem finde ich dass wirklich reizvoll das Ganze schön abzutrennen 
und sicher zu sein dass man nicht aus Versehen in's andere Programm 
rüberkommt.

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.