These notes summarize the changes in this fork compared with upstream
trabucayre/openFPGALoader.
Comparison baseline:
- Upstream remote checked:
https://github.com/trabucayre/openFPGALoader.git - Fork merge base:
d52abf7059d4471957775c3ed067437715174dd5 - Current fork head inspected:
9092deec Working with Lattice - Upstream master inspected:
c8452092f9a31b1bfe8f2e09beadf2d0cc51e3f2 - Fork commits on top of the merge base: 23, plus current local working-tree changes
- Added Windows-focused build, packaging, and deployment support.
- Added Docker-based native Linux deployment support.
- Added and improved Xilinx Platform Cable USB / XPCU support, including firmware handling and debug controls.
- Added ISE-derived Xilinx FX2 firmware files and Spartan-6 SPI bridge
.corfiles. - Improved Spartan-6 external SPI flash workflows through Xilinx JTAG bridges.
- Added external SPI flash discovery, forced flash type selection, flash listing, and safer dump behavior.
- Added Lattice MachXO2/MachXO3 internal Flash/NVCM dump and erase support.
- Added support and troubleshooting for
LCMXO3LF-9400C. - Added support for Macronix
MX77L25650F, including observed RDID alias0x77b80a.
- Added Docker-based cross-Windows build support.
- Added
docker-compose.cross-windows.yml. - Added
docker/cross/windows/alpine.Dockerfile. - Added
docker/cross/windows/toolchain-mingw64.cmake. - Added
scripts/docker-cross-windows.sh. - Added
DOCKER_CROSS_WINDOWS.mdandDEPLOYMENT.md. - Added GitHub workflow support for binary builds in
.github/workflows/build-binaries.yml. - Added
CMakePresets.jsonwith Windows debug presets. - Updated CMake install logic to package additional bridge and firmware assets.
- Added Alpine-based Docker deployment support for native Linux builds.
- Added
docker-compose.deploy-linux.yml. - Added
docker/deploy/linux/alpine.Dockerfile. - Added
scripts/docker-linux-deploy.sh. - Added
DOCKER_DEPLOY_LINUX.md. - The Linux deploy package writes artifacts to
dist/docker-linux/. - The Linux tarball includes the installed binary, bridge assets, Spartan-6
.corfiles, optional Xilinx.hexfirmware, udev rules, and a build manifest withfileandlddoutput.
- Added and expanded the
xilinxPlatformCableUSBbackend. - Added alternate cable identities, including cold-loader and initialized XPCU paths.
- Added firmware selection for Xilinx Platform Cable USB variants.
- Added CLI options:
--probe-firmware
--skip-probe-firmware-upload
--xpcu-direct-xp2-firmware
- Added packaged Xilinx USB firmware files:
ise_programmer_bins/xusb_emb.hex
ise_programmer_bins/xusb_xlp.hex
ise_programmer_bins/xusb_xp2.hex
ise_programmer_bins/xusb_xp2_loader.hex
ise_programmer_bins/xusb_xpr.hex
ise_programmer_bins/xusb_xse.hex
ise_programmer_bins/xusb_xup.hex
ise_programmer_bins/xusbdfwu.hex
- Added
scripts/extract-xusb-loader-from-sys.ps1for extracting loader firmware from the Xilinx driver. - Added firmware lookup through packaged share data and environment/configurable paths.
- Added retry and recovery handling for XPCU USB control and bulk transfers.
- Added XPCU endpoint discovery and environment override support.
- Added control-bitbang fallback and accelerated-transfer setup paths.
- Improved XPCU debug output, status reporting, and transfer diagnostics.
- Added technical XPCU documentation:
XILINX_PLATFORM_CABLE_USB_WINDOWS.md
docs/xilinx-platform-cable-usb-technical-reproduction.md
docs/xilinx-platform-cable-usb-windows-debug.md
docs/diagrams/xpcu-firmware-state-machine.mmd
docs/diagrams/xpcu-firmware-state-machine.svg
- Added
.corbridge-file support. - Added ISE-derived Spartan-6 SPI bridge
.corfiles under:
spiOverJtag/from_ise/spartan-6/
- Added automatic Spartan-6
.corbridge lookup by FPGA model. - Improved Xilinx external flash code paths for Spartan-6 targets.
- Added bridge handling for
.bit,.bit.gz, and.corinputs. - Improved external flash write and dump handling through Xilinx JTAG-to-SPI bridges.
- Added troubleshooting and investigation notes:
docs/digilent-hs3-vs-xpcu-dump-flash-codepath.md
docs/spartan6-hs3-m25p40-write-stall.md
docs/spartan6-xpcu-spi-debug-log.md
- Added
--detect-external-flashto detect/display external SPI flash chip information. - Added
--external-flash-typeto force an SPI flash by JEDEC ID or model name. - Added
--list-flashto list supported SPI flash chips. - Added automatic dump size calculation for known SPI flash chips.
- When
--file-sizeis omitted or set to0, SPI flash dump now reads from the selected offset to the end of the detected flash. - Improved dump failure handling:
- invalid zero-size dumps are rejected
- short writes are detected
- close errors are detected
- failed partial dump files are removed
- dump failures propagate to the process exit status
- Added support for Macronix
MX77L25650F:
canonical JEDEC ID: 0xc27519
observed alias: 0x77b80a
capacity: 256 Mbit / 32 MiB
layout: 512 x 64 KiB sectors
- Documented the difference between Lattice internal Flash/NVCM and external SPI flash programming paths.
- Added
LCMXO3LF-9400Csupport details and troubleshooting. - Improved MachXO3LF-9400C JEDEC handling for Diamond-generated files with trailing all-zero
TAG DATA. - Added density layout handling for the 9400 device:
CFG pages: 12539
UFM pages: 3582
page size: 16 bytes
total internal dump size: 257936 bytes
- Added internal Flash/NVCM dump support for MachXO2, MachXO3L, and MachXO3LF.
- For these devices,
--dump-flashnow uses Lattice ISC/JTAG readback instead of the external SPI flash path. - Internal dumps contain CFG data followed by UFM data.
Examples:
openFPGALoader -c ft2232 --dump-flash machxo_internal.bin
openFPGALoader -c ft2232 --dump-flash -o 0x1000 --file-size 0x2000 machxo_window.bin- Added internal erase support for MachXO2, MachXO3L, and MachXO3LF.
- For these devices,
--bulk-erasenow uses the Lattice ISC erase flow. - Added internal sector selection using
--flash-sector.
Supported internal erase sectors:
CFG
UFM
FEATURE
SRAM
ALL
Examples:
openFPGALoader -c ft2232 --bulk-erase
openFPGALoader -c ft2232 --bulk-erase --flash-sector CFG
openFPGALoader -c ft2232 --bulk-erase --flash-sector UFMWarning: ALL also erases feature bits and SRAM. Feature bits control configuration behavior and port enables.
- Started adding Arria 10-related support.
- Added additional ARM/JTAG chain handling notes and IDs.
- Updated FPGA support metadata in
doc/FPGAs.ymlandsrc/part.hpp.
- Added or improved USB scan support.
- Added probe selection by USB bus/device number.
- Added improved cable/debug/error helper messages.
- Improved lower-level JTAG and FX2 diagnostics.
- Added helper behavior around firmware upload, re-enumeration, and initialized cable states.
- Added Windows Xilinx Platform Cable USB setup notes.
- Added deployment and Docker cross-build guides.
- Added external flash and XPCU debug writeups.
- Added Lattice programming, dumping, erasing, and troubleshooting sections.
- Added
DEVICE_SUPPORT_CHAT.md. - Added
doc/ug380.pdfas a local Xilinx reference document.
- Added
externals/libwdi. - Added
externals/xilinx-usb-driver. - Added
.gitmodules. - Added local ISE programmer firmware files.
- Added Spartan-6 ISE SPI bridge
.corfiles.
Fork commits inspected:
11121421 Add docker based deploy system
71861c85 Before changes, fail to find .bin.gz file
656923b3 Works the flash to the external flash
8ce446b4 Start working the xilinxPlatformCableUsb_alt
12587878 try to fix things to achieve to communicate with spartan-6
30dd3066 Start to add aria 10 and virtex-4 support
316e308a Add zadig as submodule
1821cac7 Update libwdi and add xilinx-usb-driver as submodule
5ec5c920 Seems like fixed the xilinxPlatformCableUsb driver/handling
8b415083 Update docs
f9c7fef9 Add programmer interfaces hexes direct from ise 14.7
3720ce23 Fix platform cable usb 2 with the right hex files
193f0597 Add more detailed documentation
9da1797f now see virtex-4
55e4c145 Update submodule
12816a00 Add more debug/error helper message
7150b898 Now with bitbang 0 works with artix-7 the xilinxPlatformCableUsb
07b1cd45 Add external flash detection and list out functionalities
b6be6104 Add .cor support
1dbfcbec ehh
735992e1 Add docs
ed38f8ed Improve XPCU reliability and Spartan-6 external flash support
9092deec Working with Lattice
This file summarizes both committed fork changes and the current local working-tree changes at the time it was generated. Re-run the upstream comparison before publishing a final release if more commits are added.