doc: document Digilent backend and probe-open by index
CLAUDE.md/README/tutorial: optional BS_ENABLE_DIGILENT backend, why SMT2 modules need libdjtg, and the new jtag_open_probe index. Mark phases 2 and 2.5 done.
This commit is contained in:
25
CLAUDE.md
25
CLAUDE.md
@@ -28,7 +28,7 @@ modules/ — Viveris's library (LGPL, unchanged) —
|
||||
├── jtag_core/ TAP state machine, IR/DR shifts
|
||||
├── bsdl_parser/ .bsd loader
|
||||
├── bus_over_jtag/ SPI/I²C/MDIO/parallel mem bit-bang over EXTEST
|
||||
├── drivers/ FTDI, J-Link, Linux GPIO, LPT
|
||||
├── drivers/ FTDI, J-Link, Linux GPIO, LPT, Digilent (optional)
|
||||
├── script/ Script engine (40+ commands, the real UI)
|
||||
├── config/ Built-in config.script
|
||||
├── os_interface/ Portable fs/network wrappers
|
||||
@@ -49,8 +49,8 @@ Adding a feature usually means adding a new script command in
|
||||
| Phase | Module | Status | Summary |
|
||||
|-------|--------|--------|---------|
|
||||
| 1 | `bs/` cleanup, REPL polish, README | **done** (commit `7cb3627`) | Fix format-strings, delete dead code, tab-completion, banner |
|
||||
| 2 | `fpga/` | planned | Per-target descriptor (IDCODE, BSDL, IR codes, proxy path, quirks). Compile-time registry. |
|
||||
| 2.5 | `bscan_spi/` | planned | Load BSCAN proxy bitstream via `CFG_IN`, expose fast `bscan_spi_xfer()` via `USER1`. Required for realistic flashing speeds. |
|
||||
| 2 | `fpga/` | **done** (commit `545fe09`) | Per-target descriptor (IDCODE, BSDL, IR codes, proxy path, quirks). Compile-time registry. |
|
||||
| 2.5 | `bscan_spi/` | **done** (commit `dec0d14`) | Load BSCAN proxy bitstream via `CFG_IN`, expose fast `bscan_spi_xfer()` via `USER1`. Required for realistic flashing speeds. |
|
||||
| 3 | `spi_flash/` | planned | Chip database (JEDEC ID → page/sector/cmd set). Generic `read/erase/program/verify` over either backend. |
|
||||
| 4 | script commands | planned | `flash_detect`, `flash_read/write/erase/verify`. |
|
||||
|
||||
@@ -92,6 +92,21 @@ derived from the BSDL alone:
|
||||
Registry is a compile-time array. Adding a part = one entry + its
|
||||
`.bsd` in `bsdl_files/` + its proxy `.bit` in `bscan_proxies/`.
|
||||
|
||||
### Digilent SMT2 modules need libdjtg, not raw MPSSE
|
||||
|
||||
Several Xilinx dev boards (KCU105, ZCU102, …) embed a Digilent
|
||||
JTAG-SMT2 / SMT2-NC for USB-JTAG. Even though it presents a stock
|
||||
FTDI FT232H over USB (VID:PID 0403:6014), it runs a proprietary
|
||||
firmware that **does not respond to plain MPSSE commands** — TCK
|
||||
toggles but the level-shifters/buffers stay disabled, so TDO floats
|
||||
high ("all ones" symptom). Standard FTDI driver path is dead on these
|
||||
boards.
|
||||
|
||||
Workaround: `modules/drivers/digilent_jtag/` wraps libdjtg/libdmgr
|
||||
(Digilent Adept Runtime). Built only when `-DBS_ENABLE_DIGILENT=ON`,
|
||||
loaded via `dlopen` at runtime — no Digilent binary or header in the
|
||||
repo. End-user just needs the Adept Runtime package installed.
|
||||
|
||||
### Xilinx caveats
|
||||
|
||||
On 7-Series / UltraScale / UltraScale+, `CCLK` is not a regular I/O
|
||||
@@ -123,6 +138,10 @@ mkdir build && cd build && cmake .. && make
|
||||
./bs/bs # interactive REPL
|
||||
```
|
||||
|
||||
For Digilent SMT2-based boards, configure with
|
||||
`cmake -DBS_ENABLE_DIGILENT=ON ..` and install the Adept Runtime
|
||||
system-wide (provides `libdjtg.so` + `libdmgr.so`).
|
||||
|
||||
No automated tests yet. Smoke test = banner appears, `exit` works.
|
||||
After changes touching `jtag_core`, `drivers/ftdi_jtag`, or the
|
||||
`autoinit` flow, manual hardware test required: probe + KU15P board
|
||||
|
||||
Reference in New Issue
Block a user