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


von Maximilian K. (laplace)


Angehängte Dateien:

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
1
const char const local_numberstrings[][5] = {"NULL","EINS","ZWEI","DREI","VIER","FUNF","SEKS","SIBN"};

Mach ich es nur 2 Elemente groß, funktioniert es
1
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

von Uhu U. (uhu)


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.

von Maximilian K. (laplace)


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

von Uhu U. (uhu)


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.

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
Noch kein Account? Hier anmelden.