www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SRAM: Programmspeicher "neu anordnen" ?


Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich hab ein Verständnissproblem, ich möchte gerne selber festlegen wo 
ein bestimmter Buffer liegen soll.

Ich hab einen ATmega128 mit externen SRAM.
Dieser beginnt bei Adresse 0x1100 soweit so gut.

Nun habe ich nen paar Sachen reseviert.

.dseg
ramCntDelayTimeW:  .Byte 1
ramCntDelayTime:  .Byte 1
ramCntDelayCnt:  .Byte 1

.org 0x1100
ramB_STREAM:    .Byte 2048

.cseg
.org 0

;--- hier nun die Einsprungadressen ---

.include "LayerA.asm"
.include "LayerB.asm"




in den Dateien LayerA und LayerB sind nun auch Variablen reserviert.
Nun werden die aber in den externen SRAM angehangen.

Wie bekomme ich diese nun noch in den internen SRAM?

Ich möchte das ramB_Stream einfach das einzigste ist was im ext. SRAM 
ist.

Für jede Idee dankbar, AVRli...

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vllt mit .org in der include-asm datei wieder in den internen bereich 
mappen?

gruß

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sicherer ist vermutlich so:
.dseg

.org 0x1100
ramB_STREAM:    .Byte 2048

.org 0x0060 (oder wo der interne Ram beim M128 beginnt...)
ramCntDelayTimeW:  .Byte 1
ramCntDelayTime:  .Byte 1
ramCntDelayCnt:  .Byte 1

.cseg
.org 0

;--- hier nun die Einsprungadressen ---

.include "LayerA.asm"
.include "LayerB.asm"

Dann bleiben die restlichen Zuordnungen auch dann erhalten, wenn hier 
noch was verändert wird.

Zuweisungen solcher Art am sichersten nur an einer Stelle erledigen, 
sonst vergißt man schnell, bei Änderungen die anderen Dateien 
anzupassen.

Gruß aus Berlin
Michael

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

sorry die slowli Antwort aber ich hatte mir immer vorgenommen zu 
antworten, jetzt aber.

Also es geht nun wie folgt...

.dseg
ramCntDelayTimeW:  .Byte 1
ramCntDelayTime:  .Byte 1
ramCntDelayCnt:  .Byte 1

.cseg
.org 0

;--- hier nun die Einsprungadressen ---

.include "LayerA.asm"
.include "LayerB.asm"

.dseg
.org 0x1100
ramB_STREAM:    .Byte 2048
.cseg


Funktioniert hier ganz ausgezeichnet. So kann man auch noch in den 
Include dateien seine Variablen definieren.

Aber Vorsicht! Nicht zuviel, alles unter 0x1100 ist Ok. Und schön an den 
StackPointer denken, das war mein Fehler. :)


Gruß AVRli

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.