Hallo, ich nutze KEIL uVisio zum programmieren der STM32 Mikroprozessoren. Soweit alles ok. Ab und zu stürzt mein Mikrocontroller irgendwo softwaremäßig ab, d.h. ich habe irgendwo ein Programm-/Programmierfehler, irgendwo bleibt das Programm stehen. Nun möchte ich gern mit Keil Debuggen. D.h. Keil soll mir zeigen bei welchem Schritt das Programm stehen geblieben ist. Was muss ich machen damit mir Keil dies anzeigt?
./. schrieb: > TI Appnote: SPMA043.PDF Hmmmm.....Ich verstehe dies nicht. IcH finde keine Lösung zu meinem Problem. - ich benutze KEIL - STM32F103 von ST Micro - ST-LINK/V2 Programmer - Mikrocontroller hängt sich manchmal auf, bleibt stehen. Ich vermute der uC wartet auf irgend etwas, hängt in einer Schleife fest. Softwareproblem, aber ich weiss nicht wo. ==> Ich möchte mit KEIL sehen wo aktuell der uC im laufendem Betrieb sich befindet.
:
Bearbeitet durch User
"Stop" drücken und schauen, wo das Programm sich gerade befindet. Vielleicht in einer Endlos-Schleife? In einem Handler? Oder startet der uC einfach neu? Wird ein Betriebssystem benutzt? Was heißt "ab und zu"? Gut reproduzierbar? Oder nur alle paar Stunden/Tage/Wochen?
Horst schrieb: > "Stop" drücken und schauen, wo das Programm sich gerade befindet. Ah, super. Funktioniert. Danke. Ja, das Programm wartet in einer Schleife while(!neueDatenVorhanden); Und die Variable wird immer aus einem anderen Programm/Funktion >1 gesetzt. Da muss ich mir die andere Funktion anschauen warum da keine >1 kommt.
Micro C. schrieb: > Ja, das Programm wartet in einer Schleife while(!neueDatenVorhanden); > Und die Variable wird immer aus einem anderen Programm/Funktion >1 > gesetzt. Hört sich nach dem Fehlerteufel #1 an: ist 'neueDatenVorhanden' als volatile deklariert?
Jojo S. schrieb: > Micro C. schrieb: > >> Ja, das Programm wartet in einer Schleife while(!neueDatenVorhanden); >> Und die Variable wird immer aus einem anderen Programm/Funktion >1 >> gesetzt. > > Hört sich nach dem Fehlerteufel #1 an: ist 'neueDatenVorhanden' als > volatile deklariert? ja, die Variable ist als __IO deklariert. Bei STM: #define __IO volatile /*!< defines 'read / write' Permissions*/ Ich konnte mit Ozi auch soviel raus bekommen: Es wird per I2C IRQ ein EEPROM ausgelsen. In einer Schleife warte ich dann auf die gelsenen Daten die die IRQ-Routine am Ende mit neueDatenVorhanden = 1; anzeigt. Danach werden die Daten ausgewertet und ein neuer Lesezyklus beginnt. Einmal funktioniert das Lesen. Aber beim nächsten Lesedurchgang nicht mehr. Das Oszi zeigt mir an dass ein I2C Start stattfindet und sofort danach ein I2C Stop. Naja.....und die While-Schleife die auf neueDatenVorhanden == 1; wartet .......wartet ewig. Was mich beim debuggen mit KEIL noch interessiert: Ich sehe immer erst wenn das Kind in den Brunnen gefallen ist (Programm hängt in obiger Schleife fest). Dann sehe ich auch mit Tip von Horst an welcher Stelle sich das Programm festgefahren hat. Was ich noch gern hätte: ==> Ist es möglich mit KEIL debugging die Abarbeitung "aufzuzeichnen". So dass ich im nachhinein "steps zurück" blicken kann was der µC gemacht hat?
Suche mal nach "ETM", vielleicht als "ETM KEIL". Ich bin mir aber nicht sicher, ob der ST-LINK/V2 dies kann...
Micro C. schrieb: > Ist es möglich mit KEIL debugging die Abarbeitung "aufzuzeichnen" http://www.keil.com/support/man/docs/jlink/jLink_tracing.htm
Peter P. schrieb: > Suche mal nach "ETM", vielleicht als "ETM KEIL". > Ich bin mir aber nicht sicher, ob der ST-LINK/V2 dies kann... Cortex 2 go schrieb: > http://www.keil.com/support/man/docs/jlink/jLink_tracing.htm OK, Danke. Mist, leider nur mit jLink funktionabel. Da komme ich mit meinem ST-LINK/V2 nicht weiter :-(
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.