LPC2378 Code aus Ram ausführen

OP #607301
Lesenswert?
• ▲
▼
Hallo.
Ich habe ein MCB2370 Board mit einem LPC2378.


Ich hab nun ein programm im flash, welches programmcode über usb 
nachladen kann. Der nachgeladene code wird in eine variable geschrieben, 
die sich im static ram befindet.

Der flashspeicher hat die adressen von 0x0000 0000 bis 0x0007 FFFF
Wenn ich mir da mit hilfe des debuggers die adresse der main funktion 
raussuche und den PC (program counter) auf diese adresse setze, wird 
auch brav die main funktion wieder ausgeführt. Wollt nur mal testen ob 
ich den PC richtig setze.

Nun möchte ich aber wie gesagt, den PC auf den programmcode in der 
variable zeigen lassen.
Diese variable befindet sich aber in 0x4000 0000 im 32 kB LOCAL ON-CHIP 
STATIC RAM. und wenn ich den Pc auf diese adresse setze, bekomme ich

*** error 65: access violation at 0x40000000 : no 'execute/read' 
permission

Es gibt doch auch möglichkeiten mit Keil und co. das programm nicht ins 
flash sondern gleich in den ram zu laden, wie machen die das denn?
Wie kriegen die denn zugriff auf den Ram mit dem PC?
Und wie kann ich das selber machen?

Ich wäre für tips dankbar.
OP #608330
Lesenswert?
• ▲
▼
Ok, also soll das problem nur im debug modus auftreten. Das stört ja 
jetzt erstmal nicht so. Aber es funktioniert auch nicht auf der 
hardware.

Ich hab mir eigentlich gedacht, ich könnte ein mit uvision erzeugtes Hex 
file in den ram laden und den PC auf den ersten befehl setzen.
Die frage ist nur, in welcher form muss das programm in den ram 
geschrieben werden. Der tolle debugger mit uvision und ulink adapter 
funktioniert ja so spitze (ironie).
OP #608679
Lesenswert?
• ▲
▼
Nein, da wird vermutlich auch der fehler liegen.
Die frage ist, was muss ich bei uvision einstellen, damit mein programm 
aus dem ram laufen kann?
Ich arbeite mit dem ULINK USB-JTAG Adapter und ich sehe da keine 
möglichkeit das einzustellen. Auch auf der keil seite zu dem produkt 
lese ich nichts von dieser fähigkeit.
Gast #609023
Lesenswert?
• ▲
▼
Wenn du nur ein fertiges, sprich unabänderbares HEX-File hast,
welches an bestimmte (Flash-)Adresse(n) gelinkt ist, dann wird
das nicht funktionieren. Hat nichts mit Keil oder Ulink zu tun.

Wenn du dieses Programm jedoch selbst "in der Hand" hast, dann
mußt du dem Linker (per Dialog oder Scatterfile) sagen, dass er
dein Programm nach >=0x40000000 (also in den RAM-Bereich beim LPC)
linken soll.

Klar?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.