Replace Python tools/dlc10_jtag.py with a pure-Rust driver using rusb (per Article II of the dePIN constitution: Rust only, no .sh, no Vivado, no proprietary toolchain).
What this delivers
- New crate
cli/dlc10: library + binary implementing DLC10 control-transfer + JTAG state machine
- Embeds Cypress FX2 firmware (
xusb_xp2.hex) and bscan_spi proxy bitstream (MIT, quartiq) via include_bytes!
- Subcommands:
idcode, sram <bitfile>, program <bitfile> (SPI flash)
- Rewrite
cli/flash-spi to call dlc10::Dlc10::program_flash directly (drops openFPGALoader dependency — DLC10 was never supported there)
Status
Refs
Replace Python tools/dlc10_jtag.py with a pure-Rust driver using rusb (per Article II of the dePIN constitution: Rust only, no .sh, no Vivado, no proprietary toolchain).
What this delivers
cli/dlc10: library + binary implementing DLC10 control-transfer + JTAG state machinexusb_xp2.hex) and bscan_spi proxy bitstream (MIT, quartiq) viainclude_bytes!idcode,sram <bitfile>,program <bitfile>(SPI flash)cli/flash-spito calldlc10::Dlc10::program_flashdirectly (dropsopenFPGALoaderdependency — DLC10 was never supported there)Status
cargo run -p dlc10 -- idcodereturns 0x13631093 (XC7A100T) on hardwarecargo run -p dlc10 -- sram heartbeat.bit— DONE bit stays LOW (under debug)cargo run -p dlc10 -- program target.bit(SPI flash + power-cycle verify)Refs