doc: explain what a JEDEC ID is
The bscan_jedec command and tutorial referenced the JEDEC ID without defining it. Describe the 0x9F RDID command and the manufacturer + device byte layout, in the tutorial and the command help.
This commit is contained in:
@@ -233,10 +233,24 @@ part is wiped and replaced by the proxy. This is undone by a
|
|||||||
power-cycle (the configuration flash reloads the original design at the
|
power-cycle (the configuration flash reloads the original design at the
|
||||||
next boot), but be aware the board stops doing whatever it was doing.
|
next boot), but be aware the board stops doing whatever it was doing.
|
||||||
|
|
||||||
`bscan_jedec` issues `0x9F` + 3 read bytes through the proxy. A sane
|
`bscan_jedec` issues the SPI **Read Identification** command (`0x9F`,
|
||||||
answer (here `0x20` = Micron, the KCU105's config flash) confirms the
|
also called RDID) and reads back 3 bytes — the chip's *JEDEC ID*. JEDEC
|
||||||
whole proxy path end to end: the `bscan_spi_xfer()` framing, the
|
is the standards body (JESD216 / JEP106) that defines this identifier;
|
||||||
MSB-first bit order, and the TDO read-latency skew.
|
every serial flash answers `0x9F` the same way:
|
||||||
|
|
||||||
|
- **byte 0** — manufacturer, a code assigned by JEDEC (`0x20` Micron,
|
||||||
|
`0xEF` Winbond, `0xC2` Macronix, `0x01` Cypress/Infineon, `0x9D`
|
||||||
|
ISSI, …);
|
||||||
|
- **bytes 1–2** — device ID (memory type + capacity), vendor-specific.
|
||||||
|
|
||||||
|
So the JEDEC ID is how you discover *which* flash is wired up without
|
||||||
|
prior knowledge — Phase 3 will use it to look the part up in a chip
|
||||||
|
database and pull its page/sector sizes and command set.
|
||||||
|
|
||||||
|
A sane answer here (manufacturer `0x20` = Micron, the KCU105's config
|
||||||
|
flash) also confirms the whole proxy path end to end: the
|
||||||
|
`bscan_spi_xfer()` framing, the MSB-first bit order, and the TDO
|
||||||
|
read-latency skew.
|
||||||
|
|
||||||
### The transfer primitive
|
### The transfer primitive
|
||||||
|
|
||||||
|
|||||||
@@ -2954,6 +2954,8 @@ static int cmd_bscan_load_bitstream(script_ctx *ctx, char *line)
|
|||||||
const char *cmd_bscan_jedec_help[] = {
|
const char *cmd_bscan_jedec_help[] = {
|
||||||
"<device>",
|
"<device>",
|
||||||
"Read the SPI flash JEDEC ID (0x9F) through the loaded BSCAN proxy.",
|
"Read the SPI flash JEDEC ID (0x9F) through the loaded BSCAN proxy.",
|
||||||
|
"JEDEC ID = 1 manufacturer byte (e.g. 0x20 Micron) + 2 device bytes;",
|
||||||
|
"identifies which flash chip is wired to the FPGA.",
|
||||||
"Requires a proxy bitstream already loaded (bscan_load_bitstream).",
|
"Requires a proxy bitstream already loaded (bscan_load_bitstream).",
|
||||||
""};
|
""};
|
||||||
static int cmd_bscan_jedec(script_ctx *ctx, char *line)
|
static int cmd_bscan_jedec(script_ctx *ctx, char *line)
|
||||||
|
|||||||
Reference in New Issue
Block a user