mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Keil ; ARM; LPC; PC Program Counter setzen


Autor: Christoph F. (christoph1973)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich möchte von einem Bootloader aus, mein Programm an einer definierten 
Hardwareadresse weiterlaufen lassen.
Das Applikationsprogramm ist auf eine feste Adresse verlinkt (0x2000).
Welches ist die sauberste Möglichkeit eine solche Aktion durchzuführen 
(und wie funktioniert sie?)

Mit void Funktionszeiger und dem Assembler mov Befehl habe ich bereits 
"rumgespielt" habe aber den gewünschten Effekt nicht hinbekommen.

Gibt es vielleicht einen GOTO Befehl?

Bin um jeden Tip dankbar

Grüße
Christoph

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hast du denn alles schon probiert?

Ist eines der beiden beteiligten Programme als Thumb-Code geschrieben?

Autor: Christoph F. (christoph1973)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
es handelt sich momentan um eine einzige Projektdatei (komplett in C).
Ich habe lediglich zwei Funtionsteile voneinander gekapselt (der spätere 
Bootloader liegt in den ersten beiden Sektoren 0x0000 - 0x2000 und die 
Applikationssoftware liegt ab Adresse 0x2000).
Ich will die Programme erst später auftrennen, aber auch dann muss ich 
vom Flashbooter auf eine definierte Adresse (in meinem Fall 0x2000) 
springen.

Zu deiner Frage zwecks Thumb Code betreffend muss ich leider sagen dass 
ich mich damit überhaupt noch keine Erfahrung habe ;-( (werde es aber 
gleichmal googeln)

Wie gesagt eigentlich will ich lediglich dem µC sagen dass er von nun an 
an einer bestimmten Adresse "weitermachen" soll.

Gruß
Christoph

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naheliegend:
  typedef void (*fcn_ptr)(void);
  fcn_ptr application = (fcn_ptr)0x2000;
  application();

Autor: Christoph F. (christoph1973)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
super, vielen vielen Dank
so funktioniert es.

Viele Grüße
Christoph


Ps. Da muss ich irgendein anderer Fehler gemacht haben, zumindest dachte 
ich dass ich es genau so schon probiert habe (In der Applilkation Note 
AN10256 von NXP wird es nämlich auch so vorgeschlagen.)

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.