www.mikrocontroller.net

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


Autor: Detlev (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
place in RAM_region   { readonly };
place in RAM_region   { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
                        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:
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

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo detlev,
einfach mal in eines der vielen beispiele reingucken.

gruss
gerhard

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.