JTAG DirectC is a Linux command-line programmer for Microchip PolarFire and PolarFire SoC devices. It supports two JTAG hardware backends: gpio through libgpiod on a BeagleBone Black or Raspberry Pi, and ftdi through FT2232 MPSSE. It supports device programming, verification, device information, security actions, and selected SPI Flash operations.
The default all build contains both backends. The runtime interface is selected with --interface gpio or --ftdi; omitting the option selects GPIO.
-
Connect the controller board to the target JTAG programming header as described in Hardware Setup.
-
Install the dependencies for the selected backend as described in Build and Installation.
-
Generate a DAT file with Libero SoC.
-
Build the application with both runtime backends:
make
-
Confirm the target IDCODE through the default GPIO backend:
./directc_jtag -a read_idcode programmingfile.dat
-
Program and verify the device:
./directc_jtag -a program programmingfile.dat ./directc_jtag -a verify programmingfile.dat
The action may be given as -a <action>, as --action <action>, or with the legacy attached form -a<action>.
To select FTDI at runtime with the same combined executable:
./directc_jtag --ftdi -a read_idcode programmingfile.dat- Getting Started
- Hardware Setup
- Build and Installation
- CLI Reference
- DAT Files
- SPI Flash Operations
- Security Actions
- Troubleshooting and Error Codes
- Development Guide
- Microchip PolarFire and PolarFire SoC targets supported by the bundled DirectC algorithms
- BeagleBone Black
- Raspberry Pi 2 and newer models, subject to the GPIO and device-tree requirements
- FT2232-based JTAG adapters using the documented Microsemi adapter wiring
- Selected Cypress/Spansion S25F SPI Flash devices through the target's JTAG SPI programming port
See SPI Flash Operations for the supported JEDEC IDs and limitations.
- A filename is currently required for every command, including IDCODE-only actions.
- The DAT file is loaded into memory in its entirety.
- GPIO platform detection is limited to recognized BeagleBone and Raspberry Pi device-tree strings.
- The CLI help lists actions globally, but the target device and DirectC algorithm determine which actions are actually supported.
zeroize_unrecoverableis destructive and must only be used after confirming the target device and intended security operation.- The program prints the DirectC operation result, but its process exit status does not yet reliably propagate every hardware-operation failure. Use the displayed error code when diagnosing failures.
This project is distributed under the MIT License. See LICENSE.