mikrocontroller.net

Forum: Compiler & IDEs Progamm aus elf und bin unterschiedlich


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Nepi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich programmiere mit CubeIDE einen STM32F302VE und FreeRTOS. Am 
Controller hängt ein LCD mit vielen mehrsprachige Texten. Um RAM zu 
sparen sind die Texte im Flash als const char gespeichert:
const char *Software_Version[] =
{
/*DE*/"Software Version",
/*EN*/"Software version",
/*FR*/"Version du logiciel",
/*IT*/"Versione Software",
/*ES*/"Version del software",
};

Aktuell spiele ich das Programm mit einem STLink auf den STM32. Dazu 
nutzt CubeIDE das elf File.

Für programmieren über Bootloader wird eine bin Datei erzeugt. Dazu 
nutze ich arm-none-eabi-objcopy.
Wenn ich das bin über Bootloader aufspiele fehlen bei wenigen Texten die 
ersten 2 Buchstaben. Z.B. "ftware Version"
Gleiches bei flashen der bin über den STLink. Weshalb es nicht am 
Bootloader liegen sollte.

Wenn ich in der C Datei die Reihenfolge ändere und z.B.:
const char *Hardware_Version[] = ...
mit
const char *Software_Version[] = ...
tausche fehlen die Zeichen im Hardware string.


Hat jemand einen Tipp wo ich den Fehler suchen kann?

von Sven B. (scummos)


Bewertung
0 lesenswert
nicht lesenswert
Hast du mal "strings" auf das Binary ausgeführt und geschaut, ob sie 
darin vollständig enthalten sind? Wenn das so ist (vermutlich ja), würde 
ich den Fehler eher da suchen, wo der String verwendet wird. Vielleicht 
greifst du da falsch auf den Speicher zu.

von Nepi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke Sven für den Tipp.

Ich habe das Problem nun gefunden. Es liegt an der dynamischen Speicher 
Reservierung vom FreeRTOS. Nach einem Wechsel von heap_4 auf heap_2 sind 
die Effekte verschwunden.
Ich habe es noch nicht vollends Verstanden aber für das erste bin ich 
zufrieden :)
Es gibt einen Artikel der für die Kombination CubeMX, newlib und 
FreeRTOS Hinweise gibt: 
http://www.nadler.com/embedded/newlibAndFreeRTOS.html

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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.