1. Power is applied to the device from the USB bus.
2. The Reset circuit holds the EZ-USB FX2 chip in Reset briefly until the PLL locks to the 24 MHz oscillator, at which time the EZ-USB FX2 chip emits a stable CLKOUT (12Mhz).
3. The FX2 USB Core detects an EEPROM plugged into the I2C-compatible bus. The Core reads the VID and PID from the EEPROM and overwrites its hardwired VID and PID. Refer to the Technical Reference Manual for more details.
4. The Host detects that the device is plugged in and asks the device for its IDs via a GetDescriptor request to the Core's Endpoint 0), most importantly Vendor ID (VID) and Product ID (PID). The device responds with IDs that represent your non-downloaded device: (Vendor=XYZ Corp, Product=GIZMOLOADER).
5. The Host PC sees these IDs and knows to load your Loader Driver (based on the EZLOADER example in the Driver directory on the CD).
6. Your Loader Driver performs an Anchor download of the embedded FX2 firmware into the chip.
7. The Loader Driver then releases the Reset of the 8051 core and your firmware application code starts running.
8. Your FX2 firmware electrically disconnects the chip from the USB bus.
9. The host, seeing the original device disappear, discards the Loader Driver from host memory.
10. Your FX2 firmware reconnects the EZ-USB to the USB bus.
11. The Host detects that your device is plugged in and asks the device for its IDs.
12. The FX2 firmware responds with IDs that represent a your fully downloaded and configured device: (Vendor=XYZ Corp, Product=GIZMO).
13. The Host PC sees these IDs and knows to load a Class Driver or your Custom Device Driver (based on the Generic Driver example).
14. The Host Driver and FX2 firmware are now loaded and running and perform the data transfers and control functions necessary for your application. You may also have a Windows application that calls your device driver that sends and receives data.