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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.