mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32DUINO Bootloader


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: fleggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein neues Bluepill-Board und einen ST-Link.
Nach einigen Bemühungen ist es mir nun gelungen, den 
STM32DUINO-Bootloader auf dem Board zu installieren.
Dazu habe ich den ST-Link an das Board angebunden, den oberen Jumper 
(Reset-Knopf = unten) auf 1 gesetzt, den unteren auf 0, und dann mit 
st-flash den Bootloader von hier 
(https://github.com/rogerclarkmelbourne/STM32duino-bootloader) mit 
folgendem Befehl übertragen:
st-flash --reset write generic_boot20_pc13.bin 0x8000000
Danach den oberen Jumper wieder auf 0 gesetzt und den ST-Link 
abgesteckt. Anschließend per micro-USB-Kabel an den PC angebunden.
Das Board wird als Maple Board erkannt und bekommt die Gerätedatei 
/dev/ttyACM0 zugewiesen.
Nun weiß ich aber nicht weiter.
Der Bootloader äußert sich folgendermaßen: jedes Mal, wenn der µC 
resettet wird, leuchtet die PC13-LED ca. 1s lang schnell immer wieder 
auf. Danach passiert nichts mehr. Nur im Serial-Monitor kann ich den 
Congratulations-Sketch sehen, der mit dem Bootloader hochgeladen wurde.
Wie kann ich aber nun über USB einen neuen Sketch aufspielen?
Hier (http://stefanfrings.de/stm32/index.html#stm32duinoboot) steht, 
dass man während dem Upload Reset drücken soll.
Das funktioniert aber auch nicht, weder wenn ich gedrückt halte noch 
wenn ich loslasse. Jumper-Positionen habe ich auch schon mit dem oberen 
Jumper auf 0 und 1 ausprobiert.
Ich weiß absolut nicht, was ich falsch gemacht habe.

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> jedes Mal, wenn der µC resettet wird, leuchtet die PC13-LED ca.
> 1s lang schnell immer wieder auf. Danach passiert nichts mehr.

Während dieser Sekunde ist der Bootloader aktiv. Danach nicht mehr, denn 
danach läuft das installierte Programm.

> Jumper-Positionen habe ich auch schon ... ausprobiert.

Der STM32Duino Bootloader im Flash Speicher wird nur gestartet, wenn 
bder Jumper Boot0 auf Position 0 steckt (der andere Jumper ist egal).

> Wie kann ich aber nun über USB einen neuen Sketch aufspielen?

Zeige mal, welche Einstellungen du in der Arduino IDE vorgenommen hast 
und welche Fehlermeldung angezeigt wird.

Hast du den Pull-Up Widerstand R10 korrigiert?

Schau Dir das an: 
http://wiki.stm32duino.com/index.php?title=Uploading_a_sketch dort wird 
auch auf ein hilfreiches Video verwiesen.

Falls Dir das alles zu umständlich/wackelig ist, bleibe beim seriellen 
Port oder kaufe Dir einen ST-Link Adapter.

: Bearbeitet durch User
Autor: fleggi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
>> jedes Mal, wenn der µC resettet wird, leuchtet die PC13-LED ca.
>> 1s lang schnell immer wieder auf. Danach passiert nichts mehr.
>
> Während dieser Sekunde ist der Bootloader aktiv. Danach nicht mehr, denn
> danach läuft das installierte Programm.

Das heißt, beim Flashen muss ich direkt davor den µC resetten, wobei der 
obere Jumper auf 0 ist, richtig?

>> Wie kann ich aber nun über USB einen neuen Sketch aufspielen?
>
> Zeige mal, welche Einstellungen du in der Arduino IDE vorgenommen hast
> und welche Fehlermeldung angezeigt wird.

Siehe Anhang.
Das "Done." am Ende der Ausgabe kommt auch immer sofort, da lädt nichts.

> Hast du den Pull-Up Widerstand R10 korrigiert?

Ich dachte, das sei nur nötig, wenn der PC das Board gar nicht erkennt. 
Bei mir zeigt er das ja richtig an, nur das Flashen klappt nicht. Ich 
habe nämlich leider keine 1.8kOhm da, nur 2kOhm. Und ich weiß halt 
nicht, ob das genau genug ist. Könnte das denn die Ursache sein? Und 
könnten parallel geschaltete 2kOhm das auch beheben oder nur 1.8kOhm?

> Schau Dir das an:
> http://wiki.stm32duino.com/index.php?title=Uploadi... dort wird
> auch auf ein hilfreiches Video verwiesen.

Danke, ich lese es mir einmal durch.
Wobei da der Bootloader ganz anderes ausgibt.

Was mir auch noch aufgefallen ist: wenn ich genau das gleiche Script mit 
denau den gleichen Argumenten in einer Konsole aufrufe, bekomme ich 
folgenden Output:
setRTS(): TIOCMSET: Protocol error
Failed to open serial device.
dfu-util 0.7

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Filter on vendor = 0x1eaf product = 0x0003
No DFU capable USB device found
Waiting for /dev/ttyACM0 serial...Done
Da findet er also noch nicht einmal das Gerät sofort.

Autor: fleggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Falls Dir das alles zu umständlich/wackelig ist, bleibe beim seriellen
> Port oder kaufe Dir einen ST-Link Adapter.

Ich habe ja bereits einen ST-Link.
Aber ich finde es eigentlich einfacher, wenn man das direkt über den 
USB-Port zum Laufen kriegt.
Naja, wenn es aber nicht will, werde ich doch nur den Adapter nehmen.

Danke auf jeden Fall für deine Hilfe.

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das heißt, beim Flashen muss ich direkt davor den µC resetten,
> wobei der obere Jumper auf 0 ist, richtig?
Ja

2k Ohm sind sicher auch Ok.

Hast du als normaler User Schreibzugriff auf /dev/ttyACM0? Falls nciht, 
kontrolliere mal die UDEV rules: 
http://wiki.stm32duino.com/index.php?title=Installation_on_Linux

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Während ich versucht habe, dein Problem nachzuvollziehen, sind mir zwei 
Sachen aufgefallen:

Mein /arduino-1.8.5/hardware/Arduino_STM32-master/tools/linux64/dfu-util 
hat die Version 0.7.

Im Verzeichnis 
/arduino-1.8.5/hardware/Arduino_STM32-master/tools/linux/dfu-util liegt 
hingegen eine Version 0.8.

Vielleicht musst du beim manuellen Aufruf die 32 Bit Version verwenden. 
Die ist auf jeden Fall wesentlich neuer.

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein paar Fragen noch nicht beantwortet. Deine Einstellungen in 
der IDE sehen gut aus.

Ob der Pull-Up Widerstand wirklich korrigiert werden muss, weiß ich 
nicht. Klar ist jedenfalls, dass 10k Ohm weit weg vom Sollwert sind. Und 
wenn dann noch Probleme mit der Kommunikation auftreten ist das doch 
eine der einfachsten Korrekturen, die man versuchen kann.

Bei GitHub gibt es inzwischen eine Version 0.9 vom dfu-util. Das würde 
ich an deiner Stelle auch mal versuchen.

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.