Auslastung des RAM vom LPC2119

OP #1309220
Hallo miteinander,

ich würde gerne die Speicherauslastung meines LPC2119 hinsichtlich RAM 
kontrollieren, damit ich weiß wieviel davon noch frei ist... Als IDE 
verwende ich µVision3 von Keil und die JTAG Schnittstelle des 
Controllers....

Weiß zufällig jemand von euch, ob es da eine Möglichkeit gibt?

Schöne Grüße
#1309600
Hallo Christian,

die Speicherauslastung siehst Du in erster Linie am Linker Output, oder 
Map-File oder wie immer man es nennt. Das listet den Speicherbedarf 
aller Programme. Dazu kommt dann noch der Bedarf des Stack und das ist 
es dann im grossen und ganzen.

Falls das etwas kompliziert aussieht, koennte ein kleiner 
selbstgemachter Test so aussehen:
In der Initialisierung schreibst Du ein Patternmuster in den Speicher 
bevor Deine Nutzdaten reinkommen, also z.B. 0x5555 ueberall 
reinschreiben, dann er die eigentliche Speicherinitialisierung.
Nachdem Dein Programm eine weile gelaufen ist kannst Du Dir mit einem 
Debugger Speicherbereiche anschauen, also z.B. mit uVision und ULink. 
Dort wo nach wie vor die 0x5555 drin steht wurde das RAM nicht benuetzt.
Wichtig! Normalerweisse werden im Testbetrieb nicht alle Moeglichkeiten 
des Programmes genuetzt, daher ist ein solcher Test nur eine Indikation 
ueber der Speicherbedarf, nicht der absolute Wert.

Vielleicht hilfts ja.

Moeglichkeiten wie in frueheren Bondout Emulatoren Triggerpunkte auf 
Speicherzugriffe mit Adressgrenzen einzugeben gibt es in dieser Art bei 
einem regulaeren JTAG meines Wissens nicht.

Robert
Persönliche Seite #1309890
Robert Teufel schrieb:
> die Speicherauslastung siehst Du in erster Linie am Linker Output, oder
> Map-File oder wie immer man es nennt. Das listet den Speicherbedarf
> aller Programme. Dazu kommt dann noch der Bedarf des Stack und das ist
> es dann im grossen und ganzen.

Der Heap könnte ggf. noch dazu kommen. Und falls Du Speicherstellen 
direkt per Adresse ansprichst (yuck!) wird das vom Linker auch nicht 
gemeldet.

> Moeglichkeiten wie in frueheren Bondout Emulatoren Triggerpunkte auf
> Speicherzugriffe mit Adressgrenzen einzugeben gibt es in dieser Art bei
> einem regulaeren JTAG meines Wissens nicht.

Ähh doch. Im MDK Debugger unter Debug-> Breakpoints zu erreichen. Dort 
kann man Adressen und Zugriffsgröße, sowie Richtung (lesen/schreiben) 
angeben.

Grundsätzlich unterstützt die ARM Embedded ICE Hardware diese 
Funktionalität. Ist aber beim ARM7 ob seiner Einschränkung auf zwei 
Watchpoint units etwas begrenzt.

Gruß
Marcus
http://www.doulos.com/arm/
#1311190
@Marcus,

hast wohl nicht mehr mit Bond-Outs gearbeitet, war vor Deiner Zeit oder 
:-)
Da gab es eine Moeglichkeit zu sagen, wenn irgendein Zugriff im 
Adressbereich zwischen 0xsomething und 0xsomethingelse stattfindet bitte 
alles mitprotokollieren (Trace). Das geht meines Wissen auch im 
Simulator von MDK aber wohl kaum mit U-Link(2). Es ist mir klar, dass 
man einen Breakpoint auf eine Adressgrenze setzen kann, hilft aber eher 
wenig.

Robert
Persönliche Seite #1311378
Robert Teufel schrieb:
> hast wohl nicht mehr mit Bond-Outs gearbeitet, war vor Deiner Zeit oder
> :-)

Gearbeitet -- wohl nicht. Gesehen habe ich die Dinger allerdings noch 
:-)

Aber zum Ermitteln der RAM-Auslastung ist Trace auch etwas aufwändig. 
Das Lesen des Map files sollte bei typischen MCU Anwendungen bereits 
ausreichend sein.

Selbst wenn man den Speicher dynamisch verwendet (malloc), dann muss die 
maximale Größe des Heaps ohnehin vorher festgelegt werden. Wird diese 
Grenze überschritten gibt's einen entsprechenden Rückgabewert (den der 
OP hoffentlich auch überprüft).

Sollte ausnahmsweise die Größe des Stacks nicht statisch ermittelbar 
sein (z.B. durch Rekursion), dann hilft Dir im Allgemeinen das 
Überwachen von Speicherzugriffen jenseits des Stackbereiches. Z.B. durch 
Watchpoints, die man im MDK angeben kann.

Gruß
Marcus
http://www.doulos.com/arm/

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.