mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32F103C8 und Bootloader


Autor: Ralph S. (jjflash)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal wieder ein Problem:

Controller: STM32F108C8

Den Testaufbau kann ich flashen mit einem ST-Link /V2 (original und 
China Clone)

Jetzt möchte ich den Chip mittels Bootloader flashen:

USB2RS232 Adapter, Chip = FTDI

- funktioniert mit Windows ST Demonstrator Loader
- funktioniert mit Linux stm32flash

USB2RS232 Adapter, Chip = CH340G

- funktioniert mit Windows ST Demostrator Loader

und (wurgs):

- mit Linux nicht !!!!

Im Netz finde ich ein paar wenige Aussagen, dass das am Linux-Kernel 
Treiber liegen soll !

Verwende ich den CH340 Adapter an einem LPC1114 und dem Programm 
lpc21isp, so lässt sich der LPC auch ueber den CH340 Adapter und 
Bootloader flashen.

Die Kombination CH340G und STM32 will jedoch einfach nicht.

Jetzt habe ich mir den Quellcode von stm32flash angesehen um vielleicht 
dahinter zu kommen, wo ich (ohne Linux-Kernel) eventuell ansetzen kann, 
aber ich komme leider nicht dahinter !

Hat das hier eventuell schon einmal jemand ans laufen gebracht ?

: - ) eine Aussage in der Art: dann verwende den FTDI Chip nutzt mir 
relativ wenig, weil ich für die "Entwicklung" eh den ST-Link verwende.

Ein STM32 Programm kann natürlich ueber den CH340 eine serielle 
Verbindung aus einem Programm heraus zu Linux aufbauen so dass ich 
Ausgaben die ein STM32 auf der seriellen Schnittstelle macht über diesen 
Adapter auf einem Linux Terminal sehe.

Wie gesagt, hat das schon jemand ans Laufen gebracht und evtl. den 
Originalcode des stm32flash gefixt (vllt. ist auch eine stty - 
Einstellung die Lösung ??? )

Autor: Ralph S. (jjflash)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS:

Fehlermeldung von stm32flash ist fuer Device-Information lesen ist:

Interface serial_posix: 57600 8E1
Failed to read ACK byte
Unexpected reply from device on command 0x01

Autor: Gerd E. (robberknight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als erstes könntest Du mal die Systemaufrufe des stm32flash bei 
Verwendung des FTDIs und des CH340 mit strace vergleichen und schauen an 
welcher Stelle da die ersten Unterschiede entstehen.

Dann würde ich mir die Übertragung zwischen Adapter und µC mit dem Logic 
Analyzer anschauen und auch dort FTDI und CH340 vergleichen.

Dann weißt Du genauer wo das Problem herkommt und kannst Dir überlegen 
wie Du das angehst.

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralph S. schrieb:
> wo ich (ohne Linux-Kernel) eventuell ansetzen kann,

Moin,

da es ein bekanntes Treiberproblem mit der Parität ist, kann es auch nur 
durch den Treiber gelöst werden.
Solange es in deinem Kernel nicht korrigiert ist:

http://www.wch.c*n/download/CH341SER_LINUX_ZIP.html

* bitte entfernen.

In das entpackte Verzeichnis wechseln, dann

# sudo make

und

#sudo make load

sollte das Problem lösen.

Autor: Ralph S. (jjflash)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... vielen Dank für den Link, hat aber leider nicht funktioniert !

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralph S. schrieb:
> hat aber leider nicht funktioniert

Was hat nicht funktioniert?

Hast Du den alten Treiber vorher entladen?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
https://github.com/fraopess/CH341_driver_parity_patch

hier noch eine andere Version.
In der README steht wie es geht.

Autor: Christopher Johnson (christopher_j23)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralph S. schrieb:
> USB2RS232 Adapter, Chip = CH340G
>
> - funktioniert mit Windows ST Demostrator Loader
>
> und (wurgs):
>
> - mit Linux nicht !!!!
>
> Im Netz finde ich ein paar wenige Aussagen, dass das am Linux-Kernel
> Treiber liegen soll !
>
> Verwende ich den CH340 Adapter an einem LPC1114 und dem Programm
> lpc21isp, so lässt sich der LPC auch ueber den CH340 Adapter und
> Bootloader flashen.

Scheinbar benötigt der LPC keine Parity-Bits für das Protokoll, siehe 
unten.

> Die Kombination CH340G und STM32 will jedoch einfach nicht.
>
> Jetzt habe ich mir den Quellcode von stm32flash angesehen um vielleicht
> dahinter zu kommen, wo ich (ohne Linux-Kernel) eventuell ansetzen kann,
> aber ich komme leider nicht dahinter !

Es liegt tatsächlich am CH340 Treiber, da der keine Parity-Bits 
unterstützt.

> Hat das hier eventuell schon einmal jemand ans laufen gebracht ?

Ja, hatte selber vor ein paar Tagen das gleiche Problem. Im folgenden 
die Anleitung wie man den Open-Source Treiber für den CH340 unter *buntu 
14.04 patcht:
cd /tmp # oder "mkdir temp && cd temp" im Homeverzeichnis oder wo auch immer
apt-get source linux-source-3.13.0 # Hier ohne sudo, sonst muss man später die Berechtigungen anpassen! Die sources landen im aktuellen Verzeichnis!
sudo apt-get linux-headers-$(uname -r) # Diesmal als root, header landen in /usr/src/linux-headers... siehe unten
cd linux-source-3.13.0 
make oldconfig 
make prepare 
make scripts 
cp -v /usr/src/linux-headers-$(uname -r)/Module.symvers . 
cp /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko.orig 
cd drivers/usb/serial 
cp ch341.c ch341.c.orig 
wget https://github.com/karlp/ch341-linux/raw/master/0001-usb-serial-ch341-Add-parity-support.patch 
patch -p4 < 0001-usb-serial-ch341-Add-parity-support.patch 
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules 
sudo cp ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko 
sudo rmmod ch341 # alten Treiber entfernen
sudo modprobe ch341 # neuen Treiber laden

Fertig :)

: Bearbeitet durch User

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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