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.

TMS320C6657: IBL programming instruction

Part Number: TMS320C6657


From the evmc6657-instructions.txt, I found the following:

Steps to use IBL on the c6657 EVM

1. Programing "IBL" on the EEPROM at bus address 0x51
(a) Use the I2C EEPROM writer for c6657 EVM from the MCSDK distribution.
(b) Program i2crom_0x51_c6657_le.bin (IBL image) to the EEPROM at I2C BUS
address 0x51 following the EEPROM writer's procedure.

And from the IBL build_instructions.tx, there are two ways to build.

For C6657 Low Cost EVM:

make evm_c6657_i2c ENDIAN=little I2C_BUS_ADDR=0x51
Output images:
IBL image: bin/i2crom_0x51_c6657_le.dat (CCS data format)
: bin/i2crom_0x51_c6657_le.bin (raw binary)

make evm_c6657_i2c ENDIAN=big I2C_BUS_ADDR=0x51
Output images:
IBL image: bin/i2crom_0x51_c6657_be.dat (CCS data format)
: bin/i2crom_0x51_c6657_be.bin (raw binary)

Q1) So which endian I should be using for the build?

From SPRUGY5C, I got the impression that the build output has to be converted by a bunch of utilities so it is EEPROM ready.

Q2) So do I need to do that to the build output?

Q3) I have read posts that mentioned the c6657 needs both iblInit and iblMain. Does the .bin generated above contain both already?

  • Dear Customer,

    Q1) So which endian I should be using for the build?

    You can use the little Endian for the build.

    For flashing binaries and the image formats please follow this link: 

    10.1. Target — Processor SDK RTOS Documentation

    Flashwriters

    • [C66x] eepromwriter_<SOC>.out - writes content to your EVM EEPROM flash memory
    • [C66x] norwriter_<SOC>.out - writes content to your EVM NOR flash memory
    • [C66x] nandwriter_<SOC>.out - writes content to your EVM NAND flash memory

    Flash images

    • [C66x] eeprom50.bin - eeprom binary for address 0x50. The default for C66x is the POST application.
    • [C66x] eeprom51.bin - eeprom binary for address 0x51. The default for C66x is the Intermediate Boot Loader (IBL).

    Regards

    Shankari

  • How about my other two questions?

  • Dear Customer,

    Good day!             

    Please refer this document. Already posted in my previous posts.

    10.1. Target — Processor SDK RTOS Documentation

    Please refer this too.

    http://software-dl.ti.com/processor-sdk-rtos/esd/docs/05_02_00_10/rtos/index_Foundational_Components.html#c66x

                  Q2) So do I need to do that to the build output? 

                 SPRUGY5C, I got the impression that the build output has to be converted by a bunch of utilities so it is EEPROM ready.

    Not required. 

                 Q3) I have read posts that mentioned the c6657 needs both iblInit and iblMain. Does the .bin generated above contain both already?

    Yes. The bin generated is the complete IBL.

    • [C66x] eeprom51.bin - eeprom binary for address 0x51. The default for C66x is the Intermediate Boot Loader (IBL)

    ---------------------------------

    • [C66x] eeprom50.bin - eeprom binary for address 0x50. The default for C66x is the POST application.
    • POST (Power On Self Test) Boot is designed to do a quick self-diagnostic upon boot. The POST application itself is located in

      [SDK Install Path]/pdk_<platform>_<version>/packages/ti/boot/post
      

      This application should already be compiled and flashed into EEPROM out-of-box. Below instructions are for re-compilation or re-flashing only.

    Regards

    Shankari

  • I continue the EEPROM programming procedure by following the PDSK document:

    However, I think there must be something that is not covered in the steps outlined here. When I run the EEPROM writer, it failed at the following line in eepromwriter.c:

    It seems to be looking for something called i2crom.bin. So is there a step that I have missed that is not included in the steps mentioned above? Or is i2crom.bin the same as the app.bin described in the document?

  • Dear Customer,

    Good day!.

                Charles said " It seems to be looking for something called i2crom.bin. So is there a step that I have missed that is not included in the steps mentioned above? Or  is i2crom.bin the same as the app.bin described in the document? "

    Yes, the app.bin is the generic name given applicable for all the binaries to be flashed in the SDK steps.  For IBL, i2crom.bin is the binary to be flashed. So, here the app.bin is the i2crom.bin.

    file_name = i2crom.bin 
    bus_addr = 0x51
    start_addr = 0
    swap_data = 0

    In eepromwriter.c, it reads the filename, bus address, start address, swap data,  from the eepromwriter_input.txt.

    The file name in the eepromwriter_input.txt is "i2crom.bin. "

    So rename the IBL binary you have built ( from your log , "i2crom_0x51_c6657_be.bin " ) as i2crom.bin

    Change the bus_addr as 0x51,  As IBL is flashed into I2C EEPROM at bus address 0x51

    Regards

    Shankari

  • If the writer is reading the .bin from a file, why is there a step that loads the .bin into the memory prior to running the EEPROM writer? Is that step useless then?

  • Charles,

    1. The eepromwriter.c reads the filename, "i2crom" from the eepromwriter_input.txt , to find the length of the binary( i2crom.bin) , so that it will know the total number of bytes to be written. 

    2. This binary, i2crom.bin is loaded into the MSMC RAM at address ( 0x0C000000 ) from where the data is picked and written/flashed up-to the total number of bytes.

    3. The CCS first loads the binary into the MSMC RAM and the flash writer picks the data from the MSMC RAM and flash to the memory.

    For flashing, it will not use the data from the binary file ( copied into the path ...\pdk_c665x_2_0_16\packages\ti\boot\writer\eeprom\evmc6657l\bin)

    It uses just to calculate the data length of the binary file. ( i2crom.bin) 

    Hope this helps?

    Regards

    Shankari

  • Thanks for the explanation.