Hallo, ich habe mir ein STM32F103 Board auf ebay gekauft. Ich wollte dies nun mit System Workbench for STM32 programmieren. Was ich gemacht habe: Donwload + installation. Projekt angelegt, Prozessor angelegt und dann mit viel trickerei die Standardbibliothek runtergeladen (ging leider nicht automatisch). Jetzt habe ich ein einfaches Projekt erstellt und will die LED auf dem Board einschalten. Leider klappt es nicht und es kommt folgende Fehlermeldung: >>>> Error in final launch sequence Failed to execute MI command: load E:\\xxx\\00_WorkspaceSTM32\\BlinkLED\\Debug\\BlinkLED.elf Error message from debugger back end: Error erasing flash with vFlashErase packet Error erasing flash with vFlashErase packet <<<< Ich habe mal meine main.c und mein config file angehängt. Debugger ist ein ebay ST-Link V2. Ich bin etwas ratlos, wäre für Tipps dankbar (auch für brauchbare Anleitungen). Vielen Dank und schönen Abend Joe
Joe schrieb: > Ich bin etwas ratlos, wäre für Tipps dankbar (auch für brauchbare > Anleitungen). Also, diese ebay.cfg ist wohl eher ein schlechter Witz. So, also: 1. besorge dir eine Toolchain, also einen "Klumpen" Software, mit der du selbstgeschriebene Quellen für deinen µC auf deiner Leiterplatte übersetzen kannst. Das kann (muß aber nicht) eine Toolchain für die C-Programmiersprache sein. Soweit ich weiß, gibt's bei "http://www.mikroe.com/" auch Toolchains für Basic und Pascal. Hab selbst damit aber keine Erfahrungen. Wenn C, dann würde ich dir zuerst zum "Keil" raten, ist bis 32 K frei und wenn viel später dein Zeugs mal > 32 K werden sollte, kannst du immer noch auf was Anderes wechseln. 2. Lies das Datenblatt und das Referenzmanual zu deinem Chip. Oder überfliege selbige wenigstens 3. Besorge dir ein Programmier-Geschirre. Lies dazu die hoffentlich vorhandene Dokumentation zu deiner Leiterplatte. Schau nach, wie es dort vorgesehen ist, den Maschinencode in den Controller zu bekommen. Die STM32 haben einen fest eingebauten Bootlader, den man über einen COM Port benutzen kann, sofern auf der LP vorgesehen, Software für den PC dazu gibt es frei. Alternative wäre ein JTAG/SWD-Adapter. Den muß man aber erst besorgen und man braucht dafür auch Software auf dem PC. Das kostet Geld oder Nerven. Oder beides. 4. Übe mit deinem Programmiergeschirre. Zunächst sowas wie ID-Signatur auslesen, Leertest, Chip löschen und so. Wenn das alles klappt, dann erst geht es mit all dem Software-Gehampel los. Wie? na je nachdem, was du unter 1. dir besorgt hast. W.S.
Moin ws, danke für deine Antwort. Das von dir beschriebene mache ich doch genau. Es klappt leider nur nicht. zu 1. Das System Workbench ist doch eine komplette Toolchain, wird sogar von STM empfohlen. Ist halt Eclipse mit Compiler und Debug Unterstützung von ST Und es muss C oder C++ sein, das kann ich ziemlich gut. zu 2. Habe ich gemacht, kommt dann später mehr, wenn ich spezielle Sachen in Betrieb nehmen will. zu 3. Ich habe einen ST-Link V2 also einen JTAG/ SWD Adapter, ohne Debugging Programmieren will ich nicht. Debugger sollte in dem System Workbench Paket enthalten sein. Warum ist mein cfg ein schlechter Witz... Über den Namen kann man streiten :-) Habe das Board halt auf ebay gekauft. Doku zu dem Board gibt es nicht, ist aber auch nicht viel drauf. Hast du noch eine Idee? Viele Grüße Joe
So ein Board ist das: http://www.ebay.de/itm/STM32F103C8T6-Cortex-M3-Minimum-System-Development-Board-For-Arduino-NEW-TE435-/381608714154?hash=item58d9a6dfaa:g:wAUAAOSwjXRXYRuJ
Das ist der Programmer: http://www.ebay.de/itm/ST-Link-V2-STM8-STM32-USB-Programmer-3-3V-5V-SWD-212-/221884211496?hash=item33a9546128:g:WeEAAOSwyvBV9Tar Und hier gibt es die Software: http://www.openstm32.org/System+Workbench+for+STM32
Joe schrieb: > Das System Workbench ist doch eine komplette Toolchain, wird sogar von > STM empfohlen. Mit "Toolchain" war nicht "IDE" gemeint, sondern "Compiler und Buildscripts". Buildscripts können unter Windows z.B. Batchfiles sein, unter Linux Shellscripte.
Hallo, Danke für deine Antwort. Aber die ist doch in dem Paket mit dabei, oder? Viele Grüße Joe
Passt schon alles. Das Problem ist die Kommunikation von openocd mit dem ST-Link V2. Wird fehlerfrei compiliert? Sieh dir die Debug Configuration genauer an.
Hallo, bauen tut er fehlerfrei...
1 | arm-none-eabi-objcopy -O binary "BlinkLED.elf" "BlinkLED.bin" |
2 | arm-none-eabi-size -B "BlinkLED.elf" |
3 | text data bss dec hex filename |
4 | 2312 1076 1056 4444 115c BlinkLED.elf |
5 | ' ' |
6 | |
7 | 21:15:48 Build Finished (took 2s.294ms) |
Bei Systemworkbech kannst du stlink v2 und v2.1 wählen... probier mal den anderen...
Gut, dann geh auf das Dreieck neben dem Käfer -> Debug Configuration Mach dann am Besten ein Bildschirmfoto davon.
ST-Link V2 Hier gibt es ein Tool mit dem Namen "STM32 ST-LINK utility". Lade es dir runter und probier aus, ob der ST-Link überhaupt funktioniert. Damit kann man auch die Firmware auf den neuesten Stand bringen. http://www.st.com/content/st_com/en/products/development-tools/hardware-development-tools/development-tool-hardware-for-mcus/debug-hardware-for-mcus/debug-hardware-for-stm32-mcus/st-link-v2.html Meiner musste erst geflasht werden, danach hat er funktioniert. Allerdings war es ein alter ST-Link 1.
:
Bearbeitet durch User
Hallo, super, das bringt mich schon mal weiter. ST-Link habe ich heruntergeladen und ein Firmewareupdate gemacht. Unter den Options habe ich die "Read Out Protection" deaktiviert und kann das Teil nun mit ST-Link beschreiben (leider geht die LED nicht an, aber das ist erstmal zweitrangig). Debuggen geht noch nicht.... Danke für eure HIlfe.
Bei mir steht bei Debugger -> Script -> Use Default Script Scheint der einzige Unterschied zu sein.
Hallo, da sagt er bei mir SCRIPT NOT FOUND. Wahrscheinlich weil ich kein Evalboard habe. Wie sieht dein Skript aus?
Muss also mit deiner ebay103.cfg zu tun haben... Joe schrieb: > da sagt er bei mir SCRIPT NOT FOUND. Sagt er bei mir auch, geht aber trotzdem. Müsste bei mir erst suchen was benutzt wird, ist aber Linux.
Hm man kann es auch direkt eingeben. Funktioniert leider aber auch nicht. Den ST-Link findet er auch. nfo : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD adapter speed: 1000 kHz adapter_nsrst_delay: 100 srst_only separate srst_nogate srst_open_drain connect_assert_srst srst_only separate srst_nogate srst_open_drain connect_assert_srst Info : Unable to match requested speed 1000 kHz, using 950 kHz Info : Unable to match requested speed 1000 kHz, using 950 kHz Info : clock speed 950 kHz Info : STLINK v2 JTAG v27 API v2 SWIM v6 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.244504 Info : stm32f1x.cpu: hardware has 6 b
Habe "Manual spec" probiert, funktioniert auch. Was geht bei dir nicht? Run/Step probiert?
Reset ist angeschlossen, trotzdem nicht... Es hat jedoch doch was mit der Resetleitung zu tun. mit reset_config none separate im config file konnte ich gerade das erste mal auf den Controller. Vielen Dank an alle!!!
Joe schrieb: > Hast du noch eine Idee? Ja, selbstverständlich. Also, das Board ist ein Minimal-Brettl, wo so ziemlich alle Pins einfach so herausgeführt sind - jedenfalls sieht es auf dem Ebay-Foto so aus. Wenn du noch keinen Stromlaufplan dafür hast, dann nimm ihn von der LP her auf. Du mußt ja wenigstens herauskriegen, wie du mit den Jumpern umgehen mußt - und ein kompletter Stromlaufplan ist immer hilfreich. So, zur Toolchain: Ich meine damit NICHT irgend eine IDE, sondern das, wo die eigentliche Musike spielt. Das ist Compiler, Assembler, Linker, RT-Libs, Fromelf und so. Du solltest lernen, selbige selbst aufzurufen, damit du nicht auf die 1000 Befindlichkeiten irgendwelcher IDE's angewiesen bist. Wenn du mit den eigentlichen Tools flott gekommen bist, dann ist immer noch Zeit genug, sich irgend eine IDE auszugucken - sofern dir dann immer noch der Sinn danach steht. Das mit dem Programmiergeschirre und dem PC-Programm dazu meine ich bitterernst. Sieh zu, daß du eine funktionable Standalone-Lösung für dich zusammenbekommst. Ob dann später deine Lieblings-IDE sowas ähnliches auch integriert hat, ist zweitrangig. Ich würde an deiner Stelle zuerst mal auf den integrierten Bootlader orientieren, denn das Geschirre dazu besteht nur aus einem simplen USB-zu-TTL-Serial-Adapter, den es vom Chinesen billigst gibt. Ja - auch ein chinesischer JLink ist billig, aber mit dem Bootlader bleibt man anständig. Und mit einem ST-Link ist man auf das Zeugs von ST festgenagelt - sehr unschön. Den Keil'schen ULINK sollte man lieber vergessen, ist auch ein Festnagel-Produkt. Zum Debuggen: Was zum Kuckuck willst du debuggen? Wofür willst du den Debugger überhaupt haben? Meine Erfahrung ist, daß der Debugger nur dafür gut ist, daß jemand bei allzu gewagten C-konstrukten herausbekommt, was der Compiler draus gemacht hat. So etwa in der Art: const struct Fontheader* const FontPool[FontAnzahl] = {... Das was du hingegen viel dringender brauchst, ist eben das Zeugs, womit man deinen erzeugten Maschinencode in den Controller gebrutzelt bekommt. Ansonsten brauchst du nen funktionablen Startupcode, ne Headerdatei für die Hardware-Register deines µC und ne Batchdatei zum Aufrufen von Compiler, Linker etc. Der Rest ist absolut fakultativ. Ich hänge dir mal ein paar Dateien hier dran, die ich soeben zusammengekratzt habe. Einige davon sind HW-unabhängig. Die anderen solltest du dir durchsehen und an deinen µC anpassen. Wie die ccc.bat funktioniert, sollte klar ersichtlich sein, ebenso beide .xcl, beides ist für den Keil ausgelegt. Nimm den Keil für den Anfang, der ist wesentlich benutzerfreundlicher als alle GCC-Distributionen die ich kenne. Du wirst sehen, daß man mit 32 K an Code ganz schön weit kommt. Im Paket sind: - Konfiguration (hier für STM32F3..) - serielle I/O per USART's und per USB - Kommandoprogramm - Systick - Events - Konvertierungen Die beiden STM32Fxx.h solltest du dir kritisch anschauen und ggf. nach Refmanual redigieren. Die für den F302 ist neuer, da hab ich den häßlichen Zirkus mit struct's bleiben lassen. Nach meiner Erfahrung nimmt der Compiler sowieso all diese HW-Struct's komplett auseinander und adressiert das Zeugs auf seine Weise. W.S.
W.S. schrieb: > Wenn du noch keinen Stromlaufplan dafür hast, dann nimm ihn von der LP > her auf. Das 'Brettl' ist hier doch schon lange bekannt, wird zB auch in der WordClock verwendet. Beitrag "STM32F103C8T6 ARM STM32 Minimum System Development Board Module For Arduino" https://www.mikrocontroller.net/articles/STM32F103C8T6_STM32_Billig_Board Man kann auch die mbed lib verwenden und den Online Compiler von mbed verwenden: https://developer.mbed.org/users/hudakz/code/STM32F103C8T6_Hello/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.