mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 mspgcc Fehler bei .elf erstellen


Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salu zusammen

Ich habe wieder mal Probleme mit der Programmierung meines MSP430F149 
und hoffe das mir jemand helfen kann. Ich weiss nicht ob es an der 
Grösse meiner Applikation liegt, also ob der MSP voll ist...

Der Fehler sieht folgendermassen aus:

Id: address 0xa77 of test.elf section .bss is not within region data

Was bedeutet das? Ich habe lediglich einen neuen Buffer:

unsigned char sdbuffer[512]; als globale Variable eingefügt... Habe auch 
noch einen andere Buffer deklariert mit 512 Byte Grösse und halt noch 
sehr viele Variablen, ist ein Messsystem und irgendwo muss man die ja 
zwischenspeichern für eine Weiterverwendung. Kann mir irgendwie nicht 
vorstellen, dass das Ding bereits am Limit ist, aber eben, sicher bin 
ich mir nicht.

Achja nebenbei, wie finde ich heraus wieviel Code ich bereits erzeugt 
habe? Also wieviel von den 60k ich belege? Oder hat das hier etwas mit 
den 2k RAM zu tun?

Was für eine Idee hättet Ihr wie ich es umgehen könnte?

Danke schonmal im Voraus für die sicherlich kommende Hilfe :o)

Gruss Guest

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ist vielleicht nicht ganz klar:

Wenn ich den sdbuffer[512]; einfüge kommt der Fehler, wird er 
auskommentiert, läuft alles.

Gruss

Autor: Tobias K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der 149 hat nur 2 kB RAM wenn du 2 mal  512 Byte + Viele Variablen
hast wirdt du probleme mit dem Arbeitsspeicher bekommen.
Der Stack will ja auch noch irgendwo hin.

Autor: Juergen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.bss ist die Sektion fuer den Arbeitsspeicher, die wird wohl ueber den 
ihr zugewiesenen Bereich im RAM herausgelaufen sein.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach doch mal msp430-size als Postbuild rein oder manuell auf dein 
Elf-File, dann siehst du, wieviel Flash und RAM benutzt wird. txt ist 
Flash, bss und data ist RAM.

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, ok, dann ist es wohl oder übel so, dass das Dingens voll ist :o(

Hat vielleicht jemand einen Idee was ich machen könnte? Bin in SW nicht 
so bewandert.

Ich benötige einen Buffer um Daten zu speichern die auf die SD-Card 
sollen
Weiter benötige ich einen Buffer um die NMEA Daten vom GPS abzuholen. 
Beide sind 512Byte gross. Diese Buffer benötige ich aber zwingend, oder 
sehe ich das falsch? Gibts da einen anderen Ansatz? Sollte das unbedingt 
auf diesem Prozessor zum laufen bekommen. Ist das Problem vielleicht, 
dass ich diese global gesetzt habe?

Bin über jeden Tipp dankbar!

Gruss Guest

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@supachris

Sorry das ich so blöd frage, aber kannst Du mir sagen wo ich das genau 
eintragen muss mit dem Postbuild?

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich habs gefunden wo ich es eintragen musste. Sieht ohne den 
sdbuffer[512] folgendermassen aus:

text 27454
data 64
bss  1583
dec 29101
hex 71AD

Tja, da bss bereits auf 1583byte ist, denke ich, ich hab zu wenig RAM 
:o( Seh ich das richtig?

Gruss Guest

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, da hast du zu wenig RAM. Die Variablen brauchen zusammen 1647 Byte, 
also noch 401 Byte frei. Das kann man aber auch nicht voll knallen, dann 
gibts einen Stack Overflow irgendwann. Äußerst schwer zu finden. 
Entweder machst du die Puffer kleiner (bei NMEA sollte es ja gehen) oder 
du nimmst einen größeren Prozessor.

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry das ich nochmals frage, aber gibts denn einen Pinkompatiblen Typ 
zum F149 welcher mehr RAM hat? Dachte immer das sei der mit dem meisten 
RAM, ausser die die noch so Displaysachen drin haben. Falls es etwas 
gibt wäre ich natürlich dankbar. Geht um meine DA und ich habe bereits 
eine Leiterplatte gemacht da ich zu wenig Zeit hatte alles nacheinander 
zu fertigen. Irgendwie würde ich es schon schaffen Speicher frei zu 
schaufeln, aber wenns einen grösseren Prozi gäbte den ich einfach 
tauschen könnte, why not. Sind ja sowieso nur Einzelgeräte, da kommts 
auf den Preis des Prozis nicht an

Gruss Guest

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da passen doch alle, die das 64er Gehäuse haben. Aus der alten 1er Serie 
wäre der F1611 der mit dem meisten RAM (10k). F169 hat glaube schon 4k, 
sollte evtl. auch reichen. Oder dann gleich die neuen F2618 usw. die 
sind auch (fast) pinkompatibel und haben wesentlich mehr Funktionen. Da 
sind glaub 2 Pins an SPI und I2C anders....aber der F1611 passt da auf 
jeden Fall rein.

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.