Forum: Mikrocontroller und Digitale Elektronik Registerzugriff


von Reiner K. (Gast)


Lesenswert?

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!

von Oliver J. (skriptkiddy)


Lesenswert?

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

von Dr. Sommer (Gast)


Lesenswert?

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

von Oliver J. (skriptkiddy)


Lesenswert?

Dr. Sommer schrieb:
> Beim AVR gibts das.

Stimmt.

von Lothar (Gast)


Lesenswert?

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

von Reiner K. (Gast)


Lesenswert?

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

von Reiner K. (Gast)


Lesenswert?

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

von Lothar (Gast)


Lesenswert?

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

von Reiner K. (Gast)


Lesenswert?

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ß...

von Lothar (Gast)


Lesenswert?

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

von Dr. Sommer (Gast)


Lesenswert?

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?!

von Reiner K. (Gast)


Lesenswert?

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