www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Address Space Overflow


Autor: carola (Gast)
Datum:

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

Autor: Nullpainter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja. Es scheint immer noch zuviel Daten zu haben. Mach doch mal einen 
Kommentar um was groesseres.

Autor: carola (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nachdem ich einige Berechnungsfunktionen hinzugefügt habe,
Was für Berechnungsfunktionen? Sicher, dass Du die wirklich brauchst? 
Riecht stark nach Gleitkomma-Arithmetik...

Autor: carola (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach doch in ASM - da weisst wenigstens was passiert!!!

Gruß
Stefan

Autor: Falk (Gast)
Datum:

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

Autor: ARM-Fan (Gast)
Datum:

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

Autor: Nullpainter (Gast)
Datum:

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

Autor: carola (Gast)
Datum:

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

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.