Address Space Overflow

Gast #615321
Lesenswert?

Hallo,
ich programmiere zur Zeit mit der Software µVision3 von Keil einen 
Mikrocontroller. Die Programmiersprache ist C. Nachdem ich einige 
Berechnungsfunktionen hinzugefügt habe, bekomme ich nun folgende 
Fehlermeldung :
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA
    SEGMENT: DATA_GROUP
    LENGTH:  0073H
Daraufhin habe ich versucht einige Variablen zu verkleinern, indem ich 
den Datentyp geändert habe. Das Ergebnis ist, dass sich in der 
Fehlermeldung der Wert der LENGTH von 78h auf 73h verkleinert hat. Hat 
jemand eine Idee, was ich noch tun kann, damit wieder alles compiliert 
wird?
Danke schonmal für die Hilfe.
Carola
Gast #615351
Lesenswert?

Das funktioniert, aber ich benötige die Berechnung für meine Aufgabe. 
Was kann ich denn statt auskommentieren machen, damit mein Code weniger 
wird?
Vor dem Auskommentieren habe ich folgende Angaben :
Program Size: data=159.1 xdata=6766 code=22583

nach dem Auskommentieren sieht es so aus:
Program Size: data=106.0 xdata=6766 code=17047
Gast #615365
Lesenswert?

ich muss einen Frequency Sweep über den I2C-Bus initialisieren und die 
aufgenommenen Werte umrechnen und im Terminalprogramm zur 
Weiterverarbeitung ausgeben. Deswegen bin ich mir sicher, dass ich die 
Berechnungen benötige.
Gast #615403
Lesenswert?

@ carola (Gast)

>ich muss einen Frequency Sweep über den I2C-Bus initialisieren und die
>aufgenommenen Werte umrechnen und im Terminalprogramm zur
>Weiterverarbeitung ausgeben. Deswegen bin ich mir sicher, dass ich die
>Berechnungen benötige.

Klingt eher nach wenig aufwändiger Berechnung. Zeig doch mal deinen 
Code.
Ausserdem.

Festkommaarithmetik

@ Stefan (Gast)

>Mach doch in ASM - da weisst wenigstens was passiert!!!

Käse.

MFG
Falk
Gast #615443
Lesenswert?

Leider schreibst du nicht, um welchen Controller es sich handelt.
Was bei dir überquillt ist die data_group, sprich die automatisch
/lokalen Variablen, welche sich aufgrund des von dir eingestellten
Speichermodells (SMALL) im DATA-Bereich befinden.

>Was kann ich denn statt auskommentieren machen,
>damit mein Code weniger wird?

Nicht der Code (=Bedarf an Flash-Speicher) sondern der Bedarf
an (i)Data muß weniger werden. Dies kannst du ändern, indem
du entweder das Speichermodell änderst oder explizit dort wo
du vielleicht Arrays innerhalb einer Funktion deklarierst diese
in den XDATA Bereich legst.

Alles klar?
Gast #615453
Lesenswert?

Es gibt nahezu beliebig viele Tricks auf Floatingpoint zu verzichten. 
Und es gibr auch fast beliebig viele Tricks Berechnungen zu 
vereinfachen. Sobald der controller zB mit einem PC zusammenarbeitet, 
kann man Berechnungen dem PC anhaengen.
Gast #617316
Lesenswert?

Hallo,
danke für die vielen Antworten.
Ich habe jetzt die Variablen so klein wie möglich gemacht und soweit es 
ging, meine Berechnungen in Funktionen ausgelagert. Da diese Maßnahmen 
noch nicht ausgereicht haben, habe ich zusätzlich noch, wie von ARM-Fan 
vorgeschlagen, die Variablen und Arrays explizit in den XDATA-Bereich 
gelegt.

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