CX3 Custom board: Unable to load firmware in SPI Flash and I2C EEPROM memory

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
GaK_4661021
Level 4
Level 4
25 replies posted 10 replies posted 10 questions asked

Hi,

We are working on a custom board based on the CX3 component. We are able to flash image in RAM memory and image is working as expected but we are unable to flash the firmware from I2C EEPROM and SPI Flash memory. Below are the I2C EEPROM and SPI Flash component we have used in custom hardware,

1. I2C EEPROM: AT24CM01-SSHM-T

2. SPI Flash: W25Q80EWSNIG

When we try to flash image in I2C EEPROM or SPI Flash using Control center we are seeing below status messages at bottom left,

1. When we select Program->FX3->I2C EEPROM or Program->FX3->SPI Flash then we can see a status message like, "Waiting for Cypress Boot Programmer device to enumerate..."

2. We are unable to see file selection pop-up and we get a status message like, "Cypress Boot Programmer Device Not Found"

We have verified EEPROM and SPI flash component from the "EZ-USB® FX3™/FX3S™ Boot Options" guide and it looks supported parts.

Can you please help with the probable issue? Do we need to change anything in the bootloader for custom board support? Do we require a second-stage bootloader? If we require a second-stage bootloader then how can we load it into hardware?

0 Likes
1 Solution

Hello,

The datasheet of the part AT24CM01-SSHM-T (EEPROM that you are using) indicates that it is of 1Mb (128KB) and not 1MB. So, this part cannot be used to store an image file which is greater than 128KB.

The size of the .img file can be found by checking its properties. You can try to reduce the size of the generated .img file by referring to the following KBA so that it can be programmed into the existing EEPROM.

Optimizing Code Size in FX3 SDK - KBA230335

Please note that when the code size is optimized, sufficient testing need to be done to ensure that it works properly.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna

View solution in original post

0 Likes
13 Replies
JayakrishnaT_76
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hello,

Please share the following:

1. Check if CyBoorProgrammer.img is present in the following location:

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\c_sharp\controlcenter

Note that this path may change based on the installation directory of FX3 SDK.

2. Program the RAM after building the firmware found in the following location.

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxflashprog

Please let me know if the device enumerates properly after programming RAM with the above firmware. Please share a snapshot of the control center after programming this firmware to RAM.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hi,

Please find answer below,

#1. Yes image file is present at mentioed location.

#2. Below is the descriptor after flashing mentioned firmware,

<DEVICE>

FriendlyName="Cypress FX3 USB BootProgrammer Device"

Manufacturer="Cypress"

Product="FX3"

SerialNumber=""

Configurations="1"

MaxPacketSize="64"

VendorID="04 B4"

ProductID="47 20"

Class="00h"

SubClass="00h"

Protocol="00h"

BcdDevice="00 00"

BcdUSB="02 10"

<CONFIGURATION>

Configuration="0"

ConfigurationValue="1"

Attributes="80h"

Interfaces="1"

DescriptorType="2"

DescriptorLength="9"

TotalLength="18"

MaxPower="50"

<INTERFACE>

Interface="0"

InterfaceNumber="0"

AltSetting="0"

Class="FFh"

Subclass="00h"

Protocol="0"

Endpoints="0"

DescriptorType="4"

DescriptorLength="9"

</INTERFACE>

</CONFIGURATION>

</DEVICE>

One thing I noticed for firmware flashing is, I am able to flash firmware with size less than 128KB in SPI Flash as well and in I2C EEPROM and these firmware are working as expected. Is there anything do we need to change?

0 Likes

Hello,

Please try the following and share snapshots of the control center for me to inspect the descriptors:

1. Program RAM with flash prog image as I asked in my previous response.

2. Program RAM with the .img file present in the following location:

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\c_sharp\controlcenter

Also from the following phrase in your previous response, "One thing I noticed for firmware flashing is, I am able to flash firmware with size less than 128KB in SPI Flash as well and in I2C EEPROM and these firmware are working as expected",  I understand that the message "Cypress Boot Programmer Device Not Found" is no longer displayed in the bottom left corner of control center. Is my understanding correct? If not, how are you programming the flash or EEPROM?

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hi,

Please find snapshots as requested below,

#1.

USBFlashProg_Snapshot.PNG

#2.

CyBootProgrammer_Snapshot.PNG

Yes, You are right for file size less than 128KB we are able to see a flash success message.

0 Likes

Hello,

Please let me know the following details:

1. Is the device plugged into a USB 3.0 port?

2. Are the superspeed lines of FX3 left unconnected?

This is because I find that both the firmwares enumerate in USB 2.0 mode (BcdUSB field of descriptor).

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hi,

We suspect that USB-3.0 is not working as expected in our custom hardware as of now. Is there anything dependent on USB-3.0?

0 Likes

Hello,

Usually the Boot Programmer image enumerates as USB 3.0. But in your case it enumerated as 2.0. So, I just wanted to know if you are not using USB 3.0 or not.

Please let me know the following details:

1. How did you conclude that the maximum .img file that can be flashed is 128KB?

2. Is this 128KB limit applicable for the flash and EEPROM or just the EEPROM?

3. What does the control center display at bottom left corner when you try to download an image greater than 128KB?

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hi,

Please find answer as below,

#1. We have tested two images with size 91KB and 106KB and both are working as expected with I2C EEPROM and SPI Flash and our final image is with size 135KB which is not working so we have assumed that there is some issue with image which has size greater than 128KB.

#2. 128KB limit is only applicable for I2C EEPROM. We are able to flash firmware in SPI flash in second retry and I think there is not any issue of size limit in SPI Flash.

#3. It shows error message like "Waiting for Cypress Boot Programmer device to enumerate..." and then "Programming of I2C EEPROM failed"

0 Likes

Hello,

FX3 requires a specific bootable image format to boot the application firmware from I2C EEPROM. The possible boot options and bootable image formats for FX3 are documented in application note, AN76405.

Please refer to the following KBA and let me know if this helps.

https://www.cypress.com/file/359356/download

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hi,

Sure. I will look into it.

I am unable to understand how my image with size 91KB is working after directly building it from eclipse and without doing any extra stuff? Both projects with size 91KB and 135KB are created by me only and I haven't did anything differently related to configuration in both the projects.

0 Likes

Hi,

I have tried to create a .img file as mentioned in the document shared by you. As per Table-1, I am unable to find configuration details for 1MB EEPROM memory. Our memory component(AT24CM01) has a 1MB(128x8) size. We assume 128KB configuration as per our EEPROM memory layout of 128KBx8Pages so I have set a post-build step with configuration 0x1E in eclipse IDE as mentioned in section #2 on page #3 but it is also not working. Is it correct understanding?

0 Likes

Hello,

The datasheet of the part AT24CM01-SSHM-T (EEPROM that you are using) indicates that it is of 1Mb (128KB) and not 1MB. So, this part cannot be used to store an image file which is greater than 128KB.

The size of the .img file can be found by checking its properties. You can try to reduce the size of the generated .img file by referring to the following KBA so that it can be programmed into the existing EEPROM.

Optimizing Code Size in FX3 SDK - KBA230335

Please note that when the code size is optimized, sufficient testing need to be done to ensure that it works properly.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hi,

I See. I think that is what creating problem.

Thanks for your support.

0 Likes