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
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
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
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
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
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)
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.
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
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
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 :-)
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
> 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
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.