Hallo. Ich benutze CodeSourcery (ARM7) und möchte einen Wert der in CStartup.S definiert wurde, innerhalb einer C Prozedur benutzen. Wie kann man den bitte vom C Code aus auf eine Konstante innerhalb von CStartup.S zugreifen? z.B: In CStartup.S ... .org 0x1FC read_protection: .word 0x11111111 .... und dann im C Code ... extern const long read_protection; ... ui_protected = (int)read_protection; // irgendwie so halt !!?? .... Derzeit bekomme ich immer "undefined reference ..." Kann jemand helfen ? Danke. Gruss
Oh. Schwer. Das wirst du in Assembler machen müssen:
1 | LDR r0, =read_protection |
2 | LDR r0, [r0] |
On a second thought: Das Label müsste man (im s-File) global deklarieren:
1 | global read_protection |
Und dann müsste man in C darauf zugreifen können:
1 | extern uint32_t * read_protection; |
2 | ui_protected = *read_protection; |
Du musst auf jeden Fall Pointer verwenden und keine long/ints.
Super, hat geklappt , danke sehr. Hätte ich fast selber drauf kommen können (müssen). Mit Pointer geht es aber nicht . Habe es schon kurz verifiziert. Genau muss es also heissen in CStartup.S .globale read_protection der Rest dann wie anfangs beschreiben. Danke nochmals.
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.