Ich habe einen kleinen Ausflug in die Programmierung eines Arduino Nano
unter dem Arduino IDE hinter mir. Wollte dann mal kurz einen STM32F103
blue pill unter dem Arduino IDE programmieren, weil mir beim Nano die
I/O-Pins ausgingen. Hatte dazu den Arduino USB Bootloader installiert
und bekomme aber beim Hochladen einer kleinen blinky-App einen Fehler
vom dfu-util 0.8:
1 | dfu-util 0.8
|
2 |
|
3 | Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
|
4 | Copyright 2010-2014 Tormod Volden and Stefan Schmidt
|
5 | This program is Free Software and has ABSOLUTELY NO WARRANTY
|
6 | Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
|
7 |
|
8 | dfu-util: Invalid DFU suffix signature
|
9 | dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
|
10 | Opening DFU capable USB device...
|
11 | ID 1eaf:0003
|
12 | Run-time device DFU version 0110
|
13 | Claiming USB DFU Interface...
|
14 | Setting Alternate Setting #2 ...
|
15 | dfu-util: Invalid dfuse address: /private/var/folders/kc/foofoo_w0000gn/T/AppTranslocation/XXXXXXX-XXXX_XXXXX_XXXX/d/Arduino.app/Contents/Java
|
16 | Beim Hochladen des Sketches ist ein Fehler aufgetreten
|
17 | Determining device status: state = dfuIDLE, status = 0
|
18 | dfuIDLE, continuing
|
19 | DFU mode device DFU version 0110
|
20 | Device returned transfer size 1024
|
Bevor ich jetzt auf STM32CubeIDE zurückschalte, wollte ich noch mal
einen Versuch machen, ob jemand mit dem Fehler was anfangen kann.
EDIT: ich bekam von anderswo den Hinweis, ich solle in der boards.txt
die richtige DFU signature eintragen. Aber was ist die bzw. wie
identifiziere ich den Eintrag?
Z.B. gibt es eine
/Users/kuku/Library/Arduino15/packages/stm32duino/hardware/STM32F1/2021.
5.31/boards.txt mit Einträgen zu dem Board, das ich gewählt habe,
STM32F103C:
1 | ###################### Generic STM32F103C ########################################
|
2 |
|
3 | genericSTM32F103C.name=Generic STM32F103C series
|
4 | genericSTM32F103C.vid.0=0x1EAF
|
5 | genericSTM32F103C.pid.0=0x0004
|
6 | genericSTM32F103C.build.variant=generic_stm32f103c
|
7 | genericSTM32F103C.build.vect=VECT_TAB_ADDR=0x8000000
|
8 | genericSTM32F103C.build.core=maple
|
9 | genericSTM32F103C.build.board=GENERIC_STM32F103C
|
10 | genericSTM32F103C.build.error_led_port=GPIOC
|
11 | genericSTM32F103C.build.error_led_pin=13
|
12 | genericSTM32F103C.upload.use_1200bps_touch=false
|
13 | genericSTM32F103C.upload.file_type=bin
|
14 | genericSTM32F103C.upload.auto_reset=true
|
15 | genericSTM32F103C.upload.tool=maple_upload
|
16 | genericSTM32F103C.upload.protocol=maple_dfu
|
Und bei den Upload-Methods:
1 | #---------------------------- UPLOAD METHODS ---------------------------
|
2 |
|
3 | genericSTM32F103C.menu.upload_method.DFUUploadMethod=STM32duino bootloader
|
4 | genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu
|
5 | genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload
|
6 | genericSTM32F103C.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER
|
7 | genericSTM32F103C.menu.upload_method.DFUUploadMethod.build.vect=VECT_TAB_ADDR=0x8002000
|
8 | genericSTM32F103C.menu.upload_method.DFUUploadMethod.build.ldscript=ld/bootloader_20.ld
|
9 | genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.usbID=1EAF:0003
|
10 | genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.altID=2
|
11 |
|
12 | genericSTM32F103C.menu.upload_method.serialMethod=Serial
|
Hab's hinbekommen:
/Users/kuku/Library/Arduino15/packages/stm32duino/tools/stm32tools/2021.
5.31/macosx/maple_upload
ist ein shell-Skript. Habe darin dfuse_addr leer gesetzt:
1 | #if [ $# -eq 5 ]; then
|
2 | # dfuse_addr="--dfuse-address $5"
|
3 | #else
|
4 | dfuse_addr=""
|
5 | #fi
|
und dann konnte ich den dfu-util Upload machen.