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 Windows toolchain installer from the community forum.
- Download Zadig to C:\Particle\Zadig\
- Install openocd compiled for Windows to C:\Particle\openocd\
- Download the Particle debugger config file particle-ftdi.cfg and copy it to C:\Particle\openocd\bin-x64\
- Copy C:\Particle\openocd\scripts\target\stm32f2x.cfg to C:\Particle\openocd\bin-x64\
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

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

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
bash
make clean all program-dfu PARTICLE_DEVELOP=1 PLATFORM=photon USE_SWD_JTAG=y

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"

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
