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
Tja. Es scheint immer noch zuviel Daten zu haben. Mach doch mal einen Kommentar um was groesseres.
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
> Nachdem ich einige Berechnungsfunktionen hinzugefügt habe,
Was für Berechnungsfunktionen? Sicher, dass Du die wirklich brauchst?
Riecht stark nach Gleitkomma-Arithmetik...
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.
@ 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
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?
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.