Forum: Mikrocontroller und Digitale Elektronik AVR Assembler Alignment von Daten im Flash


von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Hallo,

gibt es eine Möglichkeit dem AVR Assembler (2.1.42) mitzuteilen das 
dieser Daten im Flash an einer bestimmten Byte(Word) Position 
ausrichtet? In meinem Fall geht es um jeweils 256 Byte Daten, die ich 
gerne an der nächsten 256 Byte Grenze ausrichten möchte damit ich mich 
fürs LPM nur um ZL kümmern muss. Aktuell liegt das Array hinter meinem 
eigentlichen Programm und ich habe den Platz dazwischen manuell mit NOPs 
aufgefüllt um das Array auf eine 256 Byte Grenze zu schieben. Ich würde 
das aber gerne automatisch vornehmen lassen weil ich sonst bei (längen) 
Änderungen am Programm immer die NOPs anpassen muss.

von Mario M. (thelonging)


Lesenswert?


von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Danke, funktioniert. Hab nur im Speicher Tutorial nachgeschaut, auf die 
Idee bei den Macros nach zu schauen, bin ich nicht gekommen. Hatte 
eigentlich erwartet, dass der Assembler das selber kann.

von Eberhard H. (sepic) Benutzerseite


Lesenswert?

Tim T. schrieb:
> gibt es eine Möglichkeit dem AVR Assembler (2.1.42) mitzuteilen das
> dieser Daten im Flash an einer bestimmten Byte(Word) Position
> ausrichtet?

Einfach am Programm-Ende ein Label angeben und die Daten auflisten.
Dann folgen die Daten direkt dem Programm.
Das Z-Register wird mit diesem Label geladen. Das ist schon alles.

Eine feste Adresse für die Daten im 256-Byte-Raster ansonsten per:
1
.ORG  Daten_Segment
2
Daten_Label:
3
    ...

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Eberhard H. schrieb:
> Tim T. schrieb:
>> gibt es eine Möglichkeit dem AVR Assembler (2.1.42) mitzuteilen das
>> dieser Daten im Flash an einer bestimmten Byte(Word) Position
>> ausrichtet?
>
> Einfach am Programm-Ende ein Label angeben und die Daten auflisten.
> Dann folgen die Daten direkt dem Programm.
> Das Z-Register wird mit diesem Label geladen. Das ist schon alles.

Das Problem daran ist, in meinem Programm ist das alles sehr 
zeitkritisch und ich keine Zeit habe ZH und ZL zu setzen, darum wollte 
ich das Ganze eben an 256 Byte ausrichten damit ich mir im 
zeitkritischen Bereich keine Gedanken um ZH machen muss.

> Eine feste Adresse für die Daten im 256-Byte-Raster ansonsten per:
>
>
1
.ORG  Daten_Segment
2
> Daten_Label:
3
>     ...
4
>

Stimmt, könnte die Arrays natürlich auch direkt fest ans Ende des Flash 
schreiben. Danke für den Denkanstoß.

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.