Simple instructions from All About Circuits for using a FT2232H breakout board to flash ARM MCUs – in this case a Cortex-M3 (EFM32G200F32) is demonstrated.
Old MCUs from vendors like ATMEL and MICROCHIP, like the PIC16F and Atmega family, tend to have a special programming interface to program internal flash. For example, Atmega used SPI pins (MISO, MOSI, SCK) and PIC used two pins (PGC, PGD)— one as a clock and another as a bi-directional data line.
New MCUs, especially with an ARM core, use JTAG/SWD as a programming/debugging interface.
What is the difference between Joint Test Action Group (JTAG) and Serial Wire Debug (SWD)? The answer is that SWD was created as an alternative to JTAG to save pins in the MCU package: SWD replaces the 5-pin JTAG interface with one that’s only 2-pin.
To communicate with our target chip, we need a program on the host and hardware as a bridge between the host and the chip. In this tutorial, we will use OpenOCD as the program on the host to send commands and communicate using SWD. We’ll use an FT2232H as the bridge to translate signals from the USB port to the SWD interface.