Enable in-container USB flashing + flash-re-bba-rb skill; find U7 EEPROM undersized
Devcontainer now grants libusb access to the FT2232H so iceprog (bitstream) and pyftdi (FT2232H EEPROM) run inside the container: - devcontainer.json: --privileged + /dev/bus/usb bind mount - Dockerfile: sudo (NOPASSWD for vscode; USB nodes are root-owned), libusb-1.0-0, libftdi1-2, pyftdi Add the flash-re-bba-rb skill documenting the procedure (bitstream via best swept seed, optional EEPROM string, troubleshooting, guardrails) and flash_ftdi_eeprom.py (pyftdi, backup-first, dry-run default) + ftdi_eeprom.conf value spec. Bring-up on the repaired V1 unit: bitstream flash VERIFY OK (iceprog build/seed4/top.bin, capture 58.36 MHz). EEPROM product string CANNOT be programmed on V1 — U7 is a 93LC46B (128 B), too small for the FT2232H, which needs a 93LC56B (256 B); the 128 B chip mirrors and the config write fails verify. This overturns the old REVIEW note "93LC46B = correct for FT2232H" (that only checked ORG, not size). Board still works blank -> ROM defaults; iceprog + UART unaffected. Documented in REVIEW.md + TODO.md (swap U7->93LC56B for V2); flash_ftdi_eeprom.py detects the mirroring and refuses the write. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# FT2232H EEPROM config for the re-bba-rb board (libftdi `ftdi_eeprom`).
|
||||
#
|
||||
# NOTE: the devcontainer does NOT ship the `ftdi_eeprom` binary (debian's
|
||||
# libftdi1-2 is the runtime lib only). Inside the container program the EEPROM
|
||||
# with the pyftdi script instead — it applies the SAME values as this file:
|
||||
# sudo /opt/venv/bin/python hardware/re-bba-rb/flash_ftdi_eeprom.py --commit
|
||||
# This .conf remains the value spec, and works as-is with `ftdi_eeprom` on a host
|
||||
# that has the libftdi tools, or as a reference when using FT_PROG on Windows.
|
||||
#
|
||||
# Purpose: give the on-board FT2232H a product string so the unit shows up as
|
||||
# "re-BBA-rb" instead of the generic "Dual RS232-HS".
|
||||
#
|
||||
# SAFE BY DESIGN — this KEEPS the stock VID/PID (0403:6010) and the default
|
||||
# dual-channel config, so `iceprog` (MPSSE on interface A) and the channel-B
|
||||
# UART keep working exactly as before. Only the descriptor strings change.
|
||||
#
|
||||
# ⚠️ Before writing: back up whatever is there (it should be blank/default):
|
||||
# ftdi_eeprom --device i:0x0403:0x6010 --read-eeprom --to-file eeprom-backup.bin
|
||||
# Then flash the bitstream FIRST and confirm iceprog works; program this
|
||||
# EEPROM only after that's proven (the string is cosmetic).
|
||||
#
|
||||
# Program with:
|
||||
# ftdi_eeprom --device i:0x0403:0x6010 --flash-eeprom ftdi_eeprom.conf
|
||||
# (re-plug the USB afterwards so the host re-reads the descriptors.)
|
||||
|
||||
vendor_id=0x0403 # KEEP 0403 — iceprog/D2XX look for this
|
||||
product_id=0x6010 # KEEP 6010 — FT2232H default; iceprog looks for this
|
||||
max_power=500 # mA; board draws well under this over USB
|
||||
|
||||
manufacturer=hashru # <- your name/org; free text
|
||||
product=re-BBA-rb # <- this is what makes it show as "re-BBA-rb"
|
||||
|
||||
use_serial=true
|
||||
serial=RBBARB001 # <- optional; bump per unit if you want unique serials
|
||||
|
||||
# Bus-powered while flashing over USB (GC not attached). If you ever program
|
||||
# it while powered from SP1 only, this is still fine — it's a hint to the host.
|
||||
self_powered=false
|
||||
remote_wakeup=false
|
||||
|
||||
# Leave the two channels at their FT2232H defaults (UART/serial). MPSSE (used
|
||||
# by iceprog) is a runtime mode on interface A and works regardless, so there
|
||||
# is no need to set cha_type/chb_type here.
|
||||
|
||||
filename=re-bba-rb-eeprom.bin # ftdi_eeprom writes the built image here too
|
||||
Reference in New Issue
Block a user