Gateways 2.s have now a new user convenient way of upgrading firmware without any external programmer. As STM32F4xx devices include built in USB DfuSe bootloader, I was wanting to implement such functionality into OHS as well. Since software version 1.2 there is an option in shell interface to boot the device to dfu mode., and then upgrade the firmware directly via USB cable.
DFU tools:
dfu-util is a simple multi-platform command line tool that can upload binary data directly to flash.
List DFU ready devices via: dfu-util -l
Example output of gateway 2.x, most important is the 'alt=0, name="@Internal Flash ' descriptor that we gonna use:
Found DFU: [0483:df11] ver=2200, devnum=12, cfg=1, intf=0, path="3-6", alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="336A34763437"
Found DFU: [0483:df11] ver=2200, devnum=12, cfg=1, intf=0, path="3-6", alt=2, name="@OTP Memory /0x1FFF7800/01*512 e,01*016 e", serial="336A34763437"
Found DFU: [0483:df11] ver=2200, devnum=12, cfg=1, intf=0, path="3-6", alt=1, name="@Option Bytes /0x1FFFC000/01*016 e/0x1FFEC000/01*016 e", serial="336A34763437"
Found DFU: [0483:df11] ver=2200, devnum=12, cfg=1, intf=0, path="3-6", alt=0, name="@Internal Flash /0x08000000/04*016Kg,01*064Kg,07*128Kg", serial="336A34763437"
Flash the firmware via: dfu-util -a 0 --dfuse-address 0x08000000 -D ch.bin
STM32CubeProgrammer is also multi-platform tool but with graphical user interface. One downside is that you need older Java version installed to run it, but once you have it it will work nicely.
DFU howto:
- Connect your laptop/PC via USB cable to gateway. Status LED on gateway should change to short rapid flashes.
- Open any terminal emulation program like Putty and open serial connection to new enumerated USB device. On Linux it will be ACM0.
- In the terminal issue command 'boot dfu'.
- The gateway should close the USB connection, terminal will exit, or close, and the status LED will stop blinking.
- New USB device should be enumerated as 'STMicroelectronics STM Device in DFU Mode'
- Use any of DFU tool to list, connect and to download(in terms of to download a file to a DfuSe device) firmware into gateway.
- Reset the gateway via onboard reset button.