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
Wäre es nicht geschickter, dem Assembler zu sagen, daß er keine festen Adressen verwenden soll?
@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
...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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.