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.

6670 bootloader utilities SPI

Hi all,

I am new to 6670 bootloader . I searched a lot of information here and still dont know how to get started to creat my boot loader .dat file.

Here a lot of explain the general process of boot and bootloader. But no one and no doncuments explain:

1. Where to download the convert utilities such as Hex6x,exe romparse.exe and so on....

2. How to use those utilities.

3.Yes, I know there should be a boot parameter table and config table and boot table .but how to step-by-step convert and append the boot table/file together to get the final .dat file ??

I am so confused and the project blocked for two weeks now..... 

I have no idea where to get the information i need and just post questiones here again and again and NO ONE help me!

Can you PLEASE help me?

Thanks a lot in advance!!!!! 

  • Hi Frank,

    The hex6x is part of the C6000 Code generation utilities that is part of the code composer studio v5 or v4 that you may be using. This can also be downloaded from ti.com as well. All other utilities required to create the boot image for C667x device are provided as part of the MCSDK 2.x.

    All of these utilities can be run from command line on your PC or can be called from a Makefile that you are using in your build. The MCSDK software provides example to create the boot image for different boot media. Please locate the examples under tools\boot_loader. The examples contain ReadMe.txt to explain how they can be built and you can also look at the user guide Boot and flash section

    Please let us know if you have any follow up questions.

    Regards,

    Rahul

    PS: In your response could you specify what boot mode you intend to use.

  • Rahul Prabhu, Thank you soooooooo much to help me.

    DSP:TMS320TCI6670

    BootMode :SPI

    Followed your guide and I find the utilities which boot loader user guide descripes:

    Utilities used to generate different table formats are listed below:
    Hex6x is used to convert the application code into a boot table format.
    Romparse is used to append the boot parameter to a boot table or a boot configuration table.
    Bootconvert6x is used to convert the boot table derived from a little endian application code to a big endian format. This is required as the RBL assumes all the images to be in big endian mode.
    B2i2c is used to convert the boot table into a i2c/spi format table. This table can be loaded into an EEPROM that is connected through I2C to the device.

    But I still dont know how to get started to CONVERT. The examples in tools\boot_loader  is just a normal project with .map and .out file, but did NOT tell how to use the utilities. How to run in the PC cmd? What is the format? is there any parameters? How to config the parameters? 

    For example, we use ping 192.168.0.1 in PC to run "ping" cmd, and use subst x: C:\ti to run "subst" cmd. So how to use hex6x? how to use romparse.exe????  what is the format and syntax ?? how to define the input and output file? is there any parameters used to convert??? No docs explain those.


    Furthermore. there is NOT a example for SPI mode. 


    Is there any run-able example from which i can learn how to use the utilities, and step by step to (from the beginning .out and .map) to obtain boot table, parameter table and config table, and how to append them tegether to obtain the final available boot image.


    Also, I know there should be a parameter table  , but how to define a parameter table? what is the format? shall i define it in a .c file or someelse?  I can't find any useful information from the user guide:http://www.ti.com/lit/ug/sprugy5c/sprugy5c.pdf      I am also confused about the configuration table which i used to config the DDR before load the app image.


    I think a step by step example and related docs will be very useful for me.


    Thanks!

    Frank

  • Hi Rahul Prabhu, I am clear about some of the above questions i asked. Now I have a most urgent  question:


    I know how to append a parameter table to boot table.But I DO NOT know how to define a config table and how to append it to the parameter table and boot table.


    I got a .dat file like this:

    ..\utilities\hex6x -order L ..\utilities\boot_sript.rmd bootcode.out

    ..\utilities\b2i2c boot_code.btbl boot code.btbl.i2c

    ..\utilities\b2ccs boot_code.btbl.i2c boot_code.btbl.i2c.ccs

    ..\utilities\romparse -fill 0xff -rom_base 0 ..\utilities\spi.map

    -boot parameter table is spi.map ,

    -boot table is boot_code.btbl.i2c.ccs, which is defined in the spi.map

    Through the romparse operation, the parameter table is appended to the boot table and this hello world program boots up.

    I have to define a boot configuration table to cfg the DDR.Should I still use romparse.exe to append the boot configuration table ? How ? 

    Thanks a lot!

     Frank

  • Hi Frank,

    You may find the example posted useful to get started with converting your application binary to the boot table format.

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/288354/1006025.aspx#1006025

    the example demonstrates how the boot image is created for SPI boot wherein  the SPI parameter table needs to be varied and the DDR3 needs to be initialized.

    Regards,

    Rahul

  • Thanks for your example. The boot image finally works. Now I am trying to boot  the multicore project. Should I just use mergebtbl.exe to merge the 4 core image ? Refer to the user guide , I should set the Magic Address and the IPC interrupe.I dont know how to Write the Magic Address ,and how to trigger the IPC interrupt.

    Can you plz give me some advice?

    Then I  am going to verify this quesion.Thanks again for your patient !

    Best regards,

    Frank

  • Hi Rahul,

     

    I use the ddrboot cfg table from the 6670 bootloader user guide instead of your examle ,but found that there is not enough fields to configure the DDR,such as leveling params, ratios and other params. I configure those field in the main().

    Another serious problem is the bootloader ug:http://www.ti.com/lit/ug/sprugy5c/sprugy5c.pdf

    I am afraid this version is sooooo bad, and have nothing useful about the details. I found the param table and description from the former version sprugy5b.pdf.

    you can make a comparsion about the two vesion, what is the problem?!! Plz feedback to TI literature team.

     

    Also, this is only one bootloader ug for c66x and c64x multicore DSP, but i still have not find any reference about your   bootEmif4Tbl_s. plz tell me where to download the reference docs tell the red colord params?

     

    Further more, I download the ROM software and found it is not execute as your example,  it does not use the bootEmif4Tbl_s table at all.So how is the DDR initialized? or the Rom software download from the TI.com is not the exact program running in the ROM?

     

    I am afraid the bootloader literature is not  correct. Which is the major block issues.

    Thanks to your example, unless I will get blocked for a longer time because of no docs to reference from Ti.com but only your example!

     

     

    typedef struct bootEmif4Tbl_s  {

        UINT32  configSelect_msw;               /* Bit map defining which registers to set */
        UINT32  configSelect_slsw;              /* Bit map defining which registers to set */
        UINT32  configSelect_lsw;               /* Bit map defining which registers to set */.-------------the UG tell there is ONLY one UINT32 to cfg the enable fields but NOT three!!!!
        
        UINT32  pllPrediv;                      /* Values of all 0s will disable the pll */
        UINT32  pllMult;
        UINT32  pllPostDiv;    -----------------------the user guide tell here should one Uint32 for pll but NOT three! 

        UINT32  sdRamConfig;                /* Controlled by bit 1 of configSelect_msw */
        UINT32  sdRamConfig2;               /* Bit 2 */
        UINT32  sdRamRefreshCtl;            /* Bit 3 */
        UINT32  sdRamTiming1;               /* Bit 4 */
        UINT32  sdRamTiming2;               /* Bit 5 */
        UINT32  sdRamTiming3;               /* Bit 6 */
        UINT32  lpDdrNvmTiming;             /* Bit 7 */
        UINT32  powerManageCtl;             /* Bit 8 */
        UINT32  iODFTTestLogic;             /* Bit 9 */
        UINT32  performCountCfg;            /* Bit 10 */
        UINT32  performCountMstRegSel;      /* Bit 11 */
        UINT32  readIdleCtl;                /* Bit 12 */
        UINT32  sysVbusmIntEnSet;           /* Bit 13 */
        UINT32  sdRamOutImpdedCalCfg;       /* Bit 14 */
        UINT32  tempAlterCfg;               /* Bit 15 */
        UINT32  ddrPhyCtl1;                 /* Bit 16 */
        UINT32  ddrPhyCtl2;                 /* Bit 17 */
        UINT32  priClassSvceMap;            /* Bit 18 */
        UINT32  mstId2ClsSvce1Map;          /* Bit 19 */
        UINT32  mstId2ClsSvce2Map;          /* Bit 20 */
        UINT32  eccCtl;                     /* Bit 21 */
        UINT32  eccRange1;                  /* Bit 22 */
        UINT32  eccRange2;                  /* Bit 23 */
        UINT32  rdWrtExcThresh;             /* Bit 24 */
        
        UINT32 chipConfig[64];--------------the UG does NOT tell a word about this 64 UINT32,what is this? Is there any docs tell the detail?
       
    } BOOT_EMIF4_TBL_T;

     

    I think a more correct user guide literature will help us DSPers a lot and will reduce your time to reply us again and again....PLEASE feedback to the TI literature team to take action to update enough useful docs.

    Thanks,

    Frank

  • Frank,

    All the information common to booting the Keystone devices devices is provided as part of the Bootloader user guide while all the informtation specific to individual device in the family is provided as part of the data sheet. Hence information on Parameter table, DEVSTAT registers, DDR configuration table is provided in the datasheet for the device rather than the bootloader user guide. I found that this information is missing in the C6670 documentation but is available in the C6678 documentation.For C6678, you can look at section 2.5.3.8 for the DDR3  configuration table settings.This also applies to C6670. I have filed a literature bug on your behalf and should have this fixed int he next update.

    The EMIF4 Table is used by the boot ROM. Please locate the functions mainExtMemConfig (); and mainGetExtMemParams (); in the rmain.c file. These functions are alias for mainEmif4Params and mainEmif4Cfg that provided in the file mainemif4cfg.c file.

    Regards,

    Rahul

  • Hi Rahul,

    Thanks for you reply!

    I will read the sections that your pointed out and let you know the latest progress.