Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Generation 2 and generation Generation 3 technology stacks share the same reference firmware but with two different VIDs/PIDs.
The following firmware tools

  • DEWESoft FUT (firmware upgrade tool)
  • Open_FUT (generation 2)
  • Open_FUT (generation 3)

work only if the reference architecture, or a derived architecture, is running in the module. The reference/derived architecture is necessary because the three tools make use of API Commands (see the corresponding API reference manual) executed by the Xilinx MicroBlaze soft embedded processor of the reference/derived architecture. These tools are therefore able to update the firmware of the USB FX2 microcontroller and the FPGA configuration file (bitstream).
The following firmware tools

  • Cypress USB Console
  • Cypress USB Control Center

work also if the reference/derived architecture is not running in the module. he reference/derived architecture is not necessary because they do not make use of API Commands. Conversely, they directly make use of CyAPI.lib and CyUSB.dll, respectively. These two tools are therefore only able to update the firmware of the USB FX2 microcontroller, but not the FPGA configuration file (bitstream).

Generation 2

VID/PID:

  • 0x0547/0x1002

Firmware files:

Firmware update tools:

  • DEWESoft Firmware Upgrade Tool:It requires DEWESoft device driver and DEWESoft API.It work only if the reference/derived architecture is running in the module.DEWESoft FUT is able to update the firmware of the USB FX2 microcontroller and the FPGA configuration file (fpga.bin bitstream).
  • Open_FUT for generation 2:It requires DEWESoft device driver, Python and DEWESoft API.It works only if the reference/derived architecture is running in the module.Open_FUT is able to update the firmware of the USB FX2 microcontroller and the FPGA configuration file (bitstream fpga.bin).
  • CyConsole = Cypress USB Console:It requires Cypress generic USB device driver and CyAPI.lib static library.It works also if the reference/derived architecture is not running in the module.It is used as recovery USB firmware tool (recovery boot)It requires to boot with EEPROM switched off (DEWESoft device is registered as Cypress device), then back on (EEPROM can be written).Some documentation in UM-USB-Firmware.pdf.Some examples here (firmware restore only).
  • CyControl = Cypress USB Control Center (requires .NET Framework):It requires Cypress generic USB device driver, .Microsoft NET Framework (version ≥ 4.0.30319) and CyUSB.dll dynamic library.It works also if the reference/derived architecture is not running in the module.It is used as recovery USB firmware tool (recovery boot)It requires to boot with EEPROM switched off (DEWESoft device is registered as Cypress device), then back on (EEPROM can be written).Some examples here (firmware restore only).

Documentation

Generation 3

VID/PID:

  • 0x0BD0/0x0300

Firmware files:

Firmware update tools:

  • Open_FUT for generation 3:It requires TE USB FX2 device driver, Python and a pure extern C code library version of TE_USB_FX2_CyAPI APIs (codename: simplified TE_USB_FX2_CyAPI APIs).It works only if the reference/derived architecture is running in the module.Open_FUT is able to update the firmware of the USB FX2 microcontroller and the FPGA configuration file (bitstream fpga.bin).
  • CyConsole = Cypress USB Console:It requires Cypress generic USB device driver and CyAPI.lib static library.It works also if the reference/derived architecture is not running in the module.Boot with EEPROM switched off is not required.Some documentation in UM-USB-Firmware.pdf.Some examples here (firmware restore) and here (firmware update).
  • CyControl = Cypress USB Control Center (requires .NET Framework);It requires Cypress generic USB device driver, .Microsoft NET Framework (version ≥ 4.0.30319) and CyUSB.dll dynamic library.It works also if the reference/derived architecture is not running in the module.Boot with EEPROM switched off is not required.Some examples here (firmware restore) and here (firmware update).

Documentation

Recovery Boot

A recovery boot is a multi-step boot operation:

  1. module is off and connected;
  2. EEPROM switch is set off;
  3. module is powered on;
  4. module enumerates in recovery mode (VID = 0x04B4, PID = 0x8613);the module is served by the Cypress generic USB device driver;the Cypress generic USB device driver allows Cypress firmware update tools (Cypress Console, Cypress Control Center) to work with the Cypress EZ-USB FX2 microcontroller on the module;
  5. EEPROM switch is set back on;Cypress firmware update tools can read and write the EEPROM.

VID/PID couples: 

  • 0547/1002 (Generation 2);
  • 0BD0/0300 (Generation 3).

The firmware used (running on the FX2 microcontroller) is normally (EEPROM switch enabled) retrieved from the EEPROM when a reset occurs. It is also possible to directly write the RAM of the FX2 microcontroller to change the current running firmware.

Info

A general introduction to USB bulk transaction and FX2 microcontroller firmware is available here.

TE USB FX2 modules are shipped with a preloaded FX2 USB microcontroller reference firmware inside the EEPROM. For a description see here.

The preloaded firmware exposes Trenz Electronic Firmware API (TE API Commands (FW APIs)) to the host computer software (through USB).

To change the EEPROM content (reference firmware) from Generation 2 (VID/PID 0547/1002) to Generation 3 (VID/PID 0BD0/0300), you shall follow this procedure. You may also watch this video play list.

For an introduction to USB FX2 microcontroller's firmware configuration, recovery boot and update boot. 

Tip

For Custom FX2 microcontroller's firmware considerations and advices see here.

Firmware loading and/or update comparison table

Scroll pdf title
titleFirmware loading and/or update comparison table.

EEPROM switch (2) status
when a reset occurs

disabled (3)

enabled (4)

generation

2/3/custom23custom
boot modefirmware recovery bootregular or
firmware update boot
regular or
firmware update boot
regular or
firmware update boot

VID

04B4

0547

0BD0

any, but 0BD0 is advised

PID

8613

1002

0300

any, but 0300 is advised

device enumerated

Cypress generic USB

DEWESoft TE03xx USB

Trenz Electronic TE USB FX2

any or
Trenz Electronic TE USB FX2

required driver
(Windows OS)

 recovery driver (Cypress default,
using Cypress or TE SW libraries)
or WinUSB (using libusbx library)(5a)

regular driver (Gen 2,
using Cypress or TE SW libraries) 
or WinUSB (using libusbx library) (5a)

regular driver (Gen 3,
using Cypress or TE SW libraries)
or WinUSB (using libusbx library) (5a)

custom (using custom or libusbx library),
WinUSB (using libusbx library) (5a) 
or regular driver (Gen 3,
using Cypress or TE SW libraries)
firmware source code

Hardware Layer only (6)

Source code available here

Source code available here

Custom firmware (7)

firmware binary filesHardware Layer only (6)Binary files available hereBinary files available hereCustom firmware (7)

recovery tool
(Windows OS)

Cypress USB Console,
Cypress USB Control Center,
 C# OpenFutNet (recommended) (5b),
fx2loader (see also here)

 not applicable

not applicable

not applicable

update tool
(Windows OS)

not applicable

Python Open_FUT (Gen2) (5b)

 

Cypress USB Console,
Cypress USB Control Center ,
Python Open_FUT (Gen 3),
C# OpenFutNet (recommended) (5b)

nothing or (only if custom firmware
is compatible with TE API Commands (FW APIs)):
Cypress USB Console,
Cypress USB Control Center ,
Python Open_FUT (Gen 3),
C# OpenFutNet (recommended) (5b)
recovery tool
(Linux OS)
fx2loader (see also here) or
fxload ( see also here)
not applicablenot applicablenot applicable
update tool
(Linux OS)
 not applicableLinux_FUT  
Linux_FUTLinux_FUT (only if custom firmware
is compatible with TE API Commands (FW APIs))
(1) The TE USB FX2 module (in recovery boot) is served by the Cypress USB Generic Driver; this driver allows Cypress firmware update tools (Cypress Console, Cypress Control Center) and OpenFutNet to work with the Cypress EZ-USB FX2 microcontroller on the module.
(2) The EEPROM switch connect (enable)/disconnect (disable) the connection between EEPROM and FX2 microcontroller.
(3) EEPROM connection disabled when TE USB FX2 module turned on, then EEPROM connection enabled when TE USB FX2 module is inserted in the USB port of the computer (aka plugged in, aka attached)
(4) EEPROM connection enabled when TE USB FX2 module turned on, then EEPROM connection enabled when TE USB FX2 module is inserted in the USB port of the computer (aka plugged in, aka attached)  
(5a) WinUSB driver and Zadig should be used only if libusb or libusbx are the libraries used by the user under Windows OS. See WinUSB driver installation (libusb and libusbx). See also Zadig
(5b) If libusb or libusbx are used (with WinUSB driver and/or Zadig), the software tools Cypress USB Console, Cypress USB Control Center , Python Open_FUT (Gen2), Python Open_FUT (Gen 3) and C# OpenFutNet could not be directly used. The code of these tools should be rewritten using libusb or libusbx instead of Cypress libraries (CyAPI.lib and CyUSB.dll) and the derived Trenz Electronic libraries (TE_USB_FX2_CyAPI.dll and TE_USB_FX2_CyUSB.dll). See Linux_FUT as a starting point for a new software tool using libusb or libusbx under Windows OS.

 

Info

These libraries are not yet officially supported under Windows, but they are already used with TE USB FX2 modules under Linux (see the comunity contribution Linux_FUT). Zadig is not yet officially supported under Windows.

 

(6) To default, the FX2 hardware (i.e with EEPROM isolated =>hardware's first stage loader) enumerates the USB FX2 microcontroller chip as VID=0x04B4 (Cypress) and PID=0x8613 (FX2), and provides support for loading firmware into RAM. 
To default, using the FX2 hardware (i.e with EEPROM isolated => hardware's first stage loader ) it is possible to write a new firmware in RAM but NOT in EEPROM.
The USB FX2 microcontroller hardware's first stage loader (supporting the 0xA0 vendor request) can't write into external memory (EEPROM for example). 
Configurations that put firmware into external memory thus need a second stage loader in RAM (normally Vend_Ax.hex).

 

Note
EEPROM connection shall always be enabled during EEPROM programming.
Info

Using Cypress firmware update tools with generation 2 modules does require a recovery boot, in order to force enumeration as Cypress

...

...

Generic Driver.

On the other side, using Cypress firmware update tools with generation 3 modules

...

may not require a recovery boot (if a Generation 3 reference firmware is running on USB FX2 microcontroller), but only an update boot. This is possible because the

...

original Cypress

...

...

Generic Driver (in case of a recovery boot) and the Trenz Electronic USB FX2 device driver ( in case of a regular boot) are both Cypress driver. Trenz Electronic USB FX2 driver derives from the original Cypress

...

Scroll pdf title
titleFirmware update comparison table.

generation

2: recovery boot

3: recovery boot

3: regular boot

boot mode (EEPROM switch)

recovery (off, then on)

recovery (off, then on)

regular (always on)

VID

04B4

04B4

0BD0

PID

8613

8613

0300

device

Cypress generic USB

Cypress generic USB

TE USB FX2

required driver

recovery driver

recovery driver

regular driver

update applications

Cypress USB Console
Cypress USB Control Center

Further documentation:

...