KEIL uVisio Debuggen: STM32 - wo bleibt mein Mikrocontroller stehen?

#4444297
Lesenswert?

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?
#4444417
Lesenswert?

./. 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.
Gast #4444429
Lesenswert?

"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?
#4446495
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren