Software Reset und Bootloader

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Software Reset und Bootloader

      Hallo,

      ich nutze einen Bootloader bei einem ATMEGA168. Da steht dass man mit "Goto &H1C00" in den Bootloader springen kann.

      Meine Frage, kann ich damit auch einfach einen Softwarereset auslösen ohne dass ich mich um irgendwas weiter kümmern muss (Interrupts, Variablen...)? Ist dieser Reset vergleichbar mit einem Hardware Reset am Pin?

      Gruß, Martin
    • Wenn du einfach nur einen Reset brauchst, dann nehme den Watchdog.
      Dafür ist der da.

      Den Bootloader direkt anspringen macht nur Sinn, wenn man von der Applikation z.B. per Befehl einen Reset ausführen soll.
      Aber auch da kann man den Watchdog nehmen.

      Die Adresse die du da nennst kann sich auch ändern. Z.B. wenn dein Bootloader größer/kleiner ist.
      Der sichere Weg ist der Watchdog.
    • Michael schrieb:

      Was willst du denn machen?
      Ich hab eine Steuerung die in einem Gehäuse sitzt und eigentlich nur über einen usb-> rs232 mit einem Programm in VB.Net konfiguriert werden kann. Momentan hab ich ein fingergroßes Loch in das Gehäuse gebohrt damit ich den Reset Taster bedienen kann. Das soll natürlich nicht so bleiben.


      Mitch64 schrieb:

      Wenn du einfach nur einen Reset brauchst, dann nehme den Watchdog.
      Dafür ist der da.
      Das hab ich auch so gemacht allerdings überwache ich das wd_mcusr (Register, Byte?) um zu erkennen ob die Steuerung einen WD Reset ausgelöst hat weil ich auch sehen möchte wann sich das Ding verabschiedet.

      Quellcode

      1. If Wd_mcusr = 11 Then
      2. Fehler = 1
      3. Fehlerprotokoll = Fehlerprotokoll + "\1"
      4. End If
      Wenn die VB-Software nun einen Reset auslöst kann ich nicht mehr unterscheiden ob der Reset gewollt ist oder durch einen Programmfehler ausgelöst wurde.


      Mitch64 schrieb:

      Den Bootloader direkt anspringen macht nur Sinn, wenn man von der Applikation z.B. per Befehl einen Reset ausführen soll.
      Genau das möchte ich ja machen. Aus zwei Gründen: Zum Einen um über RS232 einen sauberen Reset aus zu lösen, zum Anderen um in den Bootloader zu springen damit ich das Board über RS232 updaten kann.


      djmsc schrieb:

      Es geht aber auch noch Goto 0 oder Goto &H0000 beides führt einen Software-Reset durch.
      Das scheint aber nicht so sicher zu sein. Zitate aus dem Forum...

      "Es fängt nur das Programm ganz oben wieder von vorne an.
      Interrupts z.B. müssten dann noch extra vorher gestoppt werden."

      "Und die Variablen behalten ihre Werte."

      Kann ich mich da auf den Bootloader von MCS verlassen dass er alles richtig macht? Die Versuche mit "Goto &H1C00" scheinen bei mir bis jetzt zu funktionieren solange ein Bootloader auch auf dem Controller ist. Nach zig Resets läuft das Board stabil und Updaten funktioniert auch immer wieder.

      Sorry, aber in Bezug auf Bascom bin ich noch bloody bastard und als "one man schow" finde ich nicht alle Quellen die meine Fragen beantworten. Manchmal... muss ich zugeben, ist das was ich lese auch weit außerhalb meines Horizonts.

      Gruß, Martin
    • Pac-Man schrieb:

      Da steht dass man mit "Goto &H1C00" in den Bootloader springen kann.

      Ich mach das in einer mittlerweile sehr alten Steuerung schon lange mit :
      JMP &H3C00 bzw. neu mit !JMP &H3C00
      (bascomforum.de/index.php?threa…x/&postID=32910#post32910)
      Ich hatte bisher nie Probleme damit.
      Die angesprochenen Bootloader Verschiebungen muss man halt „Nur“ beachten


      Pac-Man schrieb:

      Aus zwei Gründen: Zum Einen um über RS232 einen sauberen Reset aus zu lösen, zum Anderen um in den Bootloader zu springen damit ich das Board über RS232 updaten kann.
      genau das waren meine Beweggründe damals....
      Denn ich kann nicht einfach mal schnell da dran
      Es funktioniert … zumindest …bei mir

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von HansHans () aus folgendem Grund: erweitert

    • stefanhamburg schrieb:

      Würde ein Reedschalter, den Du per Magnet durch das Gehäuse durch betätigst, eventuell helfen?
      Nicht wirklich. Noch liegt ja das Board neben mir. Was wenn es verbaut ist und ich nicht mehr ran komme?


      HansHans schrieb:

      Die angesprochenen Bootloader Verschiebungen muss man halt „Nur“ beachten
      Das ist klar.


      HansHans schrieb:

      genau das waren meine Beweggründe damals....
      Denn ich kann nicht einfach mal schnell da dran
      Es funktioniert … zumindest …bei mir
      Vielen Dank! Genau die Antwort die ich erhofft habe.

      Gruß, Martin