mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Absolte addressing mit SDCC


Autor: srb (Gast)
Datum:

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

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert einwandfrei.

code at 0x0100  INI []={10,11,12,13,14,15,16,17};

Welche Version von SDCC verwendest du ?

Autor: srb (Gast)
Datum:

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

Autor: Joe (Gast)
Datum:

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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Getestet mit sdcc 2.6.1 #4497 (Dec  2 2006):
code at 0xCCCC int test[]={1,2,3};

void main() {

}

Erzeugt im .asm file:
...
        .org 0xCCCC
_test:
        .byte #0x01,#0x00
        .byte #0x02,#0x00
        .byte #0x03,#0x00

und der Asembler packt entspechend die Daten an 0xCCCC.
Im .lst file:

   CCCC                     130         .org 0xCCCC
   CCCC                     131 _test:
   CCCC 01 00               132         .byte #0x01,#0x00
   CCCE 02 00               133         .byte #0x02,#0x00
   CCD0 03 00               134         .byte #0x03,#0x00

Schliesslich landet im .hex/.ihx File folgende Zeile:

:06CCCC000100020003005C

Passt also alles.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Version 2.5 weis ich nicht hatte einen BUG, der ist aber beseitigt.

Autor: srb (Gast)
Datum:

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

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: srb (Gast)
Datum:

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

Autor: Joe (Gast)
Datum:

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

Autor: srb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, hab eben von den SDCC-lern auch eine Antwort bekommen. Allerdings 
leicht arrogant. Aber was solls, kostet ja nichts und ist gut.

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.