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:
@@ -17,6 +17,12 @@ the IDCODE and BSDL filename change.
|
||||
- For SPI flashing, eventually: a BSCAN proxy bitstream — see the
|
||||
[Phase 2.5 caveat](#phase-25-bscan-proxy) at the end.
|
||||
|
||||
If your board uses a Digilent JTAG-SMT2 / SMT2-NC module (KCU105,
|
||||
ZCU102, …), you need the optional Digilent backend: install the Adept
|
||||
Runtime system-wide and configure with `cmake -DBS_ENABLE_DIGILENT=ON
|
||||
..`. Plain MPSSE does not work on those modules — see the README and
|
||||
the `Digilent SMT2` block in `CLAUDE.md` for the why.
|
||||
|
||||
## Build & launch
|
||||
|
||||
```sh
|
||||
@@ -45,17 +51,21 @@ Ctrl-D or `exit` quits.
|
||||
|
||||
```
|
||||
bs_explorer> jtag_get_probes_list
|
||||
[0] 0x00000000 Digilent USB Device 210308AB06A6
|
||||
[1] 0x00000300 Digilent: JtagSmt2NC
|
||||
```
|
||||
|
||||
Lists each probe the loaded drivers can see. With an FTDI cable
|
||||
plugged in, you should get at least one entry. Pick its index (1-based
|
||||
in the output) and open it:
|
||||
Open a probe by the index in brackets:
|
||||
|
||||
```
|
||||
bs_explorer> jtag_open_probe 1
|
||||
```
|
||||
|
||||
If `jtag_open_probe` fails: check `lsusb` for the FTDI VID:PID, make
|
||||
The `0x…` value next to each index is the raw probe id and is also
|
||||
accepted (`jtag_open_probe 0x300`) — handy in scripts where you'd
|
||||
rather pin the exact backend than rely on enumeration order.
|
||||
|
||||
If `jtag_open_probe` fails: check `lsusb` for the probe VID:PID, make
|
||||
sure the user has access to the USB device (udev rule or group), and
|
||||
confirm no other process holds the probe (e.g. `openocd`).
|
||||
|
||||
@@ -103,7 +113,7 @@ the BSDL state (so `jtag_core` doesn't fight us on IR caching) and
|
||||
shift IDCODE manually:
|
||||
|
||||
```
|
||||
bs_explorer> jtag_open_probe 1
|
||||
bs_explorer> jtag_open_probe 0 # index from jtag_get_probes_list
|
||||
bs_explorer> jtag_init_scan # detects devices, does NOT load BSDL
|
||||
bs_explorer> bscan_set_ir 9 6 # IDCODE opcode (KU15P: 0x09, IR=6 bits)
|
||||
bs_explorer> bscan_shift_dr 32
|
||||
@@ -215,7 +225,7 @@ end-to-end.
|
||||
|---------|--------------|
|
||||
| `jtag_get_probes_list` returns nothing | FTDI not enumerated. Check `lsusb`, udev permissions, conflicting process. |
|
||||
| `jtag_autoinit` finds 0 devices | TDI/TDO swap, TRST held low, voltage mismatch, or chain broken. |
|
||||
| All IDCODEs read `0xFFFFFFFF` | TDO floats high — broken TDO link or wrong voltage reference. |
|
||||
| All IDCODEs read `0xFFFFFFFF` | TDO floats high — broken TDO link, wrong voltage reference, or a Digilent SMT2 module being driven via raw FTDI MPSSE (use the Digilent backend instead). |
|
||||
| All IDCODEs read `0x00000000` | TDO tied low or no clock reaching the target. |
|
||||
| `fpga_info` says "not in registry" | Add the part to `fpga_registry[]`. |
|
||||
| `bscan_shift_dr 32` doesn't return the expected IDCODE | Wrong IR opcode/length, wrong device index, or a multi-device chain (current primitives assume single device). |
|
||||
|
||||
Reference in New Issue
Block a user