AVR Studio 5: Variablen in I/O Bereich abgelegt

Gast #2343264
Lesenswert?

Hi,

Ich habe das AVR Studio 5.0.1163 installiert und will ein C-Programm für 
einen ATMega324A erstellen.
Jedoch wollte der Code nicht so recht laufen. Beim Debuggen fiel auf, 
dass Variablen lustig Werte wechselten oder direkt nach einer Zeile mit 
Zuweisung den zugewiesenen Wert nicht annahmen.
Ein Blick auf die Variablenadressen und den disassemblierten Code 
zeigte, dass alle Variablen ab Adresse 0x0060 abgelegt wurden. Laut 
Datasheet liegt dort jedoch der Bereich der erweiterten I/O-Register. 
Erklärt so weit die Probleme.
Wie mache ich dem AVR Studio, bzw. GCC nun aber klar, dass er die 
Variablen gefälligst in den SRAM packen soll? Andere Ideen?

Das betreffende Projekt war ursprünglich mit AVR Studio 4 erstellt (lief 
dort ohne Probleme) und wurde im AVR Studio 5 importiert. Ich habe den 
korrekten µC eingestellt...
Gast #2343302
Lesenswert?

Hm, mal sehen... Die Kommandozeilen sind:
1
avr-gcc -funsigned-char -funsigned-bitfields -DF_CPU=8000000UL  -Os -fpack-struct -fshort-enums -Wall -c -gdwarf-2 -std=gnu99 -v  -mmcu=atmega324a 
2

3
avr-gcc -v  -mmcu=atmega324a -Wl,-section-start=RAM=0x800100
Wie man sieht, habe ich auch schon versucht, mit memory sections zu 
experimentieren. Hat augenscheinlich aber genau gar nichts bewirkt.

Die Ausgabe beim Compilieren habe ich angehängt.
Angehängte Dateien:
Moderator Persönliche Seite #2343617
Lesenswert?

Da ist in der Toolchain was versaut.  Bei dir:
1
... collect2.exe -m avr5 -o LED_ctrl.elf ...

Bei mir:
1
... collect2 -m avr5 -Tdata 0x800100 -o foo.elf ...

Das -Tdata 0x800100 fehlt bei deiner Toolchain.

> Wie man sieht, habe ich auch schon versucht, mit memory sections zu
> experimentieren. Hat augenscheinlich aber genau gar nichts bewirkt.

Ja, weil die section nicht "RAM" heißt, sondern ".data".  Damit
dürfte es auch bei dir gehen.

Schreib' das mal an support -ät- atmel -punkt- com.  Vielleicht
haben sie ja eine neuere Version der Toolchain für dich, die diesen
Bug schon behoben hat.
Gast #2620603
Lesenswert?

Hallo Helfer,
Ich habe eine Double Variable und ein Array mit der laenge 2
deklariert. Beim debuggen viel auf , dass die Beiden sich eine 
speicheradresse teilen.
Hat dieses Problem noch jemand?
Danke Mobifu , Avr Studio 5

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren