C Grundlagen Bootloader

Es sollte natürlich auch mit Interrupts im Bootloader funktionieren.

Wo der Fehler noch liegen könnte ... im Moment keine Idee mehr.

Evnetuell mach doch das vielleicht mal mit dem Watchdog-Reset.
 
Hast du vielleicht einen Bootloader für nen 32er ?
 
Ich habe da leider nichts fertiges.

Ich schaue mir das mit dem Bootloader morgen noch einmal an.
 
Ich habe da leider nichts fertiges.

Ich schaue mir das mit dem Bootloader morgen noch einmal an.

Das wäre Bombe. Ich weiß gar nicht wie Ich dir dafür danken soll. Das regt mich echt auf, wenn ich an einem Punkt einfach nicht weiter komme.
Habe beide Dateien mal mit hochgeladen, also beide Projekte. Das vereinfacht das ganze.
 

Anhänge

  • Bootloader_MEGA32.zip
    76,4 KB · Aufrufe: 3
  • HeschDevBoard.zip
    897,1 KB · Aufrufe: 3
Hallo Jan,

ich finde die Ursache des Problems nicht.

Du hast ja inzwischen die Lösung mit dem Watchdog-Reset "eingebaut" und deaktivierst auch am Anfang des Bootloaders den Watchdog.
Es wird also ein echter Reset durchgeführt und der Bootloader springt sofort zur Anwendung ohne irgendwelche Konfigurationen vorzunehmen.

Hattest du es so ausprobiert?
Wenn ja, hat sich irgendwas geändert, hast du die selben Probleme?
 
Moin Dirk,

ja, habe immer noch die selben Probleme. Ohne Bootloader klappt alles wie es soll aber mit, verhält der Controller sich merkwürdig.
Wenn der Bootloader einen WDT auslöst, ist das dann wie ein richtiger Hardware Reset?
 
Wenn der Bootloader einen WDT auslöst, ist das dann wie ein richtiger Hardware Reset?
Ja, das ist dann ein "echter" Reset. Der Mikrocontroller initialisiert alle Register. Also mehr geht nicht.

Gerade den Bootloadercode habe ich mir zwar angesehen, allerdings die uart.c von Peter Fleury nicht, dies wird wohl in Ordnung sein.
Ich habe keine weiter Ideen :(

Du kannst eventuell zum Testen versuchen, auch den Bootloader zu minimieren. So würde ich wahrscheinlich vorgehen ...
(1) UART und Interrupt entfernen, nur ein Delay mit LED blinken im Bootloader. Und nach der zeit X WD-Reset und App starten.
wenn das geht
(2) Das selbe wie oben aber noch weitere Initialisierung dazu, zum Beispiel die Buffer definieren und diese füllen.
wenn das geht
(3) Das selbe wie 2 und noch IVT verbiegen und sei
wenn das geht
(4) UART wieder aktivieren, aber noch keine Kommandos senden, sondern nach der Zeit X WD-Reset und App starten
wenn das geht
(5) Wieder alles aktiviert und über Kommando Reset

Hier wäre interessant bei welchem Punkt das Problem Auftritt.

Eventuell liegt das Problem aber nicht (direkt) bei der Bootloadersoftware, sondern ganz woanders.
Versuche dich an die Fehlerquelle "heranzutasten".
 
Habe gerade mal aus Interesse einen anderen Bootloader geflasht und danach meine Software.. Siehe da! Läuft auch wunderbar!
Das kann dann doch nur bedeuten, dass der andere Bootloader einen weg hat oder?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)