Forum: Mikrocontroller und Digitale Elektronik Realtime Portabfrage beim Dubuggen mit Keil mdk-ARM


von Toni T. (norman2)


Lesenswert?

Hallo,

ich bin noch neu hier im Forum und habe folgendes Problem: Ich habe mir 
ein Board mit einem AT91sam7x256 gebaut. Da ich vorher nur 8051 in 
Assembler programmiert habe und die Funktionsweise eines ARM sich doch 
sehr von einem 8051 unterscheidet habe ich mir von Atmel einen SAM ICE 
Debugger zugelegt.
Die erste Programmerstellung und auch die Kommunikation mit dem Debugger 
funktionieren ohne Probleme. Jedoch wenn ich auf meinem Board einen I/O 
Port schalte wird mir der veränderte Portzustand (z.B. PioB und auch 
alle anderen Register) in Keil erst angezeigt, nachdem ich die CPU 
gestoppt habe. Weiter werden sämtliche PIO-Register mit dem Wert 
0x05C90388h beschrieben, wenn ich mit dem Mauszeiger irgendein Register 
verändere.
Wenn ich das Programm aber Schritt für Schritt manuell ablaufen lasse 
(F11) werden die Registerdaten in Keil ordnungsgemäß angezeigt.

Handelt es sich nur um einen Falscheinstellung in Keil oder ist es 
normal, dass die Register erst angezeigt werden, wenn die CPU gestoppt 
wird?

Danke für eure Mühe

MFG
Norman

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Toni T. schrieb:
> Jedoch wenn ich auf meinem Board einen I/O Port schalte wird mir der
> veränderte Portzustand (z.B. PioB und auch alle anderen Register) in
> Keil erst angezeigt, nachdem ich die CPU gestoppt habe.
> [...]
> Wenn ich das Programm aber Schritt für Schritt manuell ablaufen
> lasse (F11) werden die Registerdaten in Keil ordnungsgemäß
> angezeigt.

> Handelt es sich nur um einen Falscheinstellung in Keil oder ist es
> normal, dass die Register erst angezeigt werden, wenn die CPU
> gestoppt wird?

Keine Falscheinstellung. In beiden Fällen wird die CPU gestoppt (halt
mode), was notwendig ist, um die Register auszulesen. Darf die CPU
nicht gestoppt werden, z.B. um kritische Interrupts zeitnah zu
bearbeiten, muss der sogenannte monitor mode verwendet werden, der
jedoch zusätzlichen Code (debug agent) auf dem Target erfordert.

--
Marcus

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
Noch kein Account? Hier anmelden.