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
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
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
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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.