mikrocontroller.net

Forum: Compiler & IDEs Data Abort Exception durch Library


Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bekomme ein Data Access Abort Exception innerhalb eine sprintf
Aufrufes bei GNUARM . Ich habe die Stelle gefunden, sie liegt innerhalb
der Libray.

Es ist     str r0,[r10,#0x4]

wobei r10 gleich 0xC0 ist.

Wie bekomme ich raus was ich falsch mache bzw. was zur Behebung zu tun
ist?

Danke

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sollte wohl noch erwähnen, dass das Problem nur auftritt, wenn
Floating-point Formate benutzt werde.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Formatstring löst manchmal gar seltsame Sachen aus ;-)

Sind deine Argumente beim Aufruf der sprintf Funktion korrekt? Sind
die benutzen Formatangaben im Formatstring implementiert und passen die
restlichen Argumente dazu? Ist der Zielpuffer ausreichend gross?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm, bei Verdacht auf Fehler im GCC oder der Library und/oder zur
Steigerung der Anzahl nützlicher und hilfreicher Antworten...

Hilft es ein möglichst kleines, aber komplettes Codebeispiel inkl.
Makefile zu posten, damit der Fehler bei Dritten ggf. nachvollziehbar
wird.

Hilft es anzugeben, welche Version des GCC bzw. der Library benutzt
wird.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie bekomme ich raus was ich falsch mache

Mit an Sicherheit grenzender Wahrscheinlichkeit suchst
du an der völlig falschen Stelle. Du solltest nicht
innerhalb der Library anfangen zu suchen, sondern bei
deinem Aufruf der sprintf() Funktion.

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bitte ist hier falsch?
       ....
  sprintf (line2,"  %#5.3f V   ",3.2 );
       ....

(hierbei handelt es sich schon um eine vereinfachte Version, 3.2
 ist nur dummy, geht aber auch nicht. line2 ist ausrechend lang)
Weiter sprintf Aufrufe davor und danach ohne fp Formatschlüssel
funktionieren auch einwandfrei.

Ein anderer ARM C-Compiler verabeitet diese Zeile problemlos.

Danke

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur zur Klarstellung.

GNUARM verabeitet diese Zeile auch ohne Fehler oder Warnungen. Nur
während der Abarbeitung geht es schief!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um diesen Thread abzuschliessen:

Die Problemursache war eine Änderung im Startup-Code , die ICH (mea
culpa!) dem roty vorgeschlagen hatte und die das wichtige Symbol end
aus der Heap-Verwaltung rausgekickt hat... und u.a. die Funktion
sprintf verlässt sich halt auf eine funktionierende Heap-Verwaltung...

THX an Martin Thomas für das Finden der üblen Bugursache und den Report
im en.mikrocontroller.net Forum

Stefan

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.