Code läuft vom Debugger, aber nicht ohne ihn

Ich verwende den WindRiver JTAG Debugger, um meinen Code zu debuggen. Immer wenn ich den Code mit verbundenem Debugger ausführe, funktioniert Code korrekt, aber wenn ich ihn trenne, kann er nicht einmal starten!

Hatte jemand solche Probleme?

Sie können nicht erwarten, dass jemand hilft, wenn Sie nicht genügend Informationen geben, wie zum Beispiel, welcher Prozessor es für den Anfang ist ...
@mikeselectricstuff: Ich verwende den MFC5253-Prozessor mit WindRiver Debugger!

Antworten (4)

Mein Debugger für einen Coldfire führt einige Initialisierungen des SDRAM-Controllers und anderer Low-Level-Register durch, die normalerweise vom Bootloader durchgeführt werden. Überprüfen Sie, wie Ihr Debugger den Chip initialisiert.

Hier sind die Gründe, warum ich diesen Fall gesehen habe:

  1. Ich habe gesehen, dass Studenten keine Pull-up-Widerstände auf ihren MCLR-Pins auf PICs platziert haben. Wenn es mit dem Debugger verbunden ist, zieht der Debugger es für sie hoch, aber sobald sie es trennen, funktioniert nichts.
  2. Ein schlechter Boden. Das ist etwas schwieriger herauszufinden. Aber ich habe einen Fall gesehen, in dem der Programmierer eine bessere Masseverbindung herstellen konnte, als wenn er von einem Netzteil oder einer Batterie abgeschaltet wurde.
  3. Liefert Ihr Setup Strom über Ihre JTAG-Verbindung? Ich habe kürzlich einen Fall gesehen, in dem der Mikrocontroller in einen Brownout-Zustand überging, weil sich die Stromversorgung nicht schnell genug beruhigen konnte, bevor der Mikro versuchte, die Dinge einzuschalten. Beim Anschließen an einen Debugger wurde viel Strom angelegt, bevor der Code gestartet wurde, sodass dies nie gesehen wurde.

Im Allgemeinen wird dieses Problem dadurch verursacht, dass das Programm nach einem Zurücksetzen nicht ordnungsgemäß startet, wenn es ohne den Debugger ausgeführt wird. Beispielsweise muss bei den Rowley CrossWorks ARM-Tools STARTUP_FROM_RESET für den Präprozessor definiert werden.

Vielleicht verwenden Sie die Debug-Version, wenn Sie mit dem angeschlossenen JTAG-Gerät kompilieren, verwenden aber Release, wenn Sie ohne es kompilieren? Wenn Sie unterschiedliche Debug- und Release-Versionen verwenden, stellen Sie außerdem sicher, dass die Optimierungen für beide Varianten gleich eingestellt sind.

Anscheinend hast du zu früh gepostet. Vielleicht solltest du deinen Beitrag überprüfen.
@Kellenjb Blame Internet Exploder, den ich hier am College verwenden muss :(. Es scheint, dass Transaktionen zufällig abgebrochen werden.