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
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?
Thomas S. schrieb: > Wo stellt man das ein? Du könntest gezielt nach dem String 57344 suchen.
:
Bearbeitet durch User
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.
Dort scheint es zu stimmen, 0x1000 == 4KB. Die Prozentangabe kommt höchstwahrscheinlich aus dem "avr-size" Tool. Eventuell stimmt auch dessen Aufruf nicht.
Thomas S. schrieb: > <address-space name="data" id="data" start="0x0000" size="0x3000" > endianness="little"> Da steht noch ein size="0x3000"
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...
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.
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.