4.1 In-System Programming

In-System Programming is performed with the aid of external JTAG programming hardware. Table 4-1 describes the JTAG programming hardware that will program a SmartFusion cSoC and Table 4-2 defines the JTAG pins that provide the interface for the programming hardware.  

Table 4-1. Supported JTAG Programming Hardware
Dongle Source JTAG SWD1 SWV2 Program FPGA Program eFROM Program eNVM
FlashPro3/4SoC Products GroupYesNoNoYesYesYes
ULINK ProKeilYesYesYesYes3Yes3Yes
ULINK2KeilYesYesYesYes3Yes3Yes
IAR J-LinkIARYesYesYesYes3Yes3Yes
Note:
  1. SWD = ARM Serial Wire Debug
  2. SWV = ARM Serial Wire Viewer
  3. Planned support
Table 4-2. JTAG Pin Descriptions
Pin Name Description
JTAGSELARM Cortex®-M3 or FPGA test access port (TAP) controller selection
TRSTBTest reset bar
TCKTest clock
TMSTest mode select
TDITest data input
TDOTest data output

The JTAGSEL pin selects the FPGA TAP controller or the Cortex-M3 debug logic. When JTAGSEL is asserted, the FPGA TAP controller is selected and the TRSTB input into the Cortex-M3 is held in a reset state (logic 0), as depicted in the following figure. Users should tie the JTAGSEL pin high externally.

Microchip’s free Eclipse-based IDE, SoftConsole, has the ability to control the JTAGSEL pin directly with the FlashPro4 programmer. Manual jumpers are provided on the evaluation and development kits to allow manual selection of this function for the J-Link and ULINK debuggers.

Standard ARM JTAG connectors do not have access to the JTAGSEL pin. SoftConsole automatically selects the appropriate TAP controller using the CTXSELECT JTAG command. When using SoftConsole, the state of JTAGSEL is a “don't care.”

Figure 4-1. TRSTB Logic