www.mikrocontroller.net

Forum: Compiler & IDEs String Array - komischer Effekt (ATmega32+FreeRTOS)


Autor: Maximilian K. (laplace)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gemeinde,

nach langer Zeit mal wieder was von mir. Ich jetzt mal auf einen 
ATmega32 aufgestockt (vom mega8) und bin am basteln mit FreeRTOS. Ich 
konnte bis jetzt alle Klippen umfahren und hab schon einiges zum laufen 
gebracht. Jetzt bastel ich mir gerade ein Debug System über stdout und 
hatte folgenden Effekt:

Wennn ich folgendes Array in der main.c anlege, funktioniert die 
UART-Ausgabe nicht
const char const local_numberstrings[][5] = {"NULL","EINS","ZWEI","DREI","VIER","FUNF","SEKS","SIBN"};

Mach ich es nur 2 Elemente groß, funktioniert es
const char const local_numberstrings[][5] = {"NULL","EINS"};

Hat sicher irgendetwas mit dem RAM zu tun, aber in welcher Richtung kann 
man da suchen? Voll ist das RAM noch nicht, sind ja nur 40Byte und ich 
hab sonst noch nicht viel angelegt. Ich hab mal die ganze main.c 
angehängt - vielleicht hat ja wer ne Idee.

Grüße,
Max

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh Max, solche Postings, ein Traum...

Vermutlich liegt der Fehler in der 587 Modulen, die du nicht gepostet 
hast.

Ich würde den Debugger satteln und der Tastatur die Sporen geben und 
dann nachgucken, was der UART-Ausgabe nicht schmeckt.

Das Stringarray kannst du übrigens auch etwas flexibler so vereinbaren:

const char const *local_numberstrings[] = 
{"NULL","EINS","ZWEI","DREI","VIER","FUNF","SEKS","SIBN"};

Dann müssen die Strings nicht alle gleich lang sein.

Autor: Maximilian K. (laplace)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Uhu,

vielleicht räubert ein anderes Modul außerhalb seines Speicherbereiches 
herum und wenn das Array groß genug ist krachts.

Weißt du, ob eine const-Variable nur im ROM (Flash) existiert oder wo 
sie angelegt wird?

Grüße,
Max

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maximilian K. wrote:
> Weißt du, ob eine const-Variable nur im ROM (Flash) existiert oder wo
> sie angelegt wird?

Nein, da mußt du den Compiler/Linker deines Vertrauens zu Rate ziehen, 
bzw. dessen Handbücher und das Map-Listing bzw. die Symboltabelle, wie 
das wohl auf Altdeutsch heißt.

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.