Gut zu wissen. Den Umbau bei meinem Bekannten habe ich gestern erfolgreich durchgeführt. Hier mal ein Bild von meinem "yausbir nach IRMP_STM32" Umbausatz. Der dreipolige Steckverbinder hat die gleiche Belegung wie am yausbir. Die zweipolige Stiftleiste ist für die LED. Ich musste vor Ort so nur die vorhandenen Stecker aufstecken.
IRMP auf STM32 - ein USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer
-
-
Hi.
UART-Adapter kann man immer mal brauchen. Zum Flashen des Sticks helfen sie dir aber nicht.
Der Stick selber ist ein Programmer. Du brauchst zum "selber flashen" also mindestens zwei Sticks.
Sobald du die Sticks hast, öffne mal einen (Alu kann man in Richtung USB-Stecker abziehen) und poste ein Bild der Platinen-Oberseite.
Wenn du von Linux aus flashen willst kann ich dir eine Schritt-für-Schritt-Anleitung machen. Ist wirklich nicht schwer. Hat bei mir (nach längerer Auszeit) auch wieder auf Anhieb funktioniert. Eine Stiftleiste wäre praktisch wenn du noch hättest. Also sowas:
https://www.reichelt.de/?ARTICLE=119879
Die wird als "Adapter" auf die mit den Sticks gelieferte Steckbrücke gesteckt und dann während des Flashens auf die passenden Punkte des Sticks gedrückt.
TSOP kannst du wahrscheinlich direkt vom Atric wiederverwenden. Es wäre nicht schlecht wenn du noch 220 Ohm Widerstände auftreiben könntest.
Bootloader wird nicht benötigt, ist aber praktisch. Den kannst du einmalig in den Stick flashen und ab dann mit "dfu-util" über USB ein Firmware-Update auf den Stick spielen.
Die Sticks sind gestern gekommen Hier das Bild:
Ich würde dein Angebot mit der Linux Flash-Anleitung gerne annehmen und auch den Bootloader mit flashen .
Danke und Gruß
Obelix
-
Das ist ein Layout das ich bisher noch nicht gesehen habe. Meine Sticks mit zwei LEDs haben die Programmier-Pins anders belegt.
Interessant sind die 4 Punkte nahe des USB-Steckers (im Foto unten waagerecht angeordnet). Bei denen müssen wir die Belegung rausfinden.
Auf dem Foto ganz links dürfte 5V sein (geht an +5V vom USB). Der danaben ist erstmal unbekannt. Eventuell SWDIO. Der dritte ist mit sehr großer Wahrscheinlichkeit SWCLK. Beim ganz rechten wäre zu klären ob das GND ist. Kannst du das mal verfolgen ob der mit dem mit GND beschrifteten Stift verbunden ist? Wenn das GND ist, dann dürfte SWDIO und SWCLK stimmen und selbst wenn nicht kann man durch Vertauschen der beiden erstmal nix kaputt machen.
Kannst du nochmal ein Foto in höherer Auflösung reinstellen? Ich würde mir das, wenn wir die Belegung rausfinden, gerne mal bei mir ablegen. Am besten senkrecht von oben.
-
Hier ein besseres Bild:
EDIT: Ich habe noch was gefunden: Popular cheap ST-Link v2 clone from China
Ein paar Bilder von dort (sind ohne Blitz und deshalb besser):
Noch ein Zitat von der verlinkten Seite:
"STM32F101CBT6 is used instead of STM32F103CBT6 that may be found on "regular" ST-Link v2. Fun fact: STM32F101CBT6 does not officially has USB device.
See also: https://github.com/blacksphere/blackmagic/issues/62" -
Danke für das Bild. Messe Mal den Durchgang des rechten der 4 unten links zum GND Pin (zwischen den LEDS).
-
Danke für das Bild. Messe Mal den Durchgang des rechten der 4 unten links zum GND Pin (zwischen den LEDS).
Ja, positiv.
-
Ich habe mal die mit großer Wahrscheinlichkeit stimmenden Belegung in eines der Fotos eingezeichnet. Siehe Anhang.
Die äußeren Pins interessieren uns nicht (5V und GND).
Erster Schritt wäre, dass du dir eine zweipolige Stiftleiste nimmst und die kürzere Seite so zusammenbiegst, dass du damit sicher die zwei inneren Pins kontaktieren kannst.
Diese Stiftleiste dann auf eine der mit den Sticks kommende Steckbrücke aufstecken.
An dem Stick, der dein "Programmiergerät" sein wird (und folglich nicht modifiziert wird) steckst du nun die Steckbrücke so auf, dass die Leitungen mit der aufgesteckten Stiftleiste auf den mit SWCLK und SWDIO beschrifteten Pins angeschlossen sind. Die zwei übrigen kommen auf "GND" und "3.3V".
Am zu modifizierenden Stick steckst du an der werksseitig vorhandenen Stiftleiste nur die Stecker auf, die für die Spannungsversorgung sind (GND und 3.3V). Die zwei Programmierleitungen, auf denen die vorgebogene Stiftleiste steckt, werden später auf die beiden inneren Pins nahe des USB-Steckers gedrückt während die Programmierbefehle ausgeführt werden.
Auf dem Linux-System brauchst du drei Programme openocd, stlink und dfu-util. Bei Arch wären das:
https://aur.archlinux.org/packages/openocd/
https://www.archlinux.org/packages/community/x86_64/stlink/
https://www.archlinux.org/pack…ommunity/x86_64/dfu-util/
Sollte aber für alle Distributionen zu bekommen sein.
Alle folgenden Befehle am besten als root ausführen.
Den Programmier-Stick nun an USB anschließen.
Auf der Konsole folgenden Befehl vorbereiten:
Code$ openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "init" -c "halt" -c "stm32f1x unlock 0" -c "shutdown"
Die zwei Programmier-Pins richtigrum auf den Ziel-Stick drücken und den Befehl absetzen. Nun sollte auf der Konsole quittiert werden, dass der Mikrocontroller entsperrt wurde. Eventuelles Blinken auf dem Ziel-Stick hört an der Stelle auf.
Zeit den Bootloader runterzuladen:
https://github.com/j1rie/maple…ies/boot.Red.bin?raw=true
Diese "boot.Red.bin" sollte im aktuellen Verzeichnis bereitliegen. Nun folgenden Befehl vorbereiten:
Wieder Pins auf den Stick drücken und Befehl absetzen.
Wenn es bis hierhin keine Fehler gegeben hat, ist der Bootloader drin und der Stick kann wieder zusammengebaut werden.
Zeit zum ersten Mal die Firmware zu übertragen. Die passende Firmware sollte diese sein:
https://github.com/j1rie/IRMP_…d_BL_SC_jrie.bin?raw=true
Der Befehl zum Flashen ist:
Den mit Bootloader geflashten Stick in den USB-Port stecken und kurz darauf obigen Befehl absetzen.Wenn bis hierher alles geklappt hat ist dein IR-Empfänger vorbereitet. Was dann noch fehlt ist Konfiguration auf deinem HTPC und natürlich ein passender "Kabelbaum" zum Anschluss von TSOP und Power-Button.
-
Erstmal vielen Dank für die Anleitung . Ich mach mich gleich mal ran. Eine Frage noch zum Widerstand. Da steht nicht ob 1/8 oder 1/4. Welchen habt ihr den verbaut?
-
hi, ich bekomme Fehler:
Code
Alles anzeigenopenocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "init" -c "halt" -c "stm32f1x unlock 0" -c "shutdown" Open On-Chip Debugger 0.9.0 (2015-09-02-10:42) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html WARNING: target/stm32f1x_stlink.cfg is deprecated, please switch to target/stm32f1x.cfg Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'. Info : 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 none separate 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 v21 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.253755 Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 300ms Warn : target was in unknown state when halt was requested
Die LED hört zwar auf zu blinken aber wenn ich weiter mache, kommt das:
Code
Alles anzeigenst-flash --reset write boot.Red.bin 0x8000000 st-flash 1.4.0 2018-01-08T19:58:53 INFO common.c: Loading device parameters.... 2018-01-08T19:58:53 INFO common.c: Device connected is: F1 Medium-density device, id 0x20036410 2018-01-08T19:58:53 INFO common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0xb97000 bytes (11868 KiB) in pages of 1024 bytes 2018-01-08T19:58:53 INFO common.c: Attempting to write 6844 (0x1abc) bytes to stm32 address: 134217728 (0x8000000) Flash page at addr: 0x08001800 erased 2018-01-08T19:58:53 INFO common.c: Finished erasing 7 pages of 1024 (0x400) bytes 2018-01-08T19:58:53 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core id 2018-01-08T19:58:53 INFO flash_loader.c: Successfully loaded flash loader in sram 2018-01-08T19:58:55 ERROR flash_loader.c: flash loader run error 2018-01-08T19:58:55 ERROR common.c: stlink_flash_loader_run(0x8000000) failed! == -1 stlink_fwrite_flash() == -1
-
Hier noch die dmesg Ausgabe nach Anstecken des Sticks:
Code[ 1726.189902] usb 3-13.4: Product: STM32 STLink [ 1726.189903] usb 3-13.4: Manufacturer: STMicroelectronics [ 1726.189903] usb 3-13.4: SerialNumber: HÿpH\xffffffc2\xffffff84S7 \xffffffc2\xffffff87 [ 1908.640738] usb 3-13.4: USB disconnect, device number 12
SerialNumber sieht schon seltsam aus. Das war schon vor dem flashen so.
-
Ich vermut es geht nicht mit openocd 0.9.
-
Ich vermut es geht nicht mit openocd 0.9.
Mit 0.10.x geht es auch nicht.
Code
Alles anzeigen../gnu-mcu-eclipse/openocd/0.10.0-5-20171110-1117/bin/openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "init" -c "halt" -c "stm32f1x unlock 0" -c "shutdown" GNU MCU Eclipse 64-bits Open On-Chip Debugger 0.10.0+dev-00254-g2ec04e4e (2017-11-10-11:27) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html WARNING: target/stm32f1x_stlink.cfg is deprecated, please switch to target/stm32f1x.cfg Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'. Info : 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 none separate 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 v21 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.252277 Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms Info : Listening on port 3333 for gdb connections Info : Previous state query failed, trying to reconnect Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms
-
Ich bin jetzt erstmal ein paar Tage nicht an meinem PC aber ich würde mich erstmal um diese Warnung kümmern:
ZitatWARNING: target/stm32f1x_stlink.cfg is deprecated, please switch to target/stm32f1x.cfg
Tausche das mal im Befehl aus und poste wieder die Ausgabe. Wenn wir die Lösung finden, dann tausche ich das bei Gelegenheit auch auf der Wiki-Seite aus, bzw. hänge dort beide Befehle an mit Hinweis auf die neue Version.
-
Ich bin jetzt erstmal ein paar Tage nicht an meinem PC aber ich würde mich erstmal um diese Warnung kümmern:
Tausche das mal im Befehl aus und poste wieder die Ausgabe. Wenn wir die Lösung finden, dann tausche ich das bei Gelegenheit auch auf der Wiki-Seite aus, bzw. hänge dort beide Befehle an mit Hinweis auf die neue Version.
Code
Alles anzeigenopenocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "init" -c "halt" -c "stm32f1x unlock 0" -c "shutdown" Open On-Chip Debugger 0.9.0 (2015-09-02-10:42) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'. Info : 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 none separate 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 v21 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.252736 Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms Info : Previous state query failed, trying to reconnect Polling target stm32f1x.cpu failed, trying to reexamine Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Error: The 'mww' command must be used after 'init'. in procedure 'init' in procedure 'ocd_bouncer' in procedure 'nand' in procedure 'ocd_bouncer' Error: jtag status contains invalid mode value - communication failure
-
Ausgabe von Version 0.10.x:
Code
Alles anzeigen../gnu-mcu-eclipse/openocd/0.10.0-5-20171110-1117/bin/openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "init" -c "halt" -c "stm32f1x unlock 0" -c "shutdown" GNU MCU Eclipse 64-bits Open On-Chip Debugger 0.10.0+dev-00254-g2ec04e4e (2017-11-10-11:27) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'. Info : 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 none separate 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 v21 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.252736 Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 300ms Info : Listening on port 3333 for gdb connections Warn : target was in unknown state when halt was requested
-
Kein Unterschied.
Wenn du alle "-c" weglässt, dann sollte openocd auf einer Art "Konsole" starten. Dort könntest du die Befehle der Reihe nach manuell eingeben, sofern er überhaupt soweit startet. Bei welchem Befehl knallt es dann?
-
Falls ein Windows PC zur Verfügung steht, wäre sonst auch das Flashen mit dem STM32 ST-LINK Utility möglich: https://www.mikrocontroller.ne…ung#Flashen_.28Windows.29
-
Kein Unterschied.
Wenn du alle "-c" weglässt, dann sollte openocd auf einer Art "Konsole" starten. Dort könntest du die Befehle der Reihe nach manuell eingeben, sofern er überhaupt soweit startet. Bei welchem Befehl knallt es dann?
Ich glaube , ich löte mir was an das Teil dran. Ich glaube das Problem ist mit den Stiften, oder:
Code
Alles anzeigenpenocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg Open On-Chip Debugger 0.9.0 (2015-09-02-10:42) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'. Info : 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 none separate 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 v21 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.251715 Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms Info : Previous state query failed, trying to reconnect Polling target stm32f1x.cpu failed, trying to reexamine Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 300ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 700ms Info : Previous state query failed, trying to reconnect Polling target stm32f1x.cpu failed, trying to reexamine Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 100ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 300ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 700ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 1500ms Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure Polling target stm32f1x.cpu failed, trying to reexamine Examination failed, GDB will be halted. Polling again in 3100ms iInfo : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode value - communication failure
Falls ein Windows PC zur Verfügung steht, wäre sonst auch das Flashen mit dem STM32 ST-LINK Utility möglich: https://www.mikrocontroller.ne…ung#Flashen_.28Windows.29
Kein Windows auf echter Hardware vorhanden und mit Virtualbox will ich da nix machen.
-
Kannst du versuchen. Im Netz hatte ich auch verschiedene Meldungen, dass es an zu wenig Spannung liegen kann. Um das auszuschließen kannst du mal statt die 3,3V zu verbinden die 5V verbinden. Damit würde sich der "Ziel-Stick" seine 3,3V selber herstellen mit seinem eigenen Spannungswandler.
Edit: Nur nochmal zur Sicherheit, dass sich niemand Sticks zerstört: Natürlich an beiden Sticks die 5V-Pins verbinden!
-
Kannst du versuchen. Im Netz hatte ich auch verschiedene Meldungen, dass es an zu wenig Spannung liegen kann. Um das auszuschließen kannst du mal statt die 3,3V zu verbinden die 5V verbinden. Damit würde sich der "Ziel-Stick" seine 3,3V selber herstellen mit seinem eigenen Spannungswandler.EDIT
EDIT: OK, beide auf 5V
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!