Segger Embedded Studio und Watch Fenster

Gast #6576227
Lesenswert?
• ▲
▼
im mache mal einen neuen Thread auf um diesen hier nicht voll zu müllen:
Beitrag "Re: Keil µVision vs. STM32CubeIDE"

wie gesagt das Watch-Fenster in der IDE kann man sich Live aktualisieren 
lassen und damit Variablen anzeigen und ändern ohne das Programm 
anzuhalten. Das geht aber beim Stm32 z.B. nicht mit Ausdrücken wie:

GPIOA->IDR

da kommt dann ein Fehler: "restrictet memory range"
Dieses Verhalten kann man ändern, in dem man in der Datei:
STM32F103C8_MemoryMap.xml folgende Section einfügt:

<MemorySegment name="System" start="0x40000000" size="0x10000000" />

(ich habe keine Ahnung was das sonst noch für Nebenwirkungen hat).

Leider geht das aber nicht bei der Live-Aktualisierung. Da kommt dann 
der Fehler: GPIOB->IDR Symbol not found. Halte ich das Programm an, 
passt es wieder.

Als nächsten Versuch habe ich GPIOB->IDR in der Registeransicht mit der 
rechten Maustaste und: "add to Watch" ins Watch Fenster eingefügt. 
Unsinniger Weise heißt die Variable dann nicht GPIOB->IDR sondern nur 
noch IDR. Allerdings funktioniert damit auch die Live-Aktualisierung. 
Irgendwie scheint hier noch ein Fehler in der IDE (Version 5.40) zu 
sein.

Falls Till von Segger hier mit liest, bitte mal weitergeben an die 
Entwickler.
Gast #6576386
Lesenswert?
• ▲
▼
Einem Controller "live" zuzusehen mag ja faszinierend sein,
erzeugt aber auch zahlreiche Probleme.

Es gibt z.B. Register die durch das Auslesen rueckgesetzt werden.
Ob der Controller per Code zugreift, oder extern per JTAG
wird dabei nicht unterschieden.

Man sollte sich das also gar nicht erst angewoehnen.

Wenn man nicht umhinkommt, sollte man die Register in
Schattennregister im RAM kopieren, mit denen dann auch
das Programm arbeiten muss.
(Firma: fritzler-avr.de) #6576452
Lesenswert?
• ▲
▼
oerks schrieb:
> Es gibt z.B. Register die durch das Auslesen rueckgesetzt werden.
> Ob der Controller per Code zugreift, oder extern per JTAG
> wird dabei nicht unterschieden.

Ja das ist schon etwas schade.
Dabei haben die Busse in ARM zB schon Bits für privilegierten und 
unprivilegierten Zugriff.
Da könnt man jetz nochn Bit reinbasteln "mach nix das is nur ein 
Debug(lese)zugriff"
(Firma: SEGGER) #6582921
Lesenswert?
• ▲
▼
Bastelmensch schrieb:
> Die Segger IDE ist ja ein umgelabeltes Rowley Crossworks.

Nope, SEGGER Embedded Studio basierte mal auf Rowley CrossWorks aber der 
Support läuft über uns. Wenn man keine Lizenz hat kann man einfach unser 
Forum benutzen, https://forum.segger.com/.

temp schrieb:
> Als nächsten Versuch habe ich GPIOB->IDR in der Registeransicht mit der
> rechten Maustaste und: "add to Watch" ins Watch Fenster eingefügt.
> Unsinniger Weise heißt die Variable dann nicht GPIOB->IDR sondern nur
> noch IDR. Allerdings funktioniert damit auch die Live-Aktualisierung.
> Irgendwie scheint hier noch ein Fehler in der IDE (Version 5.40) zu
> sein.

Wahrscheinlich hast du es genauso gemacht, ansonsten bitte noch einmal 
probieren:

1. Im Register Fenster ein SFR auswählen und dann über das Kontextmenü 
"Add to watch" sagen.
2. Dann ist das SFR im Watch Fenster und auch Live Watch funktioniert.
3. Falls da "restricted memory range" steht ist das im Projekt 
eingeschaltet. Einfach in die Projektoptionen gehen und "Restrict memory 
access" auf "No" stellen. Der Default schützt davor dass kein ungültiger 
Speicher gelesen wird.

> Falls Til von Segger hier mit liest, bitte mal weitergeben an die
> Entwickler.

Das funktioniert schon aber es gibt ein paar Sachen, die so einfach 
nicht vorgesehen sind.
Wenn ich z.B. das Register GPIOG.ODR dem Watch Fenster hinzufüge steht 
da nur ODR. Das hattest du ja auch schon bemerkt. Das ist natürlich 
Blödsinn und wird geändert. Da muss dann GPIOG.ODR oder ähnlich stehen.
Was auch nicht vorgesehen ist den SFR Namen direkt in das Watch Fenster 
zu schreiben. Der Parser müsste dann feststellen dass es keine Variable 
ist und schauen ob es ein passendes SFR gibt. Das habe ich auch als 
Feature Wunsch an die Kollegen weitergegeben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.