cancel
Showing results for 
Search instead for 
Did you mean: 

USB Low-Full-High Speed Peripherals

betac_1056006
New Contributor

Hi,

My FX3 is configured for i2c boot via PMODE pins, and there are 2 EEPROMs connected on the i2c bus. Each EEPROM is assigned an address in hardware. My firmware is only stored on one of those EEPROMs, the other contains some application data.

Will the bootloader know which EEPROM to boot from? Current guesses:

  - Is there a setting that tells the bootloader which address to boot from?

  - Does the bootloader try all the EEPROMs till it finds one with correct boot header?

Thanks!

0 Likes
1 Solution
SrinathS_16
Moderator
Moderator

Hello,

The boot-loader would read the contents of EEPROM at address 0xA0. If it finds valid content in the EEPROM, it loads the firmware else it fails.

Best regards,

Srinath S

View solution in original post

0 Likes
7 Replies
YiZ_31
Moderator
Moderator

Hi,

You can refer to  chapter 5 of AN 76405 to find relating information:

http://www.cypress.com/documentation/application-notes/an76405-ez-usb-fx3-fx3s-boot-options

Regards,

Eddie.

0 Likes
betac_1056006
New Contributor

Hi,

I've read through the chapter. I still don't get how the Bootloader knows which EEPROM address to boot from?

If there are multiple EEPROM, and only 1 of them contains the firmware (e.g. address 001). Does the bootloader iterate through the i2c addresses starting from 000 - 111, and look at the Boot Image Format header for the correct format?

0 Likes
YiZ_31
Moderator
Moderator

Hi,

The situation you described could not happen. When you download your firmware, it automatically starts from lowest address.

Regards,

Eddie.

0 Likes
betac_1056006
New Contributor

Hi Eddie,

Thanks for your replies .  When you say download the firmware, I suppose this would be done via Cypress Control Center which controls the EEPROM address where firmware to be written to. Is this correct?

This is a hypothetical scenario: what if I download the firmware into the EEPROM offline using another tool. Then I solder the EEPROM on the board at address 001, when I have another EEPROM at address 000?

How would the bootloader handle this scenario?

0 Likes
SrinathS_16
Moderator
Moderator

Hello,

The boot-loader would read the contents of EEPROM at address 0xA0. If it finds valid content in the EEPROM, it loads the firmware else it fails.

Best regards,

Srinath S

View solution in original post

0 Likes
betac_1056006
New Contributor

Hi,

Thanks for the explanation. Let's see if I understand this correctly using an example from AN76405.

In the case of Microchip EEPROM (given as an example in AN76405), the bootloader would look at the EEPROM whose A2-A1-A0 pins are configured to be VCC-0-0 (see image below). Inside this EEPROM at address 0xA0, if no valid binary image is found, boot fails. The bootloader does not look at any other EEPROM.

So if my firmware is stored in any other EEPROM (e.g. whose A2-A1-A0 pins are configured to be VCC-0-1), then boot also fails.

Is this understanding correct?

Microchip Address.bmp

0 Likes
SrinathS_16
Moderator
Moderator

Hello,

Yes. Your understanding is correct. If there is no valid image in the EEPROM at address 0xA0, boot fails. The boot-loader does not look at other EEPROMs.

Best regards,

Srinath S

0 Likes