The story about the uniJTAG
After a couple of weeks designing, and deciding how the layout should, we ordered a couple of PCBs to test.
This friday we recieved the PCBs and soldered the first prototype. The soldering went fine, except a minor mistake with the packaging of the ordered Atmel EEProm. After bending some of the EEProm leads, everything was soldered and we were ready to test.
When we connected the uniJTAG the first time, it enumerated, and 4 devices was identified – two serial ports, and two USB Serial Converters.
With the FT_Prog tool from FTDI we changed the settings stored in the EEProm to 1 JTAG device (245 FIFO+MPSSE) and 1 Serial device (232 UART).
Then we started researching on the software part – looking at datasheets, codes and other examples done with the FT2232 chip.
FTDI had a couple of DLL’s which could be used to talk to the FT2232. After a couple of hours we finally had a BitBanger application, made in Visual Basic .NET, using the D2XX.dll from FTDI!
This worked pretty well, so now for the JTAG part.
JTAG seemed a bit more difficult than BitBanging, even though FTDI had the FTCJTAG.dll for the JTAG protocol part. So after a search on Google, we ended up trying OpenOCD.
It was pretty difficult to get OpenOCD running, as we are running a 64-bit version of Windows. First thing to notice is that OpenOCD is open source, but is going to be build before it can be used. On a Windows machine this can be pretty tough, as you have to use Cygwin. Though we found an already build version of OpenOCD including the open source FTDI driver – both 32-bit and 64-bit.
The open source driver is used instead of the original FTDI driver, so we had to uninstall the FTDI driver in Device Manager, and then install the open source driver instead.
Many hours later we finally had OpenOCD working with our own interface configuration, matching the uniJTAG. We connected the JTAG port to one of our LPC boards and made quick chain scan.
Success, it found our LPC1766 device – now for programming. A couple of commands later the LED connected to our LPC board started blinking – programming succeeded.
We have tried scanning an FPGA JTAG chain with success, though we haven’t tried programming FPGA’s with the uniJTAG yet.
Now there is only one big thing left; to check if it’s possible to use the original driver and the FTCJTAG.dll and our own software.