Hello,

On Mon, Feb 02, 2015 at 07:00:45PM +0200, Liviu Ionescu wrote:
> I checked the latest openocd.pdf manual (Feb 2), and at page 42 the
> olimex-jtag is listed below the ft2232_layout command.

Right, because the legacy ft2232 driver supports Olimex adapters. It
doesn't mean though that it's the most appropriate driver.

The OpenOCD project declared ft2232 driver deprecated in

http://openocd.zylin.com/gitweb?p=openocd.git;a=commitdiff;h=09e9625d6ce52bbed271c1087df58fb3bb78b99a

discussion took place on http://openocd.zylin.com/#/c/1899/ . The
official manual has this note: "Note that this driver has several
flaws and the @command{ftdi} driver is recommended as its replacement"
right at the beginning of the ft2232 driver description.

I thought we made sure nobody would get confused thanks to
configure-time and runtime warnings, but apparently we failed. But
where? What makes people explicitly enable _legacy_ driver and not
paying any attention to the runtime warnings emitted every time they
are using ft2232? I'd really like to understand how exactly that
happens to fix whatever is broken here.

> I also checked the Olimex documentation
> (https://www.olimex.com/Products/ARM/JTAG/_resources/ARM-USB-OCD_and_OCD_H_manual.pdf)
> and at page 13 it is clearly stated:
>
> "Please note that since OpenOCD 0.8.0 FTDI drivers are recommended!
> It was quite the opposite before 0.8.0 when LibUSB drivers were
> suggested as default.

Unfortunately, it looks like Olimex didn't ask anybody who knows the
current situation when they were writing this. Moreover, the cited
text is really strange! There's no notion of "FTDI drivers" at all,
and there's no "LibUSB drivers" either. The legacy ft2232 driver (in
OpenOCD terminology) was using libftdi which was using libusb-0.1 or
libusb-1.0 (for libftdi1) API with libraries (not driver) which were
using the in-kernel USB support directly (without device drivers in
kernel terminology) on every system apart from windows where
libusb-0.1 API is usually provided by libusb-win32 library and
_driver_ (in kernel terminology) and libusb-1.0 API is provided by the
libusb library which uses either WinUSB or libusbK.sys _driver_ (in
kernel terminology). The new "ftdi" driver (in OpenOCD terminology) is
using libusb-1.0 API directly, so it goes via in-kernel USB core
driver (in kernel terminology) on all systems but windows (where
WinUSB or libusbK.sys kernel driver needs to be installed for the
specific device).

> If you are going for FTDI driver support:
>
> ./bootstrap
> ./configure --enable-ftdi --enable-ft2232_ftd2xx

That doesn't work with 0.8.0 and higher since the
--enable-ft2232_ftd2xx option was renamed to embed _legacy_ in it to
avoid confusion. Also, --enable-ftdi doesn't do much because if
libusb-1.0 development files are present in the OS, it will get
auto-enabled, and if not, ./configure will emit an error.

Also, even though the deprecated ft2232 driver can be built against
ftd2xx proprietary FTDI library (which requires proprietary D2XX
kernel driver on windows) it's not recommended because the resulting
binaries can't be legally distributed at all. And ftd2xx is not any
better than libftdi1 anyway.

> ./bootstrap
> ./configure --enable-maintainer-mode --enable-ft2232_libftdi

--enable-maintainer-mode was removed before 0.8.0 release as it's a
useless option. --enable-ft2232_libftdi was renamed for the reasons
outlined above.

> On the other hand you say that adding any --enable-ftdi* is no
> longer necessary in the configure step for any devices except USB
> Blaster v1.

What I really mean is that if libusb-1.0 and libusb-0.1 and HIDAPI
development files are available, configure will auto-enable all the
drivers that depend on those APIs.

libftdi-based drivers are not included in the auto-detection
procedure, so any libftdi-based driver (including the one for Altera
USB Blaster v1) needs to be enabled explicitly.

> Is there any document where I can find the actual configuration
> options required for various devices? Or, the other way around, what
> are the devices supported by the default configuration that you
> recommend?

./configure --help output is supposed to explain everything relevant,
if it doesn't, I'm ready to fix it, I just need to know what exactly.

I recommend to build with these options (provided libusb-1.0,
libusb-1.0 and HIDAPI APIs are available via pkg-config in the host
OS):

--enable-buspirate
--enable-amtjtagaccel
--enable-oocd_trace
--enable-arm-jtag-ew
--enable-sysfsgpio (on systems using Linux, the kernel)
--enable-usb_blaster_libftdi
--enable-openjtag_ftdi
--enable-presto_libftdi
--enable-dummy
--enable-remote-bitbang
--enable-parport

All the other common adapter drivers will get auto-enabled. 

I hope this helps to clarify the situation.

--
Be free, use free (http://www.gnu.org/philosophy/free-sw.html) software!
mailto:fercer...@gmail.com

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to