Note: WinUSB.sys does not support ISOCHRONOUS transfers, while the Cypress driver supports all USB
transfer types.
Note: Linux and Mac users can investigate LIBUSB, a suite of open source user-mode USB routines.
Details can be found in the Libusb-1.0 API Reference.
In Linux machines, the CyUSB Suite for Linux software (provided as part of FX3 SDK for Linux and can be used
for FX2) enables you to download firmware images to FX2/FX3 devices and test the various interfaces on the
device. See cyusb_linux_user_guide.pdf available in the FX3 SDK for Linux installation folder:
fx3_sdk_v1.3_linux\cyusb_linux_1.0.4\cyusb_linux_1.0.4\docs. This document describes how to install the
software, download firmware to FX2/FX3, test Vendor Extensions, BULK OUT/IN transfers, and ISOCHRONOUS
OUT/IN transfers. The CyUSB Suite for Linux - Programmers Reference Manual
(cyusb_linux_programmers_guide.pdf available in the same folder), describes the cyusb library for Linux and
how to build and integrate user-written applications with the library”
FX2LP can also be programmed to be compliant with a standard Windows class, for example Human Interface
Device (HID), Communications (COMM) device or Mass-Storage (MSC) device. The Cypress web site has example
FX2LP programs for these common classes. The advantage of conforming to a Windows class is that no driver
installation is required when the device is first plugged in—the drivers are part of Windows.
6.2 Cypress Libraries
Figure 29 Detailed View of How Cypress Libraries Communicate with Applications
The Bulkloop_VCS application is an example of the software architecture used for any Windows-to-FX2LP
communication using the Cypress .NET library. A C# language program makes library calls that access the
Cypress driver to communicate with FX2LP (see Figure 28). The CyUSB.dll library supports the Microsoft .NET
Languages. Cypress also provides a C++ class library called CyAPI.lib. Both libraries are available with the
Cypress Suite USB installation.
Just as the Cypress USB Firmware Frameworks simplifies code development at the FX2LP level, these libraries
simplify coding at the Windows level. The software model (based on CyUSB.dll) employs the following three
elements: