Ich habe ein Problem, sobald ich die sscanf Funktion benutze, bekomme der stm32 einen HardFault error. Die Compiler Optionen sind folgende: -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -O0 -g3 -mfloat-abi=soft Die ganzen Sachen, die ich im Projekt auswerten soll, ist mit pointern, atoi etc. auszuwerten ist mühsam und fehleranfällig. Deshalb möchte ich auf sscanf nicht verzichten. Gibt es da noch irgendeine Chance? Gibt es vielleicht abgespeckte sscanf Funktionen die extra für embedded Bereich gemacht sind?
Moin, zieg mal deinen Code. Kann es sein das einer der Pointer die du der Fkt übergibst auf keine gültige Speicheraddresse zeigt? Läuft sscanf in einem minimal Beispiel in dem du nur einen int o. ä. einliest? MfG Tec
Den beliebten Fehler, an sscanf keine Pointer zu übergeben hast du ganz sicher nicht gemacht? falsch int i sscanf( "%d", i ); richtig int i; sscanf( "%d", &i );
>Läuft sscanf in >einem minimal Beispiel in dem du nur einen int o. ä. einliest? Nein z.B. läuft nicht:
1 | int i; |
2 | char str[20]; |
3 | |
4 | sscanf("hello 0815", "%s%d", str, &i); |
5 | printf("%s %d", str, i); |
Ich habe jetzt zufälligerweise die o.g. Funktion in main() ausprobiert bevor LwIP initialisiert wird und siehe da, es kommt zu einer printf Ausgabe und dann zum HardFault error. Ich vermute, dass für die sscanf irgendwo ein buffer fester Größe reserviert wird? Und durch dir Speicherreservierung des LwIP Stacks kommt es zum HardFaul? kann man die Buffergröße vom sscanf beeinflussen?
Nein, LwIP läuft ohne RTOS. Habe jetzt MEM_SIZE von 8x1024 auf 2x1024 reduziert, jetzt geht es auch mit sscans. Vielen Dank
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.