Forum: Mikrocontroller und Digitale Elektronik LPC2378 Code aus Ram ausführen


von Mario X. (grinderfx)


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.

von ARM-Fan (Gast)


Lesenswert?


von ARM-Fan (Gast)


Lesenswert?


von Mario X. (grinderfx)


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).

von ARM-Fan (Gast)


Lesenswert?

>Der tolle debugger mit uvision und ulink adapter
>funktioniert ja so spitze (ironie).

Tut er auch - (ohne Ironie)

Ist denn dein Programm (Hex-File) auch fürs RAM gelinkt?

von Mario X. (grinderfx)


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.

von ARM-Fan (Gast)


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?

von Mario X. (grinderfx)


Lesenswert?

Das ist mir schon klar, nur finde ich keine möglichkeit sowas bei 
uvision einzustellen.

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.