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


von AVRli (Gast)


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...

von Thorsten (Gast)


Lesenswert?

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

gruß

von Michael U. (Gast)


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

von AVRli (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.