Hallo Zusammen, ich muß auf ein Status-Register eines RM48 von TI zugreifen und verwende den CodeComposer - wie kann ich das Register in C adressieren? Oder wie finde ich zumindest die Adresse heraus, die ich als C-Pointer verwenden kann und so auf das Register zugreifen? Bin für jeden Tip dankbar!
Reiner K. schrieb: > Oder wie > finde ich zumindest die Adresse heraus, die ich als C-Pointer verwenden > kann und so auf das Register zugreifen? Bin für jeden Tip dankbar! Üblicherweise gibt es zum Lesen und Schreiben von CPU-Registern Befehle im Befehlssatz des jeweiligen Prozessors. In den Speicher gemappte CPU-Register hab ich noch nie gesehen. Grüße Oliver
Oliver J. schrieb: > In den Speicher gemappte CPU-Register hab ich noch nie gesehen. Beim AVR gibts das. Dort ist das Status-Register in den I/O-Adress-Space gemappt, und die General Purpose Register in den RAM-Adress-Space (Adressen 0-31 wimre).
Reiner K. schrieb: > RM48 Was für ein Status-Register? Der CPU? Ist ein ARM R4: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0363g/I2837.html In Assembler mit MSR und in C vermutlich __msr
In diesem Fall geht es um das "System Status Flag", welches Reset-Informationen enthält. Vielen Dank schon mal für die Antworten! Ich schau mal unter der angegebenen Adresse, ob ich das etwas Brauchbares finde...
Leider war das Gesuchte nicht dabei. Falls die Register in den normalen Adressraum gemapt sind, bräuchte ich zumindest eine Tabelle, die zeigt welches Registe genau welche Adresse hat oder ich benötige eine vordefinierte (Funktions-)Bibliothek für den Codecomposer von TI - und zwar für den RM48-Prozessor! Die allgemeinen Ausführungen zu Cortex-M von ARM sind zwar auch sehr interessant, aber leider wenig hilfreich...
Reiner K. schrieb: > System Status Flag Finde ich nicht. Ist aber in jedem Fall kein Core-Register sondern von TI selber. Wenn es im Manual stehen würde, könnte man es so ansprechen wie z.B. Global Status Register #define GLBSTAT 0xFFFFFFEC *((unsigned long *) GLBSTAT) |= 1<<(0); // Bit 0 setzen
Lothar schrieb: > Reiner K. schrieb: >> System Status Flag > > Finde ich nicht. Die Registerbezeichnung hab' ich in dem TI-Dokument "spns174a" auf Seite 59 gefunden... >Ist aber in jedem Fall kein Core-Register sondern von > TI selber. Wenn es im Manual stehen würde, könnte man es so ansprechen > wie z.B. Global Status Register > > #define GLBSTAT 0xFFFFFFEC > > *((unsigned long *) GLBSTAT) |= 1<<(0); // Bit 0 setzen Ganau da hab' ich das Problem! So wie oben vorgeschlagen könnte ich's mir auch vorstellen, aber ich bräuchte eben die Adresse für das #define und ganau da hapert's! Wo finde ich die bloß...
Reiner K. schrieb: > Die Registerbezeichnung hab' ich in dem TI-Dokument "spns174a" auf Seite > 59 gefunden... Ich sehe da nur Kapitel "4.4 Warm Reset": Power-Up Reset Exception Status Register, bit 15 usw. Und diese Adresse ist in der Liste ...
Lothar schrieb: > #define GLBSTAT 0xFFFFFFEC > > *((unsigned long *) GLBSTAT) |= 1<<(0); // Bit 0 setzen Aber dann doch nicht soo... Wenn schon so:
1 | static volatile uint32_t& GLBSTAT = *reinterpret_cast<volatile uint32_t*> (0xFFFFFFEC); |
Und wenn es unbedingt C sein muss:
1 | #define GLBSTAT (*((volatile uint32_t*) 0xFFFFFFEC))
|
Reiner K. schrieb: > In diesem Fall geht es um das "System Status Flag", welches > Reset-Informationen enthält. Fangen wir doch mal da an, woher hast du denn die Information her dasss dieses Flag existiert?!
Lothar schrieb: > Reiner K. schrieb: >> Die Registerbezeichnung hab' ich in dem TI-Dokument "spns174a" auf Seite >> 59 gefunden... > > Ich sehe da nur Kapitel "4.4 Warm Reset": Power-Up Reset Exception > Status Register, bit 15 usw. > > Und diese Adresse ist in der Liste ... Möglicherweise hab' ich da etwas falsch verstanden. Ich dachte die Überschrift in der Tabelle 4-5 "SYSTEM STATUS FLAG" sei ein CPU-Register! Aber das scheint nicht der Fall zu sein. In der Tat hab' ich im Dok "spnu503b" auf Seite 118 eine Zuordnungstabelle zwischen Adressen und Registern gefunden! Ich denke auf diese Liste beziehst Du Dich auch, oder? Damit hätte ich dann mein Problem wohl gelöst! Vielen Dank für Deine Unterstützung!
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.