www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Adressierung des internen SRAM


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Ingo G. (ingo12)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

ich habe gerade mit einem Programm für einen ATmega8 zu tun, an dem ein 
paar kleine Modifikationen vorgenommen werden müssen. Dummerweise habe 
ich nur das Hex-Dump, muß mich mit dem Disassembler durch den Code 
wursteln. Das geht soweit auch, sieht weitestgehend logisch aus, nur an 
einer Stelle verstehe ich die Welt nicht mehr: Der Stackpointer wird im 
Programm auf die Adresse 4FFH initialisiert. Meines Wissens nach geht 
der SRAM des ATmega8 aber nur von 060H bis 45FH. Der Stack zeigt also in 
einen leeren Bereich. Im Simulator schmiert das Programm auch pünktlich 
am ersten RET-Befehl ab, da vom Stack nur Null zurückkommt. Dummerweise 
läuft die Software im echten System!!
Ist die Addressierung des ATMega8 vieleicht nicht vollständig aufgelöst 
und führt so zu Echos des SRAM im Adressbereich? Kennt jemand einen 
solchen Effekt? Gibt es vieleicht spezielle Varianten des m8 mit mehr 
SRAM?

vielen Dank

Ingo

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ingo G. schrieb:
> Kennt jemand einen solchen Effekt?
Na klar.
Wenn man einen Code hat, der nicht für den Atmega8 compiliert ist.
SP auf 0x4ff deutet auf Atmega88 hin. RAM von 0x100 - 0x4ff.

mfg.

Autor: spess53 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hi

>Der Stackpointer wird im
>Programm auf die Adresse 4FFH initialisiert. Meines Wissens nach geht
>der SRAM des ATmega8 aber nur von 060H bis 45FH.

Bist du sicher, das das Programm nicht für einen ATMega88 ist?

MfG Spess

Autor: Ingo G. (ingo12)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

danke für die schnellen Antworten.

wenn der mega8 und der mega88 eine unterschiedliche Device-Signatur beim 
auslesen haben, dann ist es definitiv ein m8, aber ich werde heute abend 
noch mal genau schauen.

Gruß

Ingo

Autor: Ingo G. (ingo12)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

ich habe den Chip nochmal angeschaut - es ist ein ATmega8 16AU. Ich gebe 
zu, die Software sieht aus wie für einen ATmega88. In der von mir 
untersuchten Applikation steckt das Programm definitiv in einem ATmega8 
und funktioniert - obwohl es das eigentlich nicht dürfte. Also zur 
Erläuterung, nicht ich habe die Software da reingesteckt, das war der 
fernöstliche Hersteller des Gerätes.

MfG

Ingo

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Möglicherweise wird das RAM beim Adressieren einfach gespiegelt, d.h. 
die Adressen modulo 0x400 genommen.

0x4ff entspäche dann 0xff, weil der RAM bei 0x60 beginnt, bleiben dann 
0x9f = 159 bytes für den Stack.

Gibt es LDS/STS im Programm? Und sind die Adressen alle > 0xff?

Gibt es Compiler mit so einem RAM-Layout?

Anhand des Disassemblies sollte sich auch rausfinden lassen, welcher 
Compiler (falls überhaupt) am Werk war. Zumindest könnte ich ziemlich 
sicher sagen, ob es avr-gcc war oder nicht.

Autor: MWS (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Auf welche Adresse zeigt der Resetvektor ?

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net