umstieg von ATmega162 auf ATmega64

Gast #75413
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
Gast #75414
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?
Gast #75415
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.