Forum: Mikrocontroller und Digitale Elektronik ARM7 / IAR EWARM: Debuggen im RAM


von Detlev (Gast)


Angehängte Dateien:

Lesenswert?

Hi Jungens (und Mädels),
ich habe mir erfolgreich eine Testversion von IAR EWARM zugelegt. Alles 
in Allem eine sehr zufrieden stellende Lösung, da das Debuggen mit einem 
USB/JTAG-Adapter hervorragend funktioniert und ausserordentlich fix ist.
So, nachdem ich mich nun ein bisschen in die IDE eingearbeitet habe, 
möchte ich nun folgendes tun:
Ich will mein Projekt so konfigurieren, dass der gesamte Programmcode im 
RAM liegt, wenn ich es als "Debug" kompiliere; bei "Release" soll es 
dann ins Flash. Also eigentlich ein Setup, das ihr alle wohl kennt und 
etwa ähnlich nutzt (denke ich mal).
Dazu habe ich jetzt aber ein paar fragen:

- was muss ich im Linkerscript (also in diesem ICF-File) schreiben, dass 
mir der Code im RAM landet? Es ist mir schon klar, dass sowas da rein 
muss:
1
place in RAM_region   { readonly };
2
place in RAM_region   { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
3
                        block UND_STACK, block ABT_STACK, block HEAP };

Allerdings gibt das Probleme mit den Interruptvektoren.
Beim Startup setze ich MEMMAP korrekt auf den Wert 2, sodass die 
Vektoren eigentlich im RAM liegen sollten. Wenn ich aber z.B. sowas 
mache:
1
swi #0

dann findet er den Vektor dennoch nicht, bzw. macht irgend einen 
völligen Murks. Was habe ich falsch gemacht?

- wäre es auch möglich, mein Programm ins externe Memory (habe extern 
512k SRAM dran) zu laden, und von dort auszuführen? Wenn es nämlich im 
Internen RAM liegt, dann bin ich an die 64 kB gebunden (so gross ist das 
RAM). Wird das Programm grösser, dann geht RAM debug nicht mehr.

Im Anhang findet ihr das Linkerscript, welches ich verwende (und was zu 
den fehlerhaften Resultaten führt).

Eins ist mir nicht klar: Wo muss ich diese Interrupt-Vektortabelle 
platzieren? An Adresse 0 oder an 0x40000000? (dort beginnt das interne 
RAM). Wenn ich sie an Adresse 0 lade, muss er ja wieder was ins Flash 
programmieren (was ja nicht Sinn der Sache ist - man [ich] debuggt doch 
im RAM, um das Flash zu schonen, nicht?

Ich hoffe ihr könnt mir weiterhelfen!

Vielen Dank

von gerhard (Gast)


Lesenswert?

hallo detlev,
einfach mal in eines der vielen beispiele reingucken.

gruss
gerhard

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.