Hallo,
ich verwende den SDCC und einen 8051 von Silabs. Wegen Schreibschutz etc
muss ich ein Datenarray auf eine feste Adresse im Code-Segment legen.
Versucht habe ich es mit:
code __at (0xC000) unsigned char INI[INI_LEN*2]={ 10,12,37,...
Das Programm versucht zwar auf dieser Adresse das Array zu lesen, aber
dort steht nichts. Wie kann ich den SDCC dazu bringen, mir dieses Array
genau dort auch abzulegen?
Danke.
Also bei mir funktioniert das nicht. Ich verwende Version 2.6.0 #4309.
Bist Du Dir sicher, daß es funktioniert?
Leg doch mal bitte die Adresse außerhalb Deines Programms, also z.B. auf
0xC000.
Saug dir mal 20061030-4444, klar funktioniert das ich kann es ja im
INTEL.HEX sehen.
Das mußt du mir dann schon glauben, welche Compiler Optionen verwendest
du ?
--code-loc 0x0000 --model-small --std-sdcc99 --vc
Anbei meine Einstellungen.
Nicht falsch verstehen. Ich habs Dir durchaus geglaubt. Allerdings meine
ich, daß der Compiler das erst dann falsch macht, wenn es außerhalb des
Programm-Adressbereichs liegt.
Wo bekomme ich denn diese neuere Version her? Eine neuere kann ich für
Windows nicht finden...
Hier meine Einstellungen
sdcc -c --model-large --int-long-reent init.c
sdcc -c --model-large --int-long-reent --no-peep-comments x.c
sdcc --model-large x.rel init.rel
So, es funktioniert nun. Wusste nicht, daß es auch quasi inoffizielle
Versionen gibt, die man nutzen kann. Ich dachte immer, von sowas läßt
man besser die Finger, wenns sicher sein soll.
Aber es funktioniert jetzt.
Vielen Dank an Euch!!
Ne ne, die sind schon offiziell. Wenn du mal Support brauchst dann weist
du das zu schätzen, in den nightly snapshots sind "schnellen" BUGfixes
enthalten.