FX3 Firmware upload problem | Cypress Semiconductor
FX3 Firmware upload problem
I'm using the CYUSB3KIT board and trying to download new firmware into it using my own C++ program.
First, I compiled one of the firmware examples and downloaded it using the Control Center. Everything worked fine. This was using a debug build of the example.
I wrote the C++ firmware downloader program using the example in AN76405 as a guide. This parses the .img file, downloads the code into the FX3 RAM, and even reads it back to verify that it worked.
I took the compiled .img file from the firmware example that I downloaded using the Control Center, and tried to load it using my C++ code. I almost works. The USB opens, the file is read in, and the code is written into the FX3 RAM in blocks.
The problem is, some of the block writes fail. The endpoint write call fails (controlEp->Write(...)). From what I can tell, the problem is with certain sections of memory.
Here's the breakdown:
0x40003000 to 0x40003FFF: WORKS
0x40004000 to 0x4000FFFF: FAILS
0x40010000 to 0x40013FFF: WORKS
0x40014000 to 0x40019400: FAILS
0x40030000 to 0x400320C7: WORKS
I changed the block size for the USB transfer with no effect. I checked the memory map and there's nothing obvious. I'm hoping I'm just missing something simple, but at this point I'm stumped.