mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader ohne Ausgänge zurückzusetzen


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

folgendes Szenario:

Ich würde gerne aus dem laufenden Programm in den bootloader springen, 
dort den flash neu beschreiben und dann wieder ins Hauptprogramm 
springen.

Allerdings dürfen dabei die Zustände der Ausgänge sich nicht verändern 
(high und low pegel müssen bleiben)

Ist das irgendwie möglich? Soweit ich weiß wird ja beim sprung an die 
Adresse 0 nachdem der bootloader fertig ist das Programm ganz normal 
abgearbeitet, also auch alles resettet.


Grüße

Tom

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das könnte schwer werden. Denn du must ja auf jeden Fall bei dem neuen 
Programm was im Flash liegt beim Reset anfangen. Wie willst soll sich 
sonst eine Änderrung in einer Initialierungsfunktion auswirken. 
Ausderdem kann sich ja auch eine Adresse im Ram geändert haben.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Allerdings dürfen dabei die Zustände der Ausgänge sich nicht verändern
>(high und low pegel müssen bleiben)
Das ist das kleinste Problem. Initialisiere im Bootloader einfach die 
Ports nicht und greife nicht auf diese zu. Bei einem echten 
Hardware-Reset (Einschalten, Brown-Out, Watchdog oder externes Reset) 
sind die Ports aber erstmal hochohmige Eingänge, was sich nicht 
verhindern läßt.

>Soweit ich weiß wird ja beim sprung an die
>Adresse 0 nachdem der bootloader fertig ist das Programm ganz normal
>abgearbeitet, also auch alles resettet.

Nein. Beim Sprung auf Adresse $0000 wird nichts zurückgesetzt, was Dein 
Programm nicht selber zurücksetzt. Nur bei einem Hardware-Reset werden 
bestimmte Hardware-Register zurückgesetzt.

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da haste Dein Konzept nicht überdacht.
Meine Variante wäre ein eigenes Flash-Ladeprogramm. wo ich vor, während 
und nach dem Neubrennen die Kontrolle aller Ressourcen behalte.
Das kann manchmal ganz schön tricky sein.
Da Du ein Geheimnis um den uC, die Programmierumgebung und Deine 
Fähigkeiten machst, gibts hier nur ???

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry Travel Rec. war schneller, und hat natürlich Recht.
ich meinte @Tom wenn man außer der Portbelegung weitere Interna 
unbeeinflusst haben will.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Route_66 wrote:

> Meine Variante wäre ein eigenes Flash-Ladeprogramm. wo ich vor, während
> und nach dem Neubrennen die Kontrolle aller Ressourcen behalte.
> Das kann manchmal ganz schön tricky sein.

Vor allem, weil man hübsch sorgfältig auseinander halten muss, wo 
welcher Programmteil steht und welches RAM verwendet. Denn das RAM vom 
Primärprogramm wird man wohl in jedem Fall nach dem Flashen 
initialisieren müssen, weil sich das Layout ändern kann. Ein Return vom 
Flasher ins Programm geht aus dem gleichen Grund nicht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom wrote:
> Ich würde gerne aus dem laufenden Programm in den bootloader springen,
> dort den flash neu beschreiben und dann wieder ins Hauptprogramm
> springen.
>
> Allerdings dürfen dabei die Zustände der Ausgänge sich nicht verändern
> (high und low pegel müssen bleiben)

Das ist überhaupt kein Problem, der Bootloader sollte ja alle Pins, die 
er nicht benötigt, auch nicht anfassen.

Du mußt nur den Bootloader direkt anspringen, also nicht über ein 
Watchdogreset.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.