mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Debug Communication Channel beim Cortex M3


Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

 ich wollte mal fragen ob vielleicht jemand von euch weiß ob der 
Cortex-M3 auch eine Möglichkeit besitzt mit dem laufenden Core über 
Serial Wire Debug Schnittstelle zu kommunizieren. Bei den alten ARM7 und 
ARM9 gibt es ein Debug Communication Channel über das ich das machen 
kann. Jetzt hab ich schon raus gefunden das der Cortex-M3 gar kein 
Coprozessoren unterstützt und es also nicht so gehen kann wie bei den 
alten. Aber wie dann, ich find einfach nix in den ganzen TRM Dokumenten. 
Schonmal Danke für sachdienliche Hinweise.

Christoph

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cortex-M3 hat keinen DCC. Stattdessen gibt es für die Ausgabe vom Core 
das ITM. Um Daten an den Core zu schicken kann man sich auf eine 
Variable (Speicheradresse) einigen, über die der Datenaustausch 
stattfindet. Siehe als Beispiel die Funktion ITM_ReceiveChar() im CMSIS.

Gruß
Marcus

Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank, genau das hab ich gesucht!

Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

 ich hab mit das mit dem ITM angeschaut. Das ist eigentlich das was ich 
brauche aber da gibt es Probleme mit meiner Hardware (und den Leuten die 
diese gebaut haben ;-) und zwar brauch ich um das ITM zu nutzen den 
zusätzlichen Viewer Pin SWO, dies ist aber bei mir nicht möglich. Nun 
die Frage gibt es noch eine Möglichkeit mit dem Cortex-M3 im Running 
Zustand zu kommunizieren ohne SWO und ohne den Core anhalten zu müssen 
(Breakpoint usw.) oder gibt es das einfach nicht bei diesem Cortex-M3.

Vielen Dank für eure Hilfe

Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ich habs nun selbst heraus gefunden und da ich es immer hasse wenn 
ich Beiträge ohne Lösung finde, hier die Lösung.

Läuft der Cortex-M3 mit einem Userprogramm so muss man folgendes tun um 
Daten auszutauschen. Diese Lösung benutzt kein Trace Port und auch kein 
SWO Pin.

Auf der Debugger Seite muss man nach dem der Core gestartet wurde das 
C_DEBUGEN (Bit0) im Debug Halting Control and Status Register (DHCSR) 
setzen. Und danach kann man über das Debug Core Register Data Register 
(DCRDR) Daten mit dem Core austauschen.

Auf der Coreseite muss man nix weiter machen, man kann das DCRDR 
Register sofort beschreiben und lesen.

Aber Vorsicht, ich arbeite mich gerade in den Cortex-M3 / SWD ein und 
gebe keine Garantie auf Vollständigkeit und Richtigkeit. Wäre schön wenn 
sich ein Experte nochmal dazu äußern könnte. Danke.

So Wochenende gerettet, schönen Gruß

Christoph

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hört sich doch gut an. Hast Du das alles schon ausprobiert?

> und zwar brauch ich um das ITM zu nutzen den zusätzlichen Viewer Pin
> SWO, dies ist aber bei mir nicht möglich.

Au weia. Hoffentlich gab es gute Gründe dafür. SWO ist ja auch für 
andere Dinge äußerst nützlich.

Viel Spaß
Marcus

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In diesem Zusammenhang mglw. nützlich:
http://repo.or.cz/w/openocd.git/tree/master:/contrib/libdcc
(ist im Grund eine Implementierung der im Beitrag 24.09.2010 15:09 
beschriebenen Vorgehensweise)

Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marcus, Hallo Martin,

Marcus Harnisch schrieb:
> Hört sich doch gut an. Hast Du das alles schon ausprobiert?

Ja hab ich schon ausprobiert, nur noch kleine Probleme mit dem 
Handshake. Hab erstmal Bit31 und Bit30 des Daten Registers dafür 
mißbraucht.. :-)

>> und zwar brauch ich um das ITM zu nutzen den zusätzlichen Viewer Pin
>> SWO, dies ist aber bei mir nicht möglich.
>
> Au weia. Hoffentlich gab es gute Gründe dafür. SWO ist ja auch für
> andere Dinge äußerst nützlich.

Ja das geht nicht anders ein weiters no go für die hardware ist das swo 
asynchron zu tck ist, oder hab ich das falsch verstanden?

Martin Thomas schrieb:
> In diesem Zusammenhang mglw. nützlich:
> http://repo.or.cz/w/openocd.git/tree/master:/contrib/libdcc
> (ist im Grund eine Implementierung der im Beitrag 24.09.2010 15:09
> beschriebenen Vorgehensweise)

Das muss ich gleich mal anschauen, vielen dank.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Loohß schrieb:
> Ja das geht nicht anders ein weiters no go für die hardware ist das swo
> asynchron zu tck ist, oder hab ich das falsch verstanden?

Wessen HW? Des Debug Adapters oder Deines Boards? Warum?  Erzähl doch
mal über Dein System. Warum sind das alles so harte Einschränkungen?

SWV ist ein serielles interface, dessen Arbeitstakt sowohl intern
(asynchron zu TCK) als auch extern erzeugt werden kann, soweit
letzteres in einem µC implementiert wurde.

Wegen Deiner Lösung mit dem DCRDR: Je nachdem wieviel Kontrolle Du
über das System hast, kann es passieren (eigene Erfahrung), dass die
manuelle Nutzung der Debug Resourcen sich mit der Nutzung durch das
Debug Tool überschneidet.

Gruß
Marcus

Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marcus,

Marcus Harnisch schrieb:
> Wessen HW? Des Debug Adapters oder Deines Boards? Warum?  Erzähl doch
> mal über Dein System. Warum sind das alles so harte Einschränkungen?
Die Hardware ist ein Boundary Scan System der Firma GÖPEL electronic und 
wir nutzen die Debugschnittstellen der diversen Prozessoren um diese 
trotz fehlendem Boundary Scan mit in den Test zu integrieren. 
(Verbindungstests, Firmware programmiern, Funktionstests)

> Wegen Deiner Lösung mit dem DCRDR: Je nachdem wieviel Kontrolle Du
> über das System hast, kann es passieren (eigene Erfahrung), dass die
> manuelle Nutzung der Debug Resourcen sich mit der Nutzung durch das
> Debug Tool überschneidet.
Da kein Debug Tool da ist und ich die Schnittstelle für mich alleine 
habe sollte das kein Problem sein.

Grüße,

Christoph

Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

 irgendwie kann man den Text nicht nochmal bearbeiten.. dann halt noch 
nen Nachtrag.

Diese Einschränkungen sind nur wegen der frühen Entwicklungsphase. 
Später soll das System auch alle Funktionen des jeweiligen Interfaces 
(JTAG (schon vorhanden), BDM, SWD, usw.) können. Aber man muss ein 
Interface erstmal kennen um zu sagen was es braucht. Ich finde es auch 
besser wenn man nur wenig Daten (Statuswerte) überträgt, das die Lösung 
nur mit SWDIO und SCK auskommt. Ein Nadel weniger im Testadapter :-)

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Loohß schrieb:
> Die Hardware ist ein Boundary Scan System der Firma GÖPEL electronic und
> wir nutzen die Debugschnittstellen der diversen Prozessoren um diese
> trotz fehlendem Boundary Scan mit in den Test zu integrieren.

Das erklärt natürlich einiges. Die meisten Daten sollten sich doch über 
direkten Speicherzugriff austauschen lassen, oder?

Viel Erfolg
Marcus

Autor: Christoph Loohß (chrlo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das erklärt natürlich einiges. Die meisten Daten sollten sich doch über
> direkten Speicherzugriff austauschen lassen, oder?

Ja, so gehts einfach am schnellsten, einfach adresse und increment bit 
setzen und danach die daten. Danke für die Tips, ist so fast fertig nur 
noch ein wenig optimieren.

Grüße,

Christoph

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.