FreeCalypso > hg > freecalypso-hwlab
comparison doc/Unbuffered-FT2232x-JTAG @ 80:1d38af6d7be8
0403:7151 USB ID support in mainline Linux
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 13 Oct 2020 04:29:10 +0000 |
parents | 96232f00bc9c |
children | bbeec8f293dc |
comparison
equal
deleted
inserted
replaced
79:026dd69e4ebb | 80:1d38af6d7be8 |
---|---|
79 allocated by FTDI to our company for use in products based on FTDI chips. And | 79 allocated by FTDI to our company for use in products based on FTDI chips. And |
80 because we can spare one PID for a worthy cause, one of these PIDs (0403:7151) | 80 because we can spare one PID for a worthy cause, one of these PIDs (0403:7151) |
81 is hereby being donated to the community for use on generic FT2232x boards in | 81 is hereby being donated to the community for use on generic FT2232x boards in |
82 the unbuffered JTAG adapter configuration. | 82 the unbuffered JTAG adapter configuration. |
83 | 83 |
84 As of this writing, this 0403:7151 PID has not been submitted to Linux ftdi_sio | 84 Support for this 0403:7151 USB ID has been added to Linux ftdi_sio driver in |
85 kernel maintainers yet, thus if you program it into your FT2232x EEPROM | 85 2020-09 with this commit: |
86 following the instructions below, the kernel will leave that FT2232x device | 86 |
87 completely alone. If you are interested only in JTAG and don't need an extra | 87 https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git/commit/?id=6cf87e5edd9944e1d3b6efd966ea401effc304ee |
88 UART on Channel B, this arrangement should be fully sufficient - you simply | 88 |
89 configure your OpenOCD in userspace to find your unbuffered and ad-hoc-wired | 89 This commit is not included in Linux 5.9, but is expected to appear in the |
90 JTAG adapter at that USB ID. And if you do need the UART on Channel B, you can | 90 mainline tree as of 5.10-rc1. If your Linux kernel version (or rather ftdi_sio |
91 trivially patch your ftdi_sio.c kernel driver, adding the new ID to the table | 91 driver version if it's a module) includes this commit, the ftdi_sio driver will |
92 with JTAG quirk (&ftdi_jtag_quirk) specified. | 92 create a ttyUSB device for Channel B, allowing that channel to function as a |
93 UART if desired, but Channel A will be left alone by the kernel driver, reserved | |
94 for userspace applications like OpenOCD. If your kernel/driver version does not | |
95 include the newly added commit, both FT2232x channels will be left alone by the | |
96 kernel driver, i.e., no ttyUSB devices will be created. If you are interested | |
97 only in JTAG and don't need an extra UART on Channel B, it should not matter | |
98 whether your ftdi_sio driver knows about the new custom USB ID or not - you | |
99 simply configure your OpenOCD in userspace to find your unbuffered and ad-hoc- | |
100 wired JTAG adapter at USB ID 0403:7151. If you do need the UART on Channel B | |
101 but your Linux kernel version does not include the recent addition, you will | |
102 need to manually apply the trivial patch from the commit linked above. | |
93 | 103 |
94 Choice of FT2232x breakout board | 104 Choice of FT2232x breakout board |
95 ================================ | 105 ================================ |
96 | 106 |
97 Here at FreeCalypso HQ we make very extensive use of FT2232C/D breakout boards | 107 Here at FreeCalypso HQ we make very extensive use of FT2232C/D breakout boards |
98 by PLDkit, and I officially recommend and endorse this vendor: | 108 by PLDkit, and I officially recommend and endorse this vendor: |
99 | 109 |
100 http://pldkit.com/other/ft2232d-module | 110 http://pldkit.com/other/ft2232d-module |
101 | 111 |
102 These modules were originally made with FT2232D chips, then the vendor found a | 112 These modules were originally made with FT2232D chips, then the vendor found a |
103 stash of old but still good FT2232C chips, so apparently the current ones are | 113 stash of old but still good FT2232C chips, and some modules were made with these |
104 FT2232C, not D - but this distinction makes no difference for the present | 114 FT2232C chips. Now it looks like the vendor has gone back to FT2232D - but this |
105 purpose. | 115 distinction makes no difference for the present purpose. |
106 | 116 |
107 These days FT2232H chips and FT2232H breakout boards are much more popular, but | 117 These days FT2232H chips and FT2232H breakout boards are much more popular, but |
108 I generally prefer FT2232C/D for classicness and simplicity. Additionally, | 118 I generally prefer FT2232C/D for classicness and simplicity. Additionally, |
109 FTDI's AN_184 document lists I/O pin behaviour of various FTDI chips including | 119 FTDI's AN_184 document lists I/O pin behaviour of various FTDI chips including |
110 FT2232D and FT2232H; according to this document FT2232H I/O pins go through a | 120 FT2232D and FT2232H; according to this document FT2232H I/O pins go through a |
136 directory of this code repository: | 146 directory of this code repository: |
137 | 147 |
138 fteeprom/ftee-gen2232c eeproms/jtag-unbuf | fteeprom/fteeprom-prog i:0x0403:0x6010 | 148 fteeprom/ftee-gen2232c eeproms/jtag-unbuf | fteeprom/fteeprom-prog i:0x0403:0x6010 |
139 | 149 |
140 Then unplug and replug the FT2232D board, and it should come back with the new | 150 Then unplug and replug the FT2232D board, and it should come back with the new |
141 0403:7151 USD ID. If you wish to bring it back to its original blank-EEPROM | 151 0403:7151 USB ID. If you wish to bring it back to its original blank-EEPROM |
142 state, you can do so by erasing the EEPROM: | 152 state, you can do so by erasing the EEPROM: |
143 | 153 |
144 fteeprom-erase i:0x0403:0x7151 | 154 fteeprom-erase i:0x0403:0x7151 |
145 | 155 |
146 Wire connections | 156 Wire connections |