Cypress EZ-USB® FX3™ SDK Quick Start Guide, Version 1.3.1 39
GPIF - I I S o c k e t 0
USB E n d p o i n t
1 - I N
D MA b u ff er s
Figure 6-6: GPIF-to-USB Data Flow
A dummy GPIF-II configuration which continuously latches data from the GPIF-II
data pins is used in this example. This example does not require any external
device to be connected on the GPIF-II port. The data pins can be tied to various
logic levels, and the respective changes can be viewed in the data received on the
USB side.
The firmware only sets up the required data path, which then runs by itself without
firmware intervention.
6.2.2 Project Files
The following source files are part of this firmware project.
1. cyfx_gcc_startup.S: Start-up code for the ARM-9 core on the FX3 device.
This file can be taken as such from the firmware/common folder or any of
the application folders in the FX3 SDK.
2. cyfxtx.c: ThreadX RTOS wrappers and utility functions used by the example.
This can also be taken as such from the firmware/common folder in the SDK
installation.
3. cyfxgpif2config.h: This is the GPIF-II designer generated configuration file
which implements the simple state machine used in this example. The GPIF-
II designer project itself is present under the continuous_read.cydsn folder.
4. cyfxgpiftousb.h: Configuration settings and constants used by the
application.
5. cyfxbulkdscr.c: USB descriptors used by the application.
6. cyfxgpiftousb.c: Main source file associated with this firmware application.
6.2.3 Code Flow
As with all FX3 examples in the SDK, the CyU3PFirmwareEntry function is chosen
as the entry point for this application. This function is part of the FX3 firmware
library, and sets up the operating modes and initial runtime stacks for the ARM9
CPU. Once these functions are performed, the entry jumps back to the
CyU3PToolChainInit function that is defined in the cyfx_gcc_startup.S file.