I am designing a new USB device that contains the Cypress EZ-USB FX chip. I am trying to download some very simple/basic firmware code to the EZ-USB FX chip through the Cypress USB Control Panel. Before I get too far, let me start this by saying that the device does enumerate as a Cypress EZ-USB - EEPROM Missing device.
With that said, as soon as I select the .hex file to download firmware to the device, the Control Panel freezes until I reset my USB device. I have monitored the USB traffic via a CATC USB Chief Bus & Protocol Analyzer. The problem arises when a Control Write (vendor specific firmware upload) is performed to CPUCS (0x7F92) with a value of 0x01. Writing 0x01 to CPUCS holds the 8051 in a reset state until all the firmware has been downloaded and the device has been renumerated.
So anyway, the Control Write to CPUCS with a value of 0x01 is initiated by the host with a SETUP Packet (followed by a data packet) which is ACKed by my device. Then an OUT packet is sent (followed by a data packet) with the value to be written to CPUCS (0x7F92). This OUT packet is NAKed by my device. From this point on, any kind of OUT packet sent in an attempt to send the Control Write value of 0x01 to the device is NAKed by the device.
It seems as if the device just doesn't want the host taking the 8051 core into a reset state... I can't find anything in the EZ-USB FX spec to denote a similar behavior, so I'm hoping someone out in the digital world may have a tip or two.
Thanks for any insight on any of the above discussion topics.