Hi All,
I just want to know Can c6678 be booted from directly i2c eeprom ????
any help with this regard would be highly appreciated !!
rgds'
Gourav
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.
Hi All,
I just want to know Can c6678 be booted from directly i2c eeprom ????
any help with this regard would be highly appreciated !!
rgds'
Gourav
Hello Gourav,
The C6678 device supports I2C boot from EEPROM.
Please refer section 2.5.2.5 I2C Boot Device Configuration in device datasheet (SPRS691E).
Regards,
Senthil
HI Gourav,
Have you using EVM or custom board? EVM have two EEPROM (0x50 and 0x51) 0x51 EEPROM bus address reserved for IBL programming. User can use 0x50 EEPROM bus address for I2C booting.
Please refer to C:\Program Files\Texas Instruments\mcsdk_2_00_00_xx\tools\post\docs\README.txt on how to build POST and program POST to EEPROM bus address 0x50.
Refer EEPROM writer document to flash the binary to EEPROM (C:\ti\mcsdk_2_01_02_06\tools\writer\eeprom\docs\Readme.txt)
Refer section "4.2. Verifying POST" on C:\ti\mcsdk_2_01_02_06\tools\program_evm\program_evm_userguide.pdf to validate the i2c boot.
Thanks,
Hello Gourav,
The same setup is working fine on our EVM board.
So i suggest you to check your hardware connections.
Regards,
Senthil
Hello Gourav,
What is the I2C slave address of EEPROM ?
Please share the schematic snapshot of EEPROM portion for connection review ?
Regards,
Senthil
I think EEPROM writer code receive Platform_EUNSUPPORTED return message form platform_device_write function. That means your EEPROM slave address is not active. Please check the i2c connection on your custom board.
For more information refer platform.c file(C:\ti\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\src\platform.c).
#if (PLATFORM_EEPROM_IN) && (PLATFORM_EEPROM_WRITE_IN) if (deviceid == PLATFORM_DEVID_EEPROM50) { if (i2cEepromWriteByteAddr(offset, 0x50, buf, len, I2C_RELEASE_BUS) != I2C_RET_OK) { IFPRINT(platform_write("platform_device_write: EEPROM write for address 0x%x failed\n", 0x50)); platform_errno = PLATFORM_ERRNO_EEPROM; return ( (Platform_STATUS) Platform_EFAIL); } return Platform_EOK; } if (deviceid == PLATFORM_DEVID_EEPROM51) { if (i2cEepromWriteByteAddr(offset, 0x51, buf, len, I2C_RELEASE_BUS) != I2C_RET_OK) { IFPRINT(platform_write("platform_device_write: EEPROM write for address 0x%x failed\n", 0x51)); platform_errno = PLATFORM_ERRNO_EEPROM; return ( (Platform_STATUS) Platform_EFAIL); } return Platform_EOK; } #endif return Platform_EUNSUPPORTED;
Thanks,
Hi,
If the EEPROM slave address is correct means you got "platform_device_write: EEPROM write for address 0x%x failed\n" error message at write failed condition. In your case you did not recevie the error, that means both deviceid's(PLATFORM_DEVID_EEPROM50 and PLATFORM_DEVID_EEPROM51) are not matching.
#if (PLATFORM_EEPROM_IN) && (PLATFORM_EEPROM_WRITE_IN) if (deviceid == PLATFORM_DEVID_EEPROM50) { if (i2cEepromWriteByteAddr(offset, 0x50, buf, len, I2C_RELEASE_BUS) != I2C_RET_OK) { IFPRINT(platform_write("platform_device_write: EEPROM write for address 0x%x failed\n", 0x50)); platform_errno = PLATFORM_ERRNO_EEPROM; return ( (Platform_STATUS) Platform_EFAIL); } return Platform_EOK; } if (deviceid == PLATFORM_DEVID_EEPROM51) { if (i2cEepromWriteByteAddr(offset, 0x51, buf, len, I2C_RELEASE_BUS) != I2C_RET_OK) { IFPRINT(platform_write("platform_device_write: EEPROM write for address 0x%x failed\n", 0x51)); platform_errno = PLATFORM_ERRNO_EEPROM; return ( (Platform_STATUS) Platform_EFAIL); } return Platform_EOK; } #endif return Platform_EUNSUPPORTED;
Probe the SCL and SDA pins to valitate the I2C communication between DSP to EEPROM.
Second stage bootloader is required for NAND boot. Refer below wiki link for more information
Thanks,
Hi,
EEPROM writer code verify the eeprom is flashed properly or not. If eeprom is not flashed properly means you did not get "EEPROM programming completed successfully" message in debug window.
/* Write the EEPROM */ if (flash_eeprom (p_device) == FALSE) { printf ("EEPROM write failed\n"); platform_device_close(p_device->handle); return; } /* verify the flash */ if(flash_verify (p_device) == FALSE) { printf ("EEPROM read verify failed\n"); platform_device_close(p_device->handle); return; } printf ("EEPROM programming completed successfully\n");
Refer section 4.2. Verifying POST on program evm userguide (ti\mcsdk_2_01_02_06\tools\program_evm\program_evm_userguide.pdf) to verify the I2C boot.
eeprom50.bin is a binary file Power On Self Test (POST).
Thanks,