Hallo zusammen, ich habe probleme direkt auf die CPU register zuzugreifen. Ich nutze: register volatile uint32_t REGISTER1; um diese zu anzusprechen. Jedoch befindet sich die abgelegte Variable im normalen SRAM Bereich und nicht wo anders. Gibt es irgendwelche voreinstellungen? Vielen Dank schonmal!
Warum willst Du schlauer als der Kompiler sein? Was versprichst Du dir davon?
Andi schrieb: > ich habe probleme direkt auf die CPU register zuzugreifen. Das wundert mich nicht. So macht man das nämlich nicht.
Am besten, Du schnappst Dir ein Buch über C und machst dann weiter. Dein Code ist nämlich totaler Blödsinn...
Oberlehrer schrieb: > Am besten, Du schnappst Dir ein Buch über C und machst dann > weiter. > Dein Code ist nämlich totaler Blödsinn... Totaler Blödsinn? Der Code funktioniert wunderbar. Damit kann man auch wunderbar die CPU Register beschreiben. Hatte nur das Problem, dass der Compiler jedesmal wenn ich das Register ändere auch den Stack geändert hat (wahrscheinlich abhängig von Compiler und Version +opt) und dies bei einem Ram Test leider nicht funktioniert --> back to Assembly Uwe Bonnes schrieb: > Warum willst Du schlauer als der Kompiler sein? Was versprichst Du > dir > davon? Ramtest. Um den RAM-Inhalt nicht zu verlieren werden die CPU register als Ablage genutzt. Steel schrieb: > Andi schrieb: >> ich habe probleme direkt auf die CPU register zuzugreifen. > > Das wundert mich nicht. So macht man das nämlich nicht. Normal in Assembler.. ist mir klar. Funktioniert allerdings auch.
CMSIS, core_cmFunc.h und folgende. Da findest du, wie es gemacht wird:
1 | __STATIC_INLINE uint32_t __get_MSP(void) |
2 | {
|
3 | register uint32_t __regMainStackPointer __ASM("msp"); |
4 | return(__regMainStackPointer); |
5 | }
|
Dies ist die armcc Variante, die anderen, u.a. gcc, kommen weiter unten.
:
Bearbeitet durch User
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.