Registerzugriff

Gast #3533499
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!
Gast #3533627
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...
Gast #3533685
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...
Gast #3533688
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
Gast #3533732
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ß...
Gast #3533745
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?!
Gast #3533747
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren