festlegen Speicheradresse der Variable WinAVR /C-ASM

Gast #411209
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
Gast #411211
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
Gast #411212
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren