GNUARM FP mit sprintf

Gast #448154
Lesenswert?

Bitte mich nicht gleich steinigen wenn ich nochmals das Thema
FP mit sprintf hier aufrolle. Aber alle Hinweise hier im Forum haben
mir nicht geholfen.

Ich habe das Problem, dass MANCHMAL bei sprintf mit %f ein Data Abort
Exception auftritt. Ich kann eindeutig nachvollziehen, dass diese
Exception aus der Library heraus passiert.

Als relativer GNU Anfänger wäre ich für sachdienliche Hinweise was ich
falsch mache sehr dankbar.

Gast #448210
Lesenswert?

Hallo Stefan,

war dir nie böse, ist schon ok! Danke für das Angebot.

Ich habe den betreffenden Code extrahiert und ein ganz kleines Programm 
erstellt. Leider tritt da das Problem nicht mehr auf. Ich kann hier auch
debuggen. Allerdings habe ich den Quellcode der Library nicht, kann also 
nur
Assembler Code sehen. Weisst du wo ich den Quelltext dazu finde kann ?
Das Programm schmiert in meinem gro0en Programm zuverlässig im Modul 
..\mprec\_d2b\+0x6C ab.

Grüsse
Gast #448339
Lesenswert?

Dank sehr.

Habe es gefunden . Ich kann jetzt auch den Quellcode sehen und kann
sagen welcher Zugriff in den Flashbereich greift anstatt in den RAM
Bereich.
Leider verstehe ich nicht was dort in der Lib eigentlich gemacht wird.
Muss mal heute Abend weitersehen und vergleichen was im Fehlerfall und
im Nichtfehlerfall dort passiert.
Eventuell komme ich nochmals auf dich zurück, wenn man schon mal einen
Experten zur Hand hat!

Danke
Gast #448447
Lesenswert?

Hat mir jetzt doch keine Ruhe gelassen.

Manchmal hilft auch debuggen ohne dass man ganz genau versteht was 
abläuft!

Habe den Fehler gefunden. Es ist ein Problem mit der Memory Allocierung.
Durch die Verwendung eines sehr grossem RAM Buffers wurde der 
Stackbereich
durch neu hinzugekommende Variablen "angekratzt". Das hat also nur
zufälligerweise was mit der sprintf Funktion zu tun.

Danke nochmals für die anregende Hilfe.
Gast #507298
Lesenswert?

Ich habe scheinbar das gleiche Problem. Wenn ich zusätzliche Variablen 
in meinem Projekt definiere, dann funktioniert die sprintf-Funktion 
nicht mehr, d.h. sie schreibt in einen anderen RAM-Bereich und 
überschreibt somit Variablen. Ohne die zusätzlichen Variablen 
funktioniert es jedoch tadellos.

Wie kann ich dieses Problem umgehen, bzw. welche Lösungsmöglichkeiten 
gibt es?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren