Hallo beisammen!
Versuche mich gerade in der Programmierung eines STM3210C-EVAL und
verzweifle schon fast. Da ist ein STM32F107VCT6 drauf. Ich verwende den
"IAR Embedded Workbench for ARM, v. 6.10, 32K Kickstart Edition", habe
die Platine über COM1 (115200 Baud, 8E1) an den PC angeschlossen
(Seriellkabel hat 2<->3 gekreuzt) und schaffe es einfach nicht, den
Baustein mit einer beliebigen Firmware zu brennen. Die selbst wird
anstandslos kompiliert.
In Optionen->Debugger->Setup->Driver steht "Simulator", auf
Optionen->Debugger->Download kann ich dann aber nichts auswählen. Die
Debugger-Sitzung funktioniert ebenfalls, aber das Programm wird nicht
auf den Mikrokontroller übertragen.
Stelle ich von "Simulator" auf z.B. "ST-Link" um, kann ich bei
"Download" einstellen, die Firmware zu senden. Ich setze "Use flash
loader(s)". Jetzt kommt beim Versuch, die Daten zu senden, immer eine
Fehlermeldung "Failed to load flash loader: C:\Programme\IAR
Systems\Embedded Workbench 6.0
Kickstart\arm\config\flashloader\ST\FlashSTM32F105xC.flash" und dann
"The Debugging session could not be started..." Kurios ist das schon,
daß da ein 105er µC gebrannt werden soll, aber was solls. Diese
angegebene .flash-Datei gibt es definitiv! Also wieder zurückgewechselt
nach "Simulator" - die Einstellmöglichkeit in "Download" ist freilich
wieder weg.
Sollte ich denn nicht vom IAR (oder einem seiner Module) nach den
Verbindungsdaten gefragt werden? COM-/CAN-/USB-Anschluß, Baudrate usw..
Mit dem HyperTerminal kann ich ja auch ein 0x7f senden und bekomme ein
anderes Byte zurück. Daraus schließe ich, daß die Hardware funktioniert.
Im Netz kursieren Berichte von einem "bekanntem Fehler" des IAR bis
V5.5, der die Value-Line-µC nicht brennen kann. Ich habe hier aber einen
107er-µC und IAR V6.1. Kennt jemand diesen Fehler? Vielleicht bin ich ja
auch nur in die falsche Richtung gerannt... Danke schonmal für Eure
Antworten!
Gruß - Wolfgang
Hallo Wolfgang,
sitze gerade am fast gleichen Problem, auch STM3210C, dann aber
GNU-Chain, die verschiedenen Flasher habe ich auch noch nicht am Laufen.
Bei dir gibt es aber einen Fehler :
Das Kabel darf NICHT 2-3 gekreuzt haben !! (so steht es jedenfalls in
einer Note im Manual (S.13))
Vielleicht hilft das !
Grüsse
forscher
Flashen via USART geht meines Wissens mit der IAR Workbench IDE nicht.
Aber mit dem FlashLoader von ST. Nur darauf achten, dass die BOOT pins
richtig gesetzt sind.
Wolfgang schrieb:> Kurios ist das schon,> daß da ein 105er µC gebrannt werden soll, aber was solls.
Hatst Du die Target richtig gesetzt?
Workspace/Project -> rechts klick -> General Options -> Target -> Device
Hallo, Stefan!
Danke für Deinen Tip. Die Anforderung laut "Anleitung" habe ich
selbstredlich gelesen. Habe ein Kabel 1:1 aus einer Flachbandleitung
gebaut und ausprobiert mit den o.g. Auswirkungen (seltsam) und auch ein
fertiges mit 1:1-Belegung bis auf 2<->3 gekreuzt ausprobiert, das
überhaupt nicht will.
Nach langem Messen, Schauen, Raten komme ich zum Schluß, daß die
Hardware ab der Seriell-Buchse des PCs funktioniert. Mit dem
HyperTerminal kann ich nämlich eine Verbindung zum µC aufbauen. Leider
muß dazu SW2(=BOOT0) auf 1 gesetzt und ein Rücksetzer am µC ausgeführt
werden. Mit gesetzten Brücken auf JP18 und JP19 sollte es ohne SW2=1
gehen. Dazu muß aber der PC die Leitungen DCD und CTS ansteuern, was bei
mir nicht klappt.
Offensichtlich fehlt eine adäquate Kommunikation von Seiten des "flash
loader"s in IAR oder wie bei Dir GNU (das ich nie im Einsatz hatte).
Vielleicht weiß ja noch jemand einen Rat, was wir übersehen. So wenige
Nutzer des STM3210C gibt es ja doch nicht.
Übrigens finde ich die "Dokumentation" der Entwicklungsumgebung
schändlich nachlässig. Weder ein vernünftiges Handbuch mit Anleitung zur
Inbetriebnahme durch die gängigsten IDEs noch eine CD mit Treibern oder
was auch immer war dabei. st.com funktioniert nur mit Adobe Flash, was
ich auf meinen privaten Rechnern mit Sicherheit nicht installieren
werde. Einen einzigen flüchtigen Ansatz von Anleitung zum Brennen des µC
auf dem STM3210C habe ich im PDF UM0713 gefunden: Abbild laden, brennen,
µC neustarten. Sehr aufschlußreich! Da sollten sich die Leute von STM
mal die vorbildliche Doku bei Atmel abschauen.
Gruß - Wolfgang
Ha, überschnitten!
Danke, Mehmet. Der Chip ist definitiv auf den 107er gesetzt. Das habe
ich natürlich kontrolliert, als etwas von 105xC.flash gemeldet wurde.
Wo bekomme ich eine definitive Bestätigung dafür her, daß IAR den STM32F
blabla nicht per USART brennen kann? Von IAR ist keine Hilfe zu
erwarten, sofern die Info nicht schon irgendwo steht.
Gruß - Wolfgang
Wolfgang schrieb:> Wo bekomme ich eine definitive Bestätigung dafür her, daß IAR den STM32F> blabla nicht per USART brennen kann?
Das weiss ich natürlich auch nicht. Aber wenn Du auf Project->Rechts
Klick schaust: dort ist nix von einem FlashLoader oder dergleichen.
Also gehe ich davon aus, dass das nicht unterstützt wird.
Ich arbeite auch mit dem ST-Link aber mit IAR 5.50. Wusste gar nicht,
dass die schon bei Version 6 sind :)
Ist Dein STM3210C-EVAL ein Orginal? Oder Made in China? Dass der Chip
möglicherweise ein 105'er ist, auf den man 107 gedruckt hat? Nur so ein
Gedanke.
Naja, im Menü gibts Project->"Download and Debug STRG-D", sollte damit
also gehen. Ich habe KEIN ST-LINK, sondern habe nur einmal diese
Einstellung verwendet, um an die Einstellungen auf
Options->Debugger->Download zu kommen.
Das STM3210C ist definitiv ein Original, bezogen von Spoerle. Mit dem
gekreuzten Kabel und HyperTerminal bei 19200 8E1 habe ich einmal laut
AN3155 die PID ausgelesen (auf dem Speicheroszi ziemlich aufwendig zu
dekodieren) und heraus kam $0418, also laut AN2606 Kap. 6 ein Chip der
"Connectivity Line". Eine Unterscheidung zw. 105er und 107er ist hier
nicht möglich, was ich jetzt aber nicht als vordringlich empfinde.
Gruß - Wolfgang
Hallo Wolfgang,
so jetzt habe ich einen guten Erfolg.
Ich kann jetzt mit dem Stm32Prog.exe unter Windows das STM3210C-Board
problemlos auslesen. Notwendig ist:
Das Kabel muss auf Pin 2/3 gekreuzt sein, auf Pin 1/8 NICHT!
Ich habe also ein Kabel gelötet, beide Seiten weiblich:
5 -> 5 // GND
2 -> 3
3 -> 2
1 -> 1
8 -> 8
Dann muss noch die Schalterstellung stimmen:
SW1 auf 0
SW2 auf 1
Das ganze lief sogar über einen USB-Serial Adapter.
Grüsse
Stefan
Hallo, Stefan!
So ein Kabel verwende ich ja bereits.
Nun zu dem Chaos bei STM: Die haben es nicht geschafft, weder zum
STM32F107VCT6, den ich verwende, noch zum STM3210C diesen "Flash Loader
Demonstrator" unter "Design Support"->"SW Demos" anzuzeigen, über das
ich irgendwann doch gestolpert wäre. Erst eine Google-Suche über dieses
STM32Prog.exe und einen Eintrag auf st.com beim 101ZE µC führte zum
Erfolg.
So denn, dat Dingenskirchen installiert, kann ich nun mit dem µC reden.
Leider funktioniert der Einstieg nicht über DCD und RTS, was nochmal
weiterer Nachforschungen bedarf. Schließlich will ich auch nicht
stundenlang manuell irgendwelche Programme bedienen, sondern IAR soll
den µC gleich brennen.
Verdammt nochmal, kann denn ein renommierter IDE-Hersteller keine
vernünftige Anleitung schreiben? Warum kann das STM auch nicht? Da muß
sich wohl jeder Neuling durch sämtliche Schwierigkeiten kämpfen, nur um
mal ein paar Zeilen C auf einem µC zum Laufen zu bekommen.
So, Mehmet und Stefan: Danke erstmal. Ich bleibe am Ball und werde über
die Ergebnisse berichten, damit es andere Entwickler nicht gar so schwer
haben.
Gruß - Wolfgang
Aktueller Stand: Der Reset-Puls über die RTS-Leitung ist 960ns lang und
bringt die 3,3V auf ca. 2,5V herunter. Da kann kein µC rücksetzen!
Nach Ausbau des C15 kommt der Reset-Puls auf -0,4V herunter und der µC
wird zurückgesetzt. Leider startet die USART-Übertragung bereits 80ns
nach BEGINN des Reset-Pulses. So schnell kann kein µC den Bootloader
durchlaufen. Das ändert sich auch nicht über die Wahl der Baudrate.
Pfusch hoch 3! Konnte man denn da nicht ein paar ms warten, die ohnehin
niemandem geschadet hätten?
Gruß - Wolfgang
Wolfgang schrieb:> Naja, im Menü gibts Project->"Download and Debug STRG-D", sollte damit> also gehen.
Diese Menu-Auswahl bezieht sich aber meiner Meinung nach nicht auf eine
COM-Port, sonder auf eine JTAG-Verbindung.
So. Programmierung des µCs mit der GUI funktioniert, man muß aber die
evtl. gesteckten Brücken JP18 und JP19 entfernen. Nach Bau eines
Adapters mit der Belegung
PC µC
-----
1 -
2 3
3 2
4 8
5 5
6 -
7 1
8 -
9 -
funktioniert prinzipiell auch die Ansteuerung der Leitungen Boot0 und
Reset über RS232. Dazu muß nur noch das Kommandozeilenprogramm dazu
überredet werden, auch die entsprechenden Statussignale herauszugeben.
Das klappt nicht direkt und die Signale kann man auch nicht nach
Belieben programmieren. Also müßte man erstmal die Signale invertieren
und formieren. "Müßte" deshalb, da das Kommandozeilenprogramm letztlich
nicht nutzbar ist und erst einige Fehler ausgebaut werden müßten, wozu
ich keine Zeit habe.
Für die Formierung verwendet man am besten ein doppeltes Monoflop wie
den HC123. Das Reset-Signal wird >10ms langgemacht, das Boot0-Signal
>20ms länger als das Reset-Signal. SW2 wird auf 1 gestellt, weil die
Jungs von STM Dioden in die Reset- und Boot0-Leitung eingesetzt haben.
Alternativ kann man die D1 durch 0R ersetzen und muß nicht mehr
andauernd SW2 umstellen, wenn man den Programmieradapter an- oder
absteckt. C15 (s.o.) kann eingelötet bleiben. Danach erfolgt der Aufruf
als Options->"Build Actions"->"Post-build command line", alternativ in
einer Batch-Datei und probeweise auch im CLI:
"C:\Programme\STMicroelectronics\Software\Flash Loader
Demonstrator\STMFlashLoader.exe" -c --pn1 --br 115200 --co OFF --to 1000
-Dtr --Hi -Dtr --Lo -i STM32_Connectivity-line_256K -d --a 08000000 --fn
"H:\Projekte\Teststation SC020\Debug\Exe\Teststation.bin" --v -r --a
08000000 < "readme.txt" > "out.txt"
Die Eingabe eines Zeichens über die Tastatur muß unterbunden werden, da
das aus dem IAR heraus nicht funktionieren würde. Leider bleibt IAR hier
stecken und der Abbruch des "Build"-Vorgangs durch den Nutzer zeigt dann
einen Fehler. Welcher das ist, schweigt sich der STMFlashLoader wie IAR
aus.
Der Schaltplan zum STM3210C ist auch nicht gerade besonders
übersichtlich. Ich verbriet eine Menge Zeit damit, das Signal PHY_RESET#
zu verfolgen, bis ich es schließlich auf der Schaltplanübersicht fand.
Auf Amiga-Schaltplänen z.B. standen ja auch die Seitenzahlen zu jedem
Signal, wohin es verband. Danke, STM!
Fazit: Brennen des ARM-µCs funktioniert über die GUI des "Flash Loader
Demonstrator"s und leider nur prinzipiell über STMFlashLoader, womit man
dies bequem und automatisiert von IAR aus tun könnte. Vielleicht findet
sich ja mal jemand, der die Arbeitszeit in STMFlashLoader stecken will,
um es absturzsicher zu machen und insbesondere die RTS-Leitung direkt
programmierbar (am besten mit Einstellung der Verweilzeiten). Bis
dorthin genügt also ein einfaches gekreuztes Seriellkabel bei manueller
Bedienung.
Gruß - Wolfgang