MSP430: sprintf liefert falsche Ausgabe

OP (Firma: Metra) #2733537
Lesenswert?
• ▲
▼
Ich habe mir für den MSP430F5528 einen Bootloader zum Firmwareupdate 
über USB geschrieben. Wie üblich, löscht der den Programmspeicher bis 
auf die Segmente mit dem eigentlichen Bootloader und den DLIB-Funktionen 
und wartet dann auf Daten. Solange ich die gleiche Firmware einlese, die 
bereits vorher auf dem Controller lief, klappt alles. Wenn ich aber 
irgendwo nur einen einzelnen Befehl hinzufüge, startet das Gerät zwar, 
liefert aber an allen Stellen, wo sprintf vorkommt, falsche Ausgaben. Es 
wird immer der Formatstring in den Ausgabestring kopiert.
Beispiel:
sprintf(Displ_String, "%03hhd", Ver_Softw);
liefert "hhd".
Ich habe schon überprüft, dass die sprintf-Funktion in dem vom Update 
nicht veränderten Speichersegment liegt. Gibt es noch irgendwelche 
anderen Daten von sprintf, die evt. verschoben oder überschrieben 
werden? Weiß jemand Rat?.
OP (Firma: Metra) #2733785
Lesenswert?
• ▲
▼
Danke für die schnelle und hilfreiche Antwort.
Ich nutze übrigens IAR EWB 5.4.
Beim Vergleich der HEX-Daten, die sich eigentlich nur um einen einzigen 
Befehl im updatefähigen Speicherbereich unterscheiden sollten, habe ich 
einzelne Byteunterschiede an 9 Stellen im nicht vom Bootloader 
veränderbaren Speicher gefunden. Die Unterschiede betreffen nur Stellen 
an denen sich die Compilerbibliotheken befinden:
_PrintfSmall
__iar_Stoull
__iar_Stoul
Über den Assemblercode an den betreffenden Stellen erschließt sich mir 
leider nichts.
Mir ist unklar, wieso sich im Bereich der Compiler-Funktionsbibliotheken 
Änderungen in Abhängigkeit vom Programm ergeben. Kann das evt. mit der 
dynamischen Zuweisung von RAM zu tun haben?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.