Commit Graph

10 Commits

Author SHA1 Message Date
4d0637e997 digilent: heap-allocate shift buffers, drop the size cap
The TX/TXRX functions used fixed ~1-2 KB stack buffers and rejected
anything larger, so any big shift failed: bscan_idle_cycles(10000) and
above all the ~19 Mbit bitstream load for the BSCAN proxy. Size the
pack/capture buffers to the shift on the heap instead.

This is what unblocked the proxy load — see next commit.
2026-05-24 00:04:31 +02:00
952c010c63 script: shorten jtag_* command names
Drop the get_/set_/_pin/_list noise from the JTAG commands (e.g.
jtag_get_probes_list -> jtag_probes, jtag_set_spi_cs_pin -> jtag_spi_cs,
jtag_spi_rd_wr -> jtag_spi_xfer). jtag_open_probe -> jtag_open (not
jtag_probe, which would clash with jtag_probes under tab-completion).

Hard rename, no aliases. Updates the state-dump emitter, help text,
example script and docs accordingly.
2026-05-23 16:33:23 +02:00
45929c732e digilent: free device enumeration after Detect
DmgrEnumDevices builds an internal device table that must be released
with DmgrFreeDvcEnum, otherwise a second enumeration (e.g. opening a
probe by index, which re-runs Detect) fails.
2026-05-23 12:07:04 +02:00
7d0b19ec25 digilent: implement TX_TMS / TXRX_DATA + lazy Detect from Init
TMS-only shifts go through DjtgPutTmsBits with TDI held to 0. Pure data
shifts use DjtgPutTdiBits with TMS held to 0. Mixed shifts (e.g. last
bit of Shift-IR/DR with TMS=1) fall back to DjtgPutTmsTdiBits — note
that within each pair the encoding is TDI(low) then TMS(high),
LSB-first, despite the function name (verified against the SDK
DjtgDemo sample).

Init also gained a lazy call to Detect: jtag_open_probe can be invoked
without first running jtag_get_probes_list.

Validated on KCU105: jtag_autoinit returns IDCODE 0x13822093
(XCKU040 rev1) through the Digilent SMT2-NC.
2026-05-23 11:19:52 +02:00
9ac794e36c digilent: implement Init / DeInit
DmgrOpen + DjtgEnable + DjtgSetSpeed at 4 MHz (Adept rounds to the
nearest supported, e.g. 3.75 MHz on SMT2-NC). DeInit does the reverse.

An atexit hook also forces Close on process shutdown — leaving an open
HIF when libdjtg's C++ static destructors run triggers "pure virtual
method called".
2026-05-23 11:14:17 +02:00
09708177b7 digilent: dlopen libdjtg/libdmgr + implement Detect
Loads the Adept .so files lazily and resolves the symbols we need.
Detect() enumerates devices via DmgrEnumDevices/DmgrGetDvc and exposes
each as a Viveris probe slot. If Adept Runtime is missing, the driver
silently reports 0 probes.
2026-05-23 11:10:58 +02:00
78f6bb9b34 digilent: add driver skeleton + CMake option BS_ENABLE_DIGILENT
Stub Digilent JTAG-SMT backend, off by default. Wiring only: option,
conditional sources, dl link, drivers_list registration. Detect()
returns 0 for now; dlopen + real implementation in follow-up commits.
2026-05-23 11:06:43 +02:00
François Dausseur
5dfe5b123e compiles and works 2025-02-18 11:36:18 +01:00
c8bda25d90 code refactoring 2025-02-16 19:32:01 +01:00
a61fe778e6 dirs refactoring 2025-02-16 12:38:13 +01:00