CANtact-Firmware über USB flashen

Die Firmware des CANtact ist dankenswerterweise Open Source, sodass individuelle Änderungen möglicht sind. Allerdings muss eine selbst-compilierte Firmware erstmal in den STM32F042C6-Mikrocontroller eingespielt werden, bevor sie funktionieren kann. Der CANtact bietet im Wesentlichen zwei Möglichkeiten hierfür:

  • Über einen externen, an die SWD-Pins angeschlossenen MCU-Debugger
  • Über den im MCU ROM vorhandenen USB-Bootloader von ST

Hier wird demonstriert, wie der zweite Weg unter Linux funktioniert.

Zunächst muss das mit „BOOT“ gekennzeichnete Pfostensteckerpaar auf der Platine überbrückt werden. Steckt man danach USB an, identifiziert sich die Platine nicht mehr als CANtact, sondern startet im USB-DFU-Modus:

$ lsusb
...
Bus 001 Device 058: ID 0483:df11 STMicroelectronics STM Device in DFU Mode
...

Dann muss am PC die Software dfu-util installiert werden:

sudo apt install dfu-util

Es sollte nun möglich sein, die programmierbaren Speicherbereiche auf dem CANtact auflisten zu lassen:

$ dfu-util --list
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Found DFU: [0483:df11] ver=2200, devnum=58, cfg=1, intf=0, path="1-1.1.2.4", alt=1, name="@Option Bytes  /0x1FFFF800/01*016 e", serial="FFFFFFFEFFFF"
Found DFU: [0483:df11] ver=2200, devnum=58, cfg=1, intf=0, path="1-1.1.2.4", alt=0, name="@Internal Flash  /0x08000000/032*0001Kg", serial="FFFFFFFEFFFF"

In dieser Anleitung gehe ich davon aus, dass die Firmware bereits erfolgreich compiliert wurde. Daraus resultiert (i.d.R. im Ordner cantact-fw/build/) die Datei CANtact-b0.bin. Diese kann nun in den internen MCU-Flash an dessen Start-Adresse 0x080000000 eingespielt werden:

# sudo dfu-util -d 0483:df11 -a 0 -D cantact-fw/build/CANtact-b0.bin -s 0x08000000
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
Downloading to address = 0x08000000, size = 14876
Download        [=========================] 100%        14876 bytes
Download done.
File downloaded successfully

Nun wird die „BOOT„-Überbrückung wieder entfernt und das USB-Kabel abgezogen und wieder angesteckt. Danach bootet der CANtact die neue Firmware.

Wer auch normalen PC-Benutzern Rechte zum Firmware-Flashen geben möchte, muss zusätzlich unter /etc/udev/rules.d/ die Datei 49-st-usb-dfu.rules anlegen:

# 0483:df11 - ST's USB DFU bootloader
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"
13 mal insgesamt angesehen, 1 mal heute angesehen.
Dieser Beitrag wurde unter CAN abgelegt und mit , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.