Forum: Mikrocontroller und Digitale Elektronik TrueSTUDIO+Bootloader+ST Flash Loader Anleitung


von Simon P. (Gast)


Angehängte Dateien:

Lesenswert?

Dies ist eine Anleitung für Anfänger die, wie einst ich, verzweifelt 
nach einer einfachen Lösung zum STM32 Programmieren per Bootloader 
suchen:

Wie dem STM32 Artikel 
http://www.mikrocontroller.net/articles/STM32#Programmierung zu 
entnehmen ist, ist das Atollic TrueSTUDIO die einzige Demo einer 
kommerziellen Umgebung ohne Codelimitierung und 
Nutzungsdauerbeschränkung. Zudem kann jeder Anfänger mit dem Projekt 
Wizard ohne Wissen von Linker Scribts und Startup-Codes in Handumdrehen 
nach der Installation mit dem Programmieren beginnen, da TrueSTUDIO 
alles selbstständig macht.

Es gibt nur ein Problem. Man ist auf den ST-Link und JTAG angewiesen. 
Will man jetzt In Application Programming mit dem in den STM32 
integrierten USART Bootloader betreiben, wird man vergeblich nach dem 
HEX File suchen und stattdessen nur ein ELF File finden.

TrueSTUDIO spuckt in der Lite Version von Natur aus nur .elf Files aus. 
Um jetzt aber den Flash Loader Demonstrator (alias Flash Loader Demo) 
von ST nutzen zu können, braucht man eine .hex Datei.

Um die zu kriegen, muss man die ''arm-atollic-eabi-objcopy.exe'' im 
Installationsverzeichnis von TrueSTUDIO gegen z.B. die ''objcopy.exe'' 
von CrossWorks tauschen.
Einfach CrossWorks installieren, nach der EXE im 
Installationsverzeichnis von CrosWorks suchen und in den 
''arm-atollic-eabi-objcopy.exe'' Ordner kopieren. Jetzt noch zu 
''arm-atollic-eabi-objcopy.exe'' umbenennen und fertig.

Zum Schluss braucht man nur mehr im geöffneten Projekt auf
''Project'' -> ''Properties'' -> ''C/C++ Build'' -> ''Settings'' -> 
''Build Steps'' klicken und folgendes Kommando unter ''Post Build 
Steps'' eingeben (siehe Bild):
''arm-atollic-eabi-objcopy -O ihex ${BuildArtifactFileBaseName}.elf 
${BuildArtifactFileBaseName}.hex''

Und siehe da, beim nächsten Build des Projektes wird im Release Ordner 
neben dem ELF File auch ein HEX File erscheinen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hier noch die Ergänzung, das es auch möglich ist, objcopy aus dem 
Eclipse codesourcery ZIP herauszuholen, was die Installation von 
Crossworks erspart.
https://rapidshare.com/files/459118435/eclipse_sr2_arm_toolchain_codesourcery.zip
ZIP herunterladen und in 
/eclipse_sr2_arm_toolchain/codesourcery_gcc/bin/ wechseln (ich nehme 
WinRAR ). Nun die 'arm-none-eabi-objcopy.exe' extrahieren.
Alles weitere wie in der ersten Post gezeigt, also umbenennen und den 
Stub von Atollic ersetzen. Postbuild wie gezeigt ergänzen. Für mein VL 
Discovery Board nehme ich dann das STM32 ST-Link Utility zum Flashen.
Nochmal vielen Dank an Simon P. für diesen Tipp!

von branadic (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Hier noch die Ergänzung, das es auch möglich ist, objcopy aus dem
> Eclipse codesourcery ZIP herauszuholen, was die Installation von
> Crossworks erspart.
> https://rapidshare.com/files/459118435/eclipse_sr2...
> ZIP herunterladen und in
> /eclipse_sr2_arm_toolchain/codesourcery_gcc/bin/ wechseln (ich nehme
> WinRAR ). Nun die 'arm-none-eabi-objcopy.exe' extrahieren.
> Alles weitere wie in der ersten Post gezeigt, also umbenennen und den
> Stub von Atollic ersetzen. Postbuild wie gezeigt ergänzen. Für mein VL
> Discovery Board nehme ich dann das STM32 ST-Link Utility zum Flashen.
> Nochmal vielen Dank an Simon P. für diesen Tipp!

Ich habe es exakt nach deiner Anleitung versucht, allerdings wird bei 
mir partou kein HEX-File erstellt, der Release-Ordner aber sehr wohl. 
Was läuft bei mir falsch?

branadic

von branadic (Gast)


Lesenswert?

Ein Hinweis für alle, ich habe mittlerweile das Problem gefunden. 
Projekt-Namen dürfen keine Leerzeichen enthalten, andernfalls wird das 
HEX-File nicht erzeugt und man sucht vergeblich nach der Ursache.
Vielleicht hilft jemand dieser Tipp ja bei der nächsten stundenlangen 
Fehlersuche.

branadic

von Sebastian (Gast)


Lesenswert?

Hallo,

Ich verwende auch Truestudio Lite für STM32.
Prinzipiell funktioniert es bei mir genauso, wie hier beschrieben. Das 
Problem ist nur, dass die erzeugte hex file offensichtlich zu klein ist 
300Byte. Die elf vorher hat ca. 66KB.
Das Projekt selbst hatte ich vorher schon in Keil uVision am laufen, 
dort hatte die erzeugte hex 18KB. Diese hat dann auch auf dem Target 
funktioniert.

Kennt jemand dieses Problem?

Besten Dank im Voraus!

Sebastian

von Sebastian (Gast)


Lesenswert?

Hat sich erledigt. Ich habe noch eine nicht unwesentliche Warnung 
ignoriert.

Sebastian

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
Noch kein Account? Hier anmelden.