www.mikrocontroller.net

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


Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

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

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.