hi zusammen, ich habe folgendes Problem. Ich verwende einen ARM7 und coden unter C. Allerdings es es jetzt notwendig, dass ich an einer bestimmten stelle im Code an die Startadresse meines Programmes springe, also an Adresse 0x0000. Wie kann ich das codemässig realisieren, ohne ein tötliches goto einzubauen? Besten Dank
Hallo wieso tödlich? Für genau diese Fälle giebt es das GOTO. Aber bitte anständig Kommentieren. Ansonsten verwende ainen Software-Reset. Hat der ARM7 so etwas ?
hallo, ich verwende bereits einen Reset der den Prozessor zurücksetzt, allerdings beim debuggen stürzt mir dann alles ab eben weil er den Prozessor zurück setzt. Später ist das okay, jedoch jetzt beim debuggen reicht es wenn ich an die Stelle springe. Wie geht es ohne GOTO? Pointer auf Adresse 0x0000=?
So habe ichs mal in alten Sourcen gesehen :-) typedef unsigned char (*pt2Function) (unsigned long, unsigned short *); unsigned long *ptr; pt2Function fp; // function pointer used to call target void call_function(void) { ptr = (unsigned long *) 0x00000000; fp = (pt2Function) * ptr; fp(0, 0); }
Vielleicht auch etwas in der Art: asm("JMP 0x0000"); ARM kenne ich nicht besonders, der JMP Befehl koennte auch anders heissen.
1 | #ifdef DEBUG
|
2 | void (*reset)(void)=0; |
3 | #else
|
4 | void reset(void) |
5 | {
|
6 | /* your Software Reset Code */
|
7 | }
|
8 | #endif
|
9 | |
10 | void foo(void) |
11 | {
|
12 | reset(); |
13 | }
|
so würde ich das machen.
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.