mikrocontroller.net

Forum: Compiler & IDEs AVR Studio und externes RAM


Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich verwende einen atmega128 mit 32kb externen ram. weis jemand wie ich 
im AVR Studio unter Memory Settings die Einstellungen setzen muss um den 
auch zu verwenden? Ich hab mal bei Adresse 0x1000 reinbgeschrieben, da 
fängtmein ext RAM auch an, oder?

Wenn er fertig mit compilieren ist sagt er mir aber immer noch das 
programm braucht gleich viel RAM wie ohne externen RAM. Hab ich da was 
vergessen einzustellen?


Vielen Dank für die Hilfe

Gruß

Philipp

Autor: Sauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend,

Philipp Putzer schrieb:
> Wenn er fertig mit compilieren ist sagt er mir aber immer noch das
> programm braucht gleich viel RAM wie ohne externen RAM. Hab ich da was
> vergessen einzustellen?

nein, warum soll das Programm mehr Speicher brauchen :-)
avr-size berücksichtigt (zeigt ihn nicht an) den dazubekommenen Speicher 
nicht!

schau mal hier nach:
"Beitrag "48KB SDRam für gcc auf xplain"
da hatte Ich mal die Linker-Optionen für externes Ram beschrieben.


MfG

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, das mit "brauch immer noch gleich viel RAM" stimmt so nicht ganz. 
ALso das Studio sagt er braucht gleich viel % RAM wie ohne externen RAM. 
Aber ich stell die Größe ja nirgends ein, deswegen bleibt die Anzeige 
auch immer gleich

Autor: Sauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Philipp Putzer schrieb:
> Aber ich stell die Größe ja nirgends ein...

So ist es. avr-size kennt nur das Device (aus den Partdescriptionfiles 
im Pfad von AVR-Studio) und nicht das was außen angebaut wurde.

MfG

Autor: Andreas Paulin (Firma: PAN Microsysteme) (paulin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe mal ein Projekt mit extern 64kRAM gemacht. Ignorier die 'memory 
options' in den Studio-Options ganz. In den 'Custom options' musst du in 
den [Linker options] am Ende der Dateiliste als Linkeroption

-Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80FFFF

angeben. Halt, das ist für 64K. Bei 32K ist __heap_end kleiner:

-Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x808FFF

Die Symbole __heap_start und __heap end benutzen Compiler und Linker um 
zu wissen, wieviel Speicher zur Verfügung steht.

Außerdem musst Du noch das externe RAM aktivieren. Z.b. so:

void XRAMInit(void)
{
MCUCR |= (1<<SRE);  // XRAM einschalten
XMCRB |= (1<<XMBK);     // Buskeeper einschalten, sonst tristate
}
Weitere Info über Speicherverwaltung etc:
http://www.nongnu.org/avr-libc/user-manual/malloc.html

Da gibts Info satt. auch eben über __heap_start etc.
Hat mir seinerzeit sehr geholfen :)

Gruß

Andi

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super, das werd ich am montag gleich mal ausprobieren,

vielen dank

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.