Forum: PC-Programmierung Sprung auf Startadresse


von Heinz (Gast)


Lesenswert?

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

von Volker Z. (vza)


Lesenswert?

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 ?

von Heinz (Gast)


Lesenswert?

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=?

von ArthurDent (Gast)


Lesenswert?

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);
}

von ArthurDent (Gast)


Lesenswert?

Vielleicht auch etwas in der Art:

asm("JMP 0x0000");

ARM kenne ich nicht besonders, der JMP Befehl koennte auch anders 
heissen.

von Volker Z. (vza)


Lesenswert?

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
Noch kein Account? Hier anmelden.