annotate doc/Icestick-instructions @ 39:b9ecfa54fe2b

fc-duart28-conf: replace find and check-eeprom with single show command The original design with separate find and check-eeprom commands was driven by the assumption that we had to bump off the ftdi_sio driver in order to read the EEPROM, while a USB device tree check could be done non-invasively. However, now that we know that we can read the EEPROM non-invasively too, we can simplify the tool with a single show command.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 10 Sep 2023 19:21:20 +0000
parents 6bf063ade588
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 If you have a Lattice iCEstick FPGA board (ICE40HX1K-STICK-EVN) and you wish to
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 program its FT2232H subsystem EEPROM with a sensible configuration that results
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 in the Linux kernel ftdi_sio driver leaving Channel A untouched and creating a
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 single ttyUSB device for Channel B, follow these instructions:
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 1) Plug your iCEstick board into your PC/laptop or other Linux host, and run
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 lsusb. There should be one particular line in lsusb output that reads like
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 this:
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 Bus 001 Device 014: ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 or perhaps like this on older systems:
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 Bus 001 Device 014: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 Bus and device numbers will be different on your system, but the important part
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 is ID 0403:6010 - it is the default USB ID of FT2232x chips that appears when
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 no custom ID has been assigned via the EEPROM.
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 2) Ensure that you don't have any other USB devices with ID 0403:6010 - given
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 that it is the chip's default, lots of devices use it!
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 Make sure that there is only one line in lsusb output that reads ID 0403:6010.
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 Unplug your iCEstick and make sure that this line disappears. Plug it back in
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 and make sure the line reappears.
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 3) Once you are sure that you won't hit some other USB device using the same
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 popular ID code, execute this programming command pipeline:
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 ftee-gen2232h -b icestick | fteeprom-prog i:0x0403:0x6010
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 This shell pipeline is a little long and looks complicated, but it must be
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 issued exactly as listed above. The first part of the pipeline generates an
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 image for an FT2232H chip (ftee-gen2232h) with 93C56 EEPROM (-b option) based
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 on standard (shipped with fc-usbser-tools) configuration named "icestick"; the
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 second part of the pipeline sends physical EEPROM write commands (USB control
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 endpoint requests, FTDI-specific) to the USB device matching the given ID.
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 4) Unplug and replug the iCEstick for the EEPROM change to take effect. Run
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 lsusb again and note that the USB ID is now 0403:7150 instead of 0403:6010 -
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 still within FTDI's vendor ID, but with a specific, non-default product ID
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 code.
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 With the new ID the Linux kernel ftdi_sio driver should create a ttyUSB device
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 only for FT2232H Channel B, which is the UART channel for talking to user logic
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 inside the FPGA. I (Mother Mychaela) also recommend that you create an
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 iceprog-7150 wrapper around the standard iceprog utility from IceStorm toolkit,
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 in the form of a shell script like this:
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 #!/bin/sh
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 exec /usr/local/bin/iceprog -d i:0x0403:0x7150 "$@"
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 It looks like Claire (the author of IceStorm) was not as bothered as I am by
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 the bogosity of a ttyUSB device for the MPSSE channel that appears on plug-in
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 but then disappears once you run a userspace program that exercises MPSSE via
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 libftdi: she coded iceprog to look for 0403:6010 in the absence of a -d option
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 giving a custom device selector string, rather than doing something similar to
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 what I did. With standard iceprog being as it is, we need to run it with this
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 -d option when we have programmed the FT2232H EEPROM to use a more sensible USB
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 ID, and in my opinion the most sane way to supply this needed option is via a
6bf063ade588 doc/Icestick-instructions: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 wrapper as recommended above.