Versions Compared

Key

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

...

Info

To default, the FX2 hardware (i.e with EEPROM isolated =>hardware's first stage loader) enumerates the USB FX2LP FX2 microcontroller chip as VID=0x04B4 (Cypress) and PID=0x8613 (FX2LP), 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 FX2LP FX2 microcontroller hardware's first stage loader (supporting the 0xA0 vendor request) can't write into external memory (EEPROM for example).

...

It is possible to write in EEPROM only using a 2nd stage loader firmware supporting EEPROM programming (aka intermediate good firmware) running in RAM; normally the bootloader Vend_Ax.hex is used. 
  • In the case of (IMPLICIT implicit two-step) recovery boot (at this time, only Windows) the 2nd stage (boot)loader firmware is loaded without the explicit intervention of the user.
  • In the case of (EXPLICIT explicit two-step) recovery boot (mainly Linux) the 2nd stage (boot)loader firmware is loaded with the explicit intervention of the user.

Both recovery boots use exactly the same procedure (under the hood, they are one and the same), but in Windows OS case the 2nd stage (boot)loader firmware step is HIDDEN hidden/implicit in loadEEPROM() function used by CyConsole, CyControl and OpenFutNet.

(Implicit Two-Step) Recovery Boot

...

  • isolate the FX2 microcontroller's external EEPROM disabling the EEPROM switch;
  • use a reset if the the running SW tool is not able to recognize the TE USB FX2 module as a supported device;
  • reconnect the FX2 microcontroller's external EEPROM enabling the EEPROM switch;
  • give the command to load the desired good firmware into FX2 microcontroller's external EEPROM using CyControl, CyConsole, OpenFutNet (Windows OS, all SW tools using CyAPI.lib or CyUSB.dll) ;

    Info

    The CyConsole's "Lg EEPROM" button, CyControl's "64KB EEPROM" button and OpenFutNet's "Program USB: write IIC EEPROM" button call the loadEEPROM() function. This function is used to program 64-Kbyte EEPROMs. When the button (CyConsole's Lg EEPROM button, CyControl's EEPROM button or OpenFutNet's IIC button) is clicked, the user is prompted to select a (.iic) file to load into the EEPROM. This button first downloads the Vend_Ax(_Fx2).bix file, then sends the 0xA9 vendor request to program the EEPROM.

    The CyConsole/CyControl/OpenFutNet program will load

    1. (HIDDEN STEP hidden/implicit 1) an intermediate good firmware supporting EEPROM programming (normally the 2nd stage bootloader Vend_Ax.hex ) in RAM;

    2. (EXPLICIT STEP explicit step 2) the desired good firmware into FX2 microcontroller's external EEPROM using the the intermediate good firmware (2nd stage bootloader Vend_Ax.hex) in RAM.
  • use a reset or write the desired good firmware into FX2 microcontroller's RAM using CyControl (Windows OS). If OpenFutNet is used in the step before, the desired good firmware is already written into FX2 microcontroller's RAM.

...

  • isolate the FX2 microcontroller's external EEPROM disabling the EEPROM switch;
  • use a reset if the the running SW tool is not able to recognize the TE USB FX2 module as a supported device;
  • reconnect the FX2 microcontroller's EEPROM enabling the EEPROM switch;
  • (EXPLICIT STEP explicit step 1) load an intermediate good firmware supporting EEPROM programming (normally the bootloader Vend_Ax.hex ) into FX2 microcontroller's RAM using CyControl (Windows OS), fx2loader (Linux OS and Windows OS, see also here) or fxload (Linux OS, see also here) ;
  • (EXPLICIT STEP explicit step 2) load the desired good firmware into FX2 microcontroller's external EEPROM using CyControl, CyConsole, OpenFutNet (Windows OS, all 3 previous SW tools are using CyAPI.lib or CyUSB.dll), fx2loader (Linux OS and Windows OS, see also here) or fxload (Linux OS,see also here);
  • use a reset or write the desired good firmware into FX2 microcontroller's RAM using CyControl (Windows OS), fx2loader (Linux OS and Windows OS, see also here) or fxload (Linux OS,see also here).

...