Getting Started With FX3 SDK
Getting Started With FX3 SDK
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone (USA): 800.858.1810
Phone (Intl): 408.943.2600
http://www.cypress.com
Disclaimer
CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described
herein. Cypress does not assume any liability arising out of the application or use of any product or circuit described herein.
Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or
failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-
support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies
Cypress against all charges.
License Agreement
Please read the license agreement during installation.
2 SDK Installation........................................................................................................................... 7
2.1 Components of the FX3 SDK .............................................................................................. 7
2.2 Installed Directory Structure ................................................................................................ 8
It has a fully configurable, parallel, General Programmable Interface called GPIF II,
which can connect to any processor, ASIC, DSP, or FPGA. It has an integrated
USB Phy and controller along with a 32-bit microcontroller (ARM926EJ-S) for
powerful data processing and for building custom applications. There is 512 KB of
on-chip SRAM for code and data. It has an inter-port DMA architecture which
enables data transfers of > 400 MBps.
The FX3 is fully compliant to the USB 3.0 v1.0 and USB 2.0 specifications. An
integrated USB 2.0 OTG controller enables applications that need dual role usage
scenarios. The device is also compliant with the USB Battery Charging
Specification v1.1.
There are also serial peripherals such as UART, SPI, I2C, and I2S for
communicating to on board peripherals (for example the I2C interface is typically
connected to an EEPROM).
The components of the FX3 software development kit are shown in Figure 2.
On the device side, there is the FX3 firmware stack that comprises of a full fledged
API library and a comprehensive firmware framework. A well documented library of
APIs enable users to access the hardware functions of FX3. The SDK also includes
application implementation examples in source form articulating different usage
models. Users can also develop their own application using this firmware
framework and modifying it as applicable. There is complete flexibility for users to
develop custom applications using the firmware framework. An RTOS library is
integrated with the firmware stack, allowing users to implement complex
applications requiring multiple threads of firmware execution.
The firmware development environment will help the customer develop, build and
debug firmware applications for FX3. The third party ARM® software development
tool provides an integrated development environment with compiler, linker,
assembler and JTAG debugger. A recent build of the free GNU tool-chain for ARM
processors and an Eclipse based IDE is provided by Cypress.
The USB host side (Microsoft Windows) stack for the FX3 contains:
• Cypress generic USB 3.0 driver (WDF) on Windows 7 (32/64 bit) and
Windows Vista (32/64 bit) and Windows XP (32 bit)
• Convenience APIs that expose generic USB driver APIs through C++ and
C# interfaces
• USB control center, a Windows utility that provides interfaces to interact with
the device at low levels such as configuring end points, data transfers etc
The FX3 DVK Board can be used to execute the firmware examples in the SDK
and also for firmware development based on the SDK. The hardware connection
and programming sections below assume the use of the FX3 DVK board.
Please refer to the FX3 DVK User Guide for additional information regarding the
DVK board.
The firmware examples included in the FX3 SDK are listed below. These examples
are provided as separate Eclipse projects.
1. cyfxbulklpauto: This example makes use of the DMA AUTO Channel for the
loopback between the endpoints.
2. cyfxbulklpautosig: This example makes use of the DMA AUTO Channel with
Signaling for the loopback between the endpoints.
3. cyfxbulklpmanual: This example makes use of the DMA MANUAL Channel for
the loopback between the endpoints.
4. cyfxbulklpmaninout: This example makes use of the DMA MANUAL IN + DMA
MANUAL OUT Channel for the loopback between the endpoints.
5. cyfxbulklpautomanytoone: This example makes use of the Multichannel DMA
AUTO MANY TO ONE for the loopback between endpoints.
6. cyfxbulklpautoonetomany: This example makes use of the Multichannel DMA
AUTO ONE TO MANY for the loopback between endpoints.
7. cyfxbulklpmanonetomany: This example makes use of the Multichannel DMA
MANUAL ONE TO MANY for the loopback between endpoints.
8. cyfxbulklpmanmanytoone: This example makes use of the Multichannel DMA
MANUAL MANY TO ONE for the loopback between endpoints.
9. cyfxbulklpmulticast: This example makes use of the Multichannel DMA
MULTICAST for the loopback between endpoints.
10. cyfxbulklpman_removal: This example demonstrates the use of DMA MANUAL
channels where a header and footer get removed from the data before sending
This section provides a few basic guidelines for developing applications using the
FX3 SDK.