Libftdi vs FTD2XX
LibFTDI and FTD2XX Licensing
FTD2XX is a proprietary USB driver library developed by Future Technologies Devices International (FTDI), available from http://www.ftdichip.com. LibFTDI is an alternative open source USB driver library available from http://www.intra2net.com/en/developer/libftdi/.
FTD2XX is a closed-source library. A program licensed under the GNU General Public License (such as OpenOCD) cannot be distributed in binary form if linked to FTD2XX during compilation. LibFTDI is licensed under the GNU Lesser General Public License v2.1. Information on LGPL v2.1 is available at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
Speed Comparison with OpenOCD
The following tests were performed with OpenOCD v0.4.0, linked with libFDI and FTD2XX, following the instructions on this wiki. All tests were performed with the TinCanTools Hammer and Flyswatter. Each test consisted of 200 immediately consecutive commands. Commands used were register dumps ('reg' command, 200 times) and single steps ('halt', then 'step' command 200 times, then 'resume'). Commands were sent to OpenOCD through scripts via a telnet client. Each test was performed 10 times; the results below show the average time over 10 tests.
The OpenOCD source was modified to report time elapsed after each command, starting from the first command received. Time was reported with the gettimeofday() function defined in sys/time.h on Linux and redefined for Windows in the OpenOCD source file replacements.c. Note that gettimeofday() does not use a high-precision timer, and very small differences in execution time below do not necessarily reflect a meaningful difference in actual performance. The source modification also disabled the output of the 'reg' command, to prevent the time required to write the contents of 54 registers to the screen (nontrivial on Windows) from eclipsing the time required for OpenOCD to execute the commands.
Note that the data below is only useful got comparing libFDTI and FTD2XX, not to compare each drivers' performance on Windows vs Linux. The Ubuntu installation used in this test was installed inside Windows, which slows it down considerably.
Windows Test
Windows tests were performed on Windows XP64 SP3. These tests show a 13% faster execution time for the 'step' command with the proprietary FTD2XX library. Both performed roughly equally with the 'reg' command.
Test | LibFTDI | FTD2XX |
---|---|---|
reg | 413 ms | 409 ms |
step | 14048 ms | 12384 ms |
Linux Test
Linux tests were performed with Ubuntu 10.04 LTS installed inside Windows. These tests show the 'reg' command as 9% faster with the proprietary FTD2XX library. The 'step' command performed similarly with both libraries.
Test | LibFTDI | FTD2XX |
---|---|---|
reg | 3345 ms | 3074 ms |
step | 49769 ms | 50780 ms |