Hallo, wie kann ich in C zu einer bestimmten Speicherstelle im Memory springen?
1 | void test(void) |
2 | {
|
3 | //führe code aus....
|
4 | |
5 | //-> sprung zu einer neuen Speicherstelle
|
6 | "jump 0x20000000;"
|
7 | return 0; |
8 | |
9 | }
|
Gruß Bernd
|
Forum: Mikrocontroller und Digitale Elektronik jump zu best. Memory-AdresseHallo, wie kann ich in C zu einer bestimmten Speicherstelle im Memory springen?
Gruß Bernd Auf nem PC?? AVR / ?? avr kann z.b. asm("rjmp 0xFFAA"); resp asm("jmp 0xFFAA"); bei den größeren Versionen... Aber ob das nicht kuddelmuddel gibt.... Gab es in C nicht auch ein "goto"?? auf einem ARM von Atmel soll der Programmcode laufen. goto bringt mir nichts, da der Sprung zu einer Speicherstelle im Memory / Flash verweisen soll. Gruß Bernd Versuche mal, ob diese Notation zulässig ist: asm(jmp Bootloader); Wobei "Bootloader" eine C-Funktion ist. Muss diese unbedingt an einer fixen Adresse liegen? Das musst Du dem Linker mitteilen. Nebenbei: return 0; Wenn der Funktionwert void ist, wird in der Regel nichts returned. eProfi wrote: > Versuche mal, ob diese Notation zulässig ist: > asm(jmp Bootloader); Das geht so sowieso nicht. Da müssten noch Anführungsstriche drumherum. Dann hast du das Problem, dass zum Assemblerzeitpunkt "Bootloader" nicht bekannt ist. > Wobei "Bootloader" eine C-Funktion ist. > Muss diese unbedingt an einer fixen Adresse liegen? > Das musst Du dem Linker mitteilen. Ich kann da nen Trick. Der geht in etwa so:
Ganz ohne Assembler! :O Hallo folgenden Funktionspointer habe ich hier im Forum gefunden. Ich denke damit sollte es funktionieren.
Gruß Bernd 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.
|
|