FreeCalypso > hg > fc-usbser-tools
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 |
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. |