This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMDSEVM6657: IBL can not bootup through I2C 0x50

Part Number: TMDSEVM6657

Recently, I recompiled IBL under MCSDK_2_01_02_06.  I compiled with I2C_BUS_ADDR of both 0x50 and 0x51.

      make evm_c6657_i2c ENDIAN=little I2C_BUS_ADDR=0x51

      make evm_c6657_i2c ENDIAN=little I2C_BUS_ADDR=0x50

The two result are almost same. (refer to eeprom50.bin and eeprom51.bin attached).  

After downloading both images into EEPROM in TMDSEVM6657 board,  I tried both IBL images bootup. When SW3/SW5 is set to I2C bootup from 0x51, IBL can successfully bootup  followed by Nor.bin bootup. everything is fine. While if SW3/SW5 is set to I2C bootup from 0x50, it seems that IBL is not bootup properly.  

The original POST test image is working fine on my TMDSEVM6657 board. 

Can IBL be booted up through 0x50 in TMDSEVM6657?    Thanks.

  • evm6657l.rar

    Here is the two IBL images: eeprom50.bin and eeprom51.bin.

  • Some updates:

    1.  for 0x50 I2C IBL bootup hang, I connected the JTAG emulator, the values of DEVSTAT and  BOOTCOMPLETE registers are as follows;

                      DEVSTAT (0x02620020): 0x0000000B

                     BOOTCOMPLETE( 0x0262013C ): 0x00000001

                    PC: 0x20B11B54

    2. I turned on the board with NoBoot mode, and connect it with JTAG emulator and run a program to check the contents of EEPROM in both 0x50 and 0x51. The result shows that both eeprom50.bin and eeprom51.bin are programmed in EEPROM correctly. 

    Has anyone booted up IBL at I2C 0x50 mode?

  • After debugging the IBL code, I found that this issue is caused by IBL_ENTER_ROM flag.  I removed the following codes from Iblinit.c and compiled 0x50 IBL. 

    /* Check if need to enter Rom boot loader again */
    if (IBL_ENTER_ROM)
    iblEnterRom ();

    Now,  my TMDSEVM6657 board can be booted up with IBL through I2C 0x50.  There is a RBL reset  in case of I2C 0x50 in iblEnterRom(), which maybe is the root cause.