Forum: Mikrocontroller und Digitale Elektronik STM32DUINO Bootloader


von fleggi (Gast)


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.

von Stefan F. (Gast)


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.

von fleggi (Gast)



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:
1
setRTS(): TIOCMSET: Protocol error
2
Failed to open serial device.
3
dfu-util 0.7
4
5
Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
6
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
7
This program is Free Software and has ABSOLUTELY NO WARRANTY
8
Please report bugs to dfu-util@lists.gnumonks.org
9
10
Filter on vendor = 0x1eaf product = 0x0003
11
No DFU capable USB device found
12
Waiting for /dev/ttyACM0 serial...Done
Da findet er also noch nicht einmal das Gerät sofort.

von fleggi (Gast)


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.

von Stefan F. (Gast)


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

von Stefan F. (Gast)


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.

von Stefan F. (Gast)


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.

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
Noch kein Account? Hier anmelden.