mikrocontroller.net

Forum: Compiler & IDEs umstieg von ATmega162 auf ATmega64


Autor: Martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, wer kann mir denn mal auf die Sprünge helfen:

ich habe ein Projekt erfolgreich mit GCC und einem ATmega162
abgeschlossen.

jetzt möchte ich auf ATmega64 umsteigen. Dazu ändere ich doch lediglich
den Compiler/linkeraufruf auf die neue CPU um, oder???


vorher (ATmega162):
avr-gcc -g -Wall -O2 -mmcu=atmega162 -c -o ..\O\main.o main.c

avr-cc ..\O\main.o -Wl,-Map=..\M\reader.map, -o ..\M\reader.elf
--cref -mmcu=atmega162

avr-objcopy --debugging -O coff-avr --change-section-address
.data-0x800000 --change-section-address .bss-0x800000
--change-section-address .noinit-0x800000 --change-section-address
.eeprom-0x810000 ..\M\reader.elf reader.cof




Nachher (ATmega64):
avr-gcc -g -Wall -O2 -mmcu=atmega64 -c -o ..\O\main.o main.c

avr-cc ..\O\main.o -Wl,-Map=..\M\reader.map, -o ..\M\reader.elf
--cref -mmcu=atmega64

avr-objcopy --debugging -O coff-avr --change-section-address
.data-0x800000 --change-section-address .bss-0x800000
--change-section-address .noinit-0x800000 --change-section-address
.eeprom-0x810000 ..\M\reader.elf reader.cof



Der Effekt ist jetzt der, dass alles fehlerfrei übersetzt wird, alles
schön ins studio geladen wird, ich auch schön überall durchsteppen
kann.

ABER:::
die CPU kommt nicht mehr aus Unterprogrammen zurück, der Ret-Befehl
springt stets nach 0x0000


WAS KANN DAS SEIN???  muss ich bei der Konvertierung nach COFF noch was
ändern?

Gruß Martin

Autor: Martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

in der Spec lese ich, dass der ATmega64 zwei Memory Configurations
"A" und "B" kann.

in "A" geht der interne SRam von 0x0100..0x10FF
in "B" geht der interne SRam von 0x0060..0x0FFF

laut Studio wird mein SP in der Startup-Routine auf 10FF initialisiert
und wandert mit jedem UP-Aufruf herunter auf 10FD, 10FB, 10F9 etc. Das
heiss dass der Compiler von der "B"-Konfiguration ausgeht.

wenn ich aber im Studio von Hand die SRAM-Zellen ändern möchte, so
gelingt mir das nur im Bereich bis 0FFF, nicht aber im Bereich
1000...10FF, d.h. das riecht wiederum nach Configuration "A".

was mache ich falsch?

Autor: Martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so nun hab ichs sogar selber gefunden:

aus irgendeinem Grunde war die Fuse

"ATmega 103 Compatibility mode" gesetzt.


Fuse gelöscht - Speicher geht bis 10FF SW läuft - Compiler ist
rehabilitiert - hätte ich auch nicht anders erwartet!


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.