Forum: Compiler & IDEs festlegen Speicheradresse der Variable WinAVR /C-ASM


von Herbert (Gast)


Lesenswert?

Hallo zusammen,
ich habe ein bestehendes ASM-Projekt in eine C-Umgebung eingebunden.
Hierbei nutze ich AVR-Studio/WinAVR und habe folgende Prinzip der
Variablenhandlings übernommen:

innerhalb des ASM-Files habe ich die Variablen bsp. mit

" .comm dVariable,1 "

definiert und im C-Code mit

" extern volatile uint8_t LED[2]; "

deklariert.

Funktioniert alles wunderbar; ich habe aber nun das Problem, daß im
Orginal alle Variablen feste Adressen und über ein Hostprogramm auch
direkt über diese angesprochen und verändert werden.
Nun habe ich die Möglichkeit per MAP-File die physikalische Adressen
herauszufiltern und 'hardgecoded' im Hostprogramm eingebe. Ist nicht
gerade elegant und ausserdem unsicher.

Hat jemand eine Idee oder Informationen darüber wie man dem
Compiler/Linker eine Adresse vorschreiben kann?

gruss herbert

von Rolf Magnus (Gast)


Lesenswert?

Wäre es nicht geschickter, dem Assembler zu sagen, daß er keine festen
Adressen verwenden soll?

von Herbert (Gast)


Lesenswert?

@rolf:
wie schon erwähnt muss ich einiges ändern, da das bisherige PC-Programm
(Steuerprogramm) mit fixen Speicheradressen des µC hantiert.

Gerade diesen Mehraufwand will ich ja vermeiden -- wäre halt gut ich
könnte den genutzten Variablen eine feste Adresse verpassen..

hab mal im ATMEL ASM Dokument, AVR Assembler User Guide, geschaut dort
kann man mit den folgenden Zeilen:
"
.data ; Start data segment
.org 0x160  ; Set SRAM address to hex 67
variable:.BYTE 1 ; Reserve a byte at SRAM
"
die Adresse fix vergeben. Leider funktioniert das in der
WINAVR-Umgebung nicht..

gruss herbert

von Herbert (Gast)


Lesenswert?

...wenn ich da im Map-File nachschaue setzt er mir 'variable' im
Codespeicher?!
Offensichtlich passen die PseudoOps '.data' mit der Segmentverwaltung
von WinAVR/C+ASM nicht zusammen.

wo gibt es dazu mehr Infos?
gruss herbert

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.