Bootloader dfu-util command 0.7.0

Does anyone know the dfu-util command to update the bootloader for 0.7.0? I need the memory location to add this to my script.

The line would look like this but I don’t know what goes in the question marks

dfu-util -d 2b04:d006 -a 0 -s 0x??? -D bootloader-0.7.0-photon.bin

BACKGROUND (if you want it)

It is important the target device stay in dfu mode until the entire process is complete. my previous sequence was
dfu-util -d 2b04:d006 -a 0 -s 0x8020000 -D system-part1-0.7.0-photon.bin
dfu-util -d 2b04:d006 -a 0 -s 0x8060000 -D system-part2-0.7.0-photon.bin
particle flash --usb app.bin
(then the unit resets and we go to testing and stuff)

If I don’t update the bootloader the testing code breaks on my production programming machine when the bootloader is updated via the cloud. (it goes to safe mode a period of time)

If I run particle flash --usb bootloader-0.7.0-photon.bin it comes out of dfu mode and my programming sequence doesn’t work.

You can’t update the bootloader in DFU mode. It can only be updated in listening mode (blinking dark blue using --serial) or OTA.

The reason is that the STM32 processor executes code from flash - it does not copy it into RAM. Since DFU mode code runs out of the bootloader flash, you can’t change out the bootloader while running the bootloader.

The Particle CLI is able to update the bootloader using particle update over USB now. It does this by saving the user firmware to the OTA user firmware slot, flash special user firmware that can update the boot loader in MANUAL mode, then swap back to the real user firmware.

5 Likes

wow, that was on point. Thanks @rickkas7

Now that I explicitly know what can and cannot be done, we will figure it out.