Forum: Compiler & IDEs Studio7 RAM Prozentangabe


von Thomas S. (thomas_s72)


Lesenswert?

Hallo,
ich hab da mal ein Verständnisproblem. Projekte mit Atmegas im AS7 
zeigen mir am Ende immer eine für mich sinnvolle Angabe zur prozentualen 
Ausnutzung des RAM an, Beispiel:

Atmega328:
Program Memory Usage   :  10600 bytes   32,3 % Full
Data Memory Usage   :  437 bytes   21,3 % Full

Passt! 2K RAM, 437 Byte sind gut 20% oder so.

Nun habe ich zwei Projekte mit einem XMEGA64, da stimmt die Angabe aber 
nicht, es wird da viel zu wenoig angezeigt:

XMEGA64A3U:
Program Memory Usage   :  10126 bytes   14,5 % Full
Data Memory Usage   :  114 bytes   0,2 % Full

Bei 4K RAM sind 114 Bytes etwa 2,8%, bei einem anderen Projekt ist es 
ähnlich.

Ich hab da etwas von einer avr-mem.sh gelesen, die finde ich aber auf 
meiner FP nicht.

Das ganze ist erst mal kein Problem, ich würde es nur mal gerne 
verstehen. Kann das jemand erklären?

Danke und Gruß
Thomas

von Thomas S. (thomas_s72)


Angehängte Dateien:

Lesenswert?

Denke ich hab da was gefunden, die Einstellung fürs RAM scheint per 
Definition falsch zu sin, siehe Bild in der Anlage.
Wo stellt man das ein?

von Ingo L. (corrtexx)


Lesenswert?

Thomas S. schrieb:
> Wo stellt man das ein?
Du könntest gezielt nach dem String 57344 suchen.

: Bearbeitet durch User
von Thomas S. (thomas_s72)


Lesenswert?

Hab ich. Es gibt in
C:\Program Files 
(x86)\Atmel\Studio\7.0\packs\atmel\XMEGAA_DFP\1.0.39\atdf
einige XML Dateien für die einzelnen XMEGAS. Da hab ich gefunden dass 
für den 64er exernal memory eingetragen ist. Hab ich mal auskommentiert, 
hilft nicht. Alels ist in HEX eingetragen, die Dezimalzahl find ich 
nirgendwo.

 <address-space name="data" id="data" start="0x0000" size="0x3000" 
endianness="little">
          <memory-segment start="0x0000" size="0x1000" type="io" rw="RW" 
exec="0" name="IO"/>
          <memory-segment start="0x1000" size="0x0800" type="eeprom" 
rw="RW" exec="0" name="MAPPED_EEPROM"/>
          <memory-segment start="0x2000" size="0x1000" type="ram" 
rw="RW" exec="0" name="INTERNAL_SRAM"/>
          <!--memory-segment start="0x3000" size="0xCFFF" type="ram" 
rw="RW" exec="0" name="EXTERNAL_SRAM"/-->
        </address-space>

Aber auch das Auskommentieren zeigt das selbe Resultat. Und wenn ich die 
Bereiche mal addiere komm ich auf einen anderen Wert.

von Jim M. (turboj)


Lesenswert?

Dort scheint es zu stimmen, 0x1000 == 4KB.

Die Prozentangabe kommt höchstwahrscheinlich aus dem "avr-size" Tool. 
Eventuell stimmt auch dessen Aufruf nicht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas S. schrieb:
> <address-space name="data" id="data" start="0x0000" size="0x3000"
> endianness="little">

Da steht noch ein size="0x3000"

von Thomas S. (thomas_s72)


Lesenswert?

Aber 3 x 4096 =  12288 und nicht 57344.
Passt also auch nicht.

von void (Gast)


Lesenswert?

Thomas S. schrieb:
> Aber 3 x 4096 =  12288 und nicht 57344.
> Passt also auch nicht.

Thomas, geht das doch mal anders herum an.
57344 = 0xE000

Abzüglich interner SRAM von 0x1000 (4096) byte
  <memory-segment start="0x2000" size="0x1000" type="ram"
  rw="RW" exec="0" name="INTERNAL_SRAM"/>

-> 0xE000 - 0x1000 = 0xD000 (53248) byte

size 0xD000 - sprich von addrsse 0x0000 bis 0xCFFF.
Passt doch super zum externen SRAM:
  <!--memory-segment start="0x3000" size="0xCFFF" type="ram"
  rw="RW" exec="0" name="EXTERNAL_SRAM"/-->

Also mal diese Zeile in der XML Datei auskommentieren...

von Thomas S. (thomas_s72)


Angehängte Dateien:

Lesenswert?

Hallo,
danke für die Auführungen, aber was soll ich denn nun auskommentieren?
External RAM hab ich schon auskommentiert, siehe "!--", bei der Auswahl 
des device im Projekt haben die aber anscheinend ALLE den gleichen RAM. 
Siehe Bild im Anhang.
Auch haben nicht alle XMLs da external memory. Irgendwie wird der Wert 
für alle falsch gezogen, woher kommt das?
Das müssen dochalle anderen auch haben, ich hab das auf zwei 
unabhängigen Installationen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Vielleicht suchst Du in der richtigen Datei, aber am falschen Ort?

Hast Du mal unter c:\programdata nach derartigen Dateien gesucht?

Windows verbietet das Ablegen von Konfigurationsdateien o.ä. im 
Programme-Verzeichnis; früher stand das nur in der 
Entwicklerdokumentation, aber seit einigen Versionen wird auch aktiv 
dagegen vorgegangen und Schreibzugriffe auf Verzeichnisse unter 
"c:\Program Files" (lokalisiert: c:\Programme) entweder komplett 
verweigert oder in irgendein virtualisiertes Verzeichnis umgebogen.

Es kann daher sein, daß die Dateien zwar im Programme-Verzeichnisbaum zu 
finden sind, aber tatsächlich Kopien davon verwendet werden, die 
anderswo liegen. Das kann dann entweder für alle Benutzer des Rechners 
gemeinsam ProgramData sein, oder aber für jeden Benutzer individuell ein 
Verzeichnis im jeweiligen Benutzerprofil.

Durchsuche also mal Deine komplette Festplatte nach dieser *.xml-Datei, 
vielleicht wirst Du ja fündig ...

von Thomas S. (thomas_s72)


Lesenswert?

So, nun sehe ich klarer.
Die XML Datei heißt richtig "ATxmega64A3.atdf", für andere Typen 
entsprechend anders.
Ich hatte die Sektion für den externen RAM gestern rauskommentiert, das 
hat aber nix geändert.

Heute funktionierte es auf einmal. Der Trick ist, dass man das Studio 
neu starten muss, sonst zieht die  Änderung nicht.
Hab dann mal den 64A3U ausgewählt und das damit nachvollzogen. Die 
%-Angabe stimmte erst nach Studio Neustart.

Danke an alle die sich bemüht haben.

Gruß
Thomas

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.