Debugging Particle on Windows

This article is a complement to my 5 steps to setup and use a debugger with the Particle Photon with specific steps to using the debugger on Windows.

Compiling the firmware and using the debugger is the same, so I won’t repeat those steps here.

I ran these steps on Windows 10.

Install the software

Install the drivers

  • Install the Photon in the Programmer Shield
  • Plug the USB from your Programmer shield to your computer
  • Open Zadig
  • Check Options → List all devices
  • Select Particle FT2232 (Interface 0) and libusbK for the driver
    IMPORTANT: Interface 0, not interface 1
  • Click Install driver or Reinstall driver
Install the driver for the Debugger Shield

If you haven’t installed the DFU driver before, follow these steps too

  • Disconnect the USB from the Programmer Shield and connect it to your Photon so that the Photon is connected to your computer
  • Enter DFU mode on the Photon: hold the Setup button, press and release reset, and keep holding Setup until the LED flashes yellow
  • Open Zadig
  • Select Photon DFU Mode and lubusbK for the driver
  • Click Install driver or Reinstall driver
Install the driver for the Photon in reflash mode (DFU)

Compile the firmware

The Windows-specific part here is to build the firmware with a clean path to avoid issues with incompatible versions of make, git, rm…

Connect the USB cable to the Photon (not to the Programmer Shield), put the Photon in DFU mode, compile and flash the firmware.

set PATH=C:\Windows\system32;C:\Windows;C:\Particle\Toolchain\MinGW\bin\;C:\Particle\Toolchain\MinGW\msys\1.0\bin;C:\Particle\Toolchain\GCC-ARM\bin;C:\Particle\Tools\DFU-util;C:\Particle\Toolchain\Make\bin;C:\Particle\Tools\Git\bin
cd /d C:\Particle\firmware\modules
make clean all program-dfu PARTICLE_DEVELOP=1 PLATFORM=photon USE_SWD_JTAG=y
Compiling and reflashing through DFU completed (even though it shows error during download get_status at the end)

Start the debugger

  • Open a command line to C:\Particle\openocd\bin-x64
  • Start openocd
openocd.exe -f particle-ftdi.cfg -f stm32f2x.cfg -c "gdb_port 3333"
The interface between GDB and the Programmer Shield

Start GDB (GNU Project debugger) with an ELF file to load the symbols (mapping of memory addresses to names)

arm-none-eabi-gdb -ex "target remote localhost:3333" ../build/target/user-part/platform-6-m/user-part.elf
GDB ready to debug

Debug away!