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.

re-generate eeprom50.bin

All-

Is there a document with step-by-step procedure for creating eeprom50.bin (POST) for the EVM 6678?

We have made a modified POST program (with additional tests and diagnostics) for our custom 6678 board.  We can download and run the advanced POST via XDS560 without problems.  Now we need to reprogram our I2C EEPROM.  From what I have read on the forums this is a tricky procedure that many have struggled with, so first I want to be sure I can re-generate the basic eeprom50.bin.  Note also that we can write the default eeprom50.bin to our board (and boot it), so we know our I2C circuitry is Ok.

Thanks.

-Jeff
Signalogic

  • Hi Jeff,

    To regenerate eeprom50.bin file please use post_romparse.sh(For Linux system) or post_romparse.bat(For Windows system). This file is available at <MCSDK_INSTALL_DIR>/tools/post/evmc6678l/bin/ location.

    Before using this file you require to set path for CGT_INSTALL_DIR variable.

    Please let me know if you face any issue.

  • Rakesh-

    > Before using this file you require to set path for CGT_INSTALL_DIR variable.

    Do you mean, inside the romparse.bat file, to change this line:

      set C6000_CG_DIR="C:\ti\C6000 Code Generation Tools 7.4.0"

    to be something like this?

      set C6000_CG_DIR="C:\ti\ccsv5\tools\compiler\c6000_7.4.4"

    Note that this is what  I can find on our WinXP system, and is equivalent to the CG_TOOL_ROOT path variable in our CCS configuration.

    Thanks.

    -Jeff

  • Yes Jeff,

    You are correct. You have to set C600_CG_DIR path as you mentioned.

  • Rakesh-

    Ok romparse.bat is attempting to run.

    Now we face the dreaded I2C size issue.  The b2i2c utility produces the error message "max input array size exceeded".  There is a SIZE variable inside b2i2c.c set at 0x20000 -- is this due to an expected size limitation of 128K byte for the I2C EEPROM?

    Thanks.

    -Jeff

  • Yes Jeff,

    This error shows your application size is more than limited size of I2C eeprom. Please try to reduce your application size.

  • Rakesh-

    We have an advanced POST that contains tests and diagnostics for SRIO and Ethernet.  I was able to create a non-SRIO version of our POST, with resulting .bin file size around 90 kByte, with no errors from bconvert64x or b2i2c utilities (there was one warning about padding a section size to multiple of 4, but that seems normal enough).

    When I try to program this using eepromwriter, I'm getting an error message about device size.  Our I2C EEPROM capacity is 128 kByte, so a 90 kByte .bin file should fit, correct?  I think the issue is that eepromwriter uses platform_lib, and we may need to rebuild eepromwriter with correct parameters for our I2C device.  Have you seen that before?

    -Jeff

  • Jeff,

    The on-board 128KB EEPROM is devided in two 64KB EEPROM, i.e. you can access entire EEPROM usinig two different I2C address(0x50 and 0x51). So, .bin file of your application must be less than 64KB.

  • Rakesh-

    What are the steps to write and boot a 128 kByte program to I2C address 0x50?  I assume I can modify eepromwriter; will the 6678 bootloader stop after 64 kByte?  If so, could I read the 2nd 64 kByte manually (i.e. after entry point is reached and code is running)?

    Is there a previous forum thread, wiki, or other example I can follow?

    Thanks.

    -Jeff

  • Hi Jeff,

    I am not sure after below solution your application will boot or not, but yes you can write more than 64KB file to EEPROM.

    In platform.c file (available at <PDK_INSTALL_DIR>/packages/ti/platform/c6678/platform_lib/src/ folder) replace PLATFORM_DEVICE_info gDeviceEeprom0 = {PLATFORM_EEPROM_MANUFACTURER_ID,PLATFORM_EEPROM_DEVICE_ID_1,PLATFORM_DEVICE_EEPROM,    8, 1, 1, 65536, 0, PLATFORM_DEVID_EEPROM50, 0, 0, 0, NULL, NULL};

    by 

    PLATFORM_DEVICE_info gDeviceEeprom0 = {PLATFORM_EEPROM_MANUFACTURER_ID,PLATFORM_EEPROM_DEVICE_ID_1,PLATFORM_DEVICE_EEPROM,    8, 1, 1, 131072, 0, PLATFORM_DEVID_EEPROM50, 0, 0, 0, NULL, NULL};

    Then recompile the platform Library first and then eeprom writer utility.

    Please let us know your results.

  • Rakesh-

    Thanks.  Yes I've already modified platform_lib in order to support our custom board.  But I'm unsure what the onchip bootloader will do.  Do you know how the RBL terminates?  Is there something it reads from the image data, or does it continue until 64 kByte and then hard-stop, even if the image is smaller?

    Thanks.

    -Jeff

  • Jeff,

    I have also the same doubt. Sorry Jeff, I am not able to answer this question. I think any TI member only can answer this.

  • Hi Jeff,

    Since the two 64KB I2C EEPROM are not on the same address line. You will need to change the device address field(dev_addr as defined in tiboot.h)  in the I2C boot parameter table and re-enter the ROM to load the rest of the 64KB I2C image. The bootROM typcially gets this information from the boot switches as you can see from the EVM swtich settings.  Pin 4 of SW5 is the I2C address pin but this can also be chnaged in software by loading your own parameter table.with the changed parameter table address. For Details on I2C parameter table ,refer to the datasheet for the device or check out the tiboot.h in the IBL code or RBL source we provide on the wikis.

    Inorder to accomplish your usecase, you will need to create a two stage boot process wherein you chnage the I2C parameter table at the end of the 1st stage using a memcopy and re-enter boot to load the second stage from a different address line. If this is not done the RBL will halt at the end of the 64KB connected to address line 0x50.

    Regardfs,

    Rahul