mikrocontroller.net

Forum: PC-Programmierung Sprung auf Startadresse


Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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=?

Autor: ArthurDent (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

Autor: ArthurDent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht auch etwas in der Art:

asm("JMP 0x0000");

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

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#ifdef DEBUG
void (*reset)(void)=0;
#else
void reset(void)
{
   /* your Software Reset Code */
}
#endif

void foo(void)
{
   reset();
}


so würde ich das machen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.