Failure when programming the FX3 I2C boot EEPROM

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

cross mob
LaLa_3623211
Level 1
Level 1
Welcome! First question asked First solution authored

On my custom board there is a Microchip I2C EEPROM (24LC1026) for boot purposes. I set the bImageCtl bits in the image file to 7 - means 128 KB Microchip EEPROM. When I try to program the EEPROM from Control Center, after a while it says "Programming of I2C EEPROM Failed". I read out the EEPROM from outside, and it seems that only the first half of the EEPROM was written. The 24LC1026 can be reached on two I2C address, on 0xa0, the first half, on 0xa2 the second half (A2=A1=0). Now I found out that there are other types of 128kB Microchip EEPROMs, eg. 24LC1025, that's second half can be addressed on 0xa8 address (A1=A0=0). Now I wonder how the Control Center find out which Microhip EEPROM is on the board (there is only one code for it in the image file). Shall I simple change my EEPROM to 24LC1025. Or what type of EEPROM can be used? My image is almost 128 kB.

Best regards,

Laszlo

0 Likes
1 Solution

Hi Rashi,

Thank you, the Application Note helped to understand what happens.

Previously I used the bImageCTL[3:1] = 6 default value for programming the 24LC1026 EEPROM, but that did not work either. Then I tried to change the bits to 7, and the error remained. There is an FPGA module in a socket on my board, and when I removed it from the socket, and used the bImageCTL[3:1] = 6 settings, the EEPROM programming became succesful. Then I checked the FPGA module's schematic, and found out that the Real-Time Clock IC has an I2C address of 0xA2. So there is an address conflict between this IC and the boot EEPROM. I tried configuring the EEPROM's address to 0xA4, but it still did not help. Probably the bootloader finds a device at I2C address 0xA2, and thinks that is an EEPROM. Anyway, it is not really necessary to connect the FPGA's I2C bus to the boot EEPROM. I cut it, and now everything works fine.

View solution in original post

0 Likes
3 Replies
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello,

Please refer to section 5.3 of AN76405 application which mentions the changes needed in the image files when using I2C EEPROM (24LC1026). Please refer to important notes and section 5.2.1

The addressing for the Microchip EEPROM 24LC1026 is different from the addressing of other 128-KB Microchip EEPROMs. If using Microchip EEPROM 24LC1026, the I 2C EEPROM size field, for example, bImageCTL[3:1], should be set to 6. Please confirm that these changes are  done.

Or what type of EEPROM can be used? My image is almost 128 kB.

As you are using EEPROM of 128 KB and image size is also 128 KB, it is recommended to use the firmware image built in Release mode, as the size of the generated image file in the Release version is smaller than that in the Debug version.

Regards,

Rashi

Regards,
Rashi

Hi Rashi,

Thank you, the Application Note helped to understand what happens.

Previously I used the bImageCTL[3:1] = 6 default value for programming the 24LC1026 EEPROM, but that did not work either. Then I tried to change the bits to 7, and the error remained. There is an FPGA module in a socket on my board, and when I removed it from the socket, and used the bImageCTL[3:1] = 6 settings, the EEPROM programming became succesful. Then I checked the FPGA module's schematic, and found out that the Real-Time Clock IC has an I2C address of 0xA2. So there is an address conflict between this IC and the boot EEPROM. I tried configuring the EEPROM's address to 0xA4, but it still did not help. Probably the bootloader finds a device at I2C address 0xA2, and thinks that is an EEPROM. Anyway, it is not really necessary to connect the FPGA's I2C bus to the boot EEPROM. I cut it, and now everything works fine.

0 Likes

Hello,

Thank you for the update. We are glad to hear that the problem got resolved.

Regards,

Rashi

Regards,
Rashi