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.

CCS/TDA2EG: tda2ex

Part Number: TDA2EG

Tool/software: Code Composer Studio

Hello,

I've been doing the software leveling in code composer and I have some doubts.

After fullfilling SPRAC36A_EMIF_RegisterConfig.xlsm file, I don't know in which file I have to include those results to have a starting point for the leveling procedure.

After performing the software leveling I have obtained a TDA2Ex_DDR3*.c file, I don't know what to do with that file (where I have to include it or call it).

On the other hand I would be pleased if someone can expain which are the differences between software leveling, hardware leveling and full leveling as mentioned in TDA2Ex_SR2.0_SR1.0_Public_TRM_vA.pdf, how can I perform the hardware leveling instead of software leveling?

Regards,

Javier

  • Hello ,

    You should look into using hardware leveling, see if this post helps: e2e.ti.com/.../2389190

    Thanks,
    Alex
  • So which one from the original thread is not clear? Again software leveling is not recommended. Have you followed the Emif app note and what is suggested there to enable full/hardware leveling?

    thanks,
    Alex
  • If I'm not mistaken leveling procedure (hardware or software) depends upon which option you select in the excel file, is that correct?
    I've got two versions of the excel, one it's called Avatar_EMIF_RegisterConfig.xlsm and the other one (the good one) SPRAC36A_EMIF_RegisterConfig.xlsm
    I believe there is a bug in that file because it says "runtime error 91" or maybe I'm doing something wrong.

    Regards,

  • ,

    I think the option to select software procedure is legacy. AFAIK software leveling was there for some pre-samples before hardware leveling was verified and characterized. Not sure about that bug either. Let me bring in more people here to try to help you. They will comment here soon.

    thanks,

    Alex

  • Hi Javier,

    As Alex mentioned, please select hardware leveling in the .xls file. This is the recommended approach for new designs.

    The .xls was originally provided as part of an installer that included some additional content (such as software leveling source code). Some of the features in the .xls depended on the full package and unfortunately did not get removed when the .xls was uploaded to ti.com as a stand-alone download. In addition to software leveling, the "Save User Config" and "Load User Config" buttons were not updated for use outside of the full package installer, which I believe is causing the error you are seeing.

    Let us know if this helps or if you still have questions or doubts.

    Best regards,
    Kevin
  • Thanks Kevin.

    Once I've got the .c file generated by CCS after the write leveling process is done, where I have to include it in the bootloader?

    Regards,
  • Hi Javier,

    which SDK you use?

    Regards,
    Yordan
  • Hi Javier,

    As Kevin suggested you should do HW leveling. In case you are using SBL, HW leveling is already enabled by default.

    Regards,
    Rishabh
  • Please, could you give more information on how this file needs to be integrated? What is the intention of this file?
  • Hi Javier,

    What is the software package you are using and what version. Can you share the file you have generated.

    Regards,
    Rishabh
  • Hi Rishabh,

    The software is Code Composer Studio Version: 7.3.0.00019

    The SDK is Vision SDK 3.0.0.1

    Regards,

    /*                   EMIF1 Results
     **********************************************************
     *    Byte level Slave Ratio Search Program Values  
     **********************************************************
     * PARAMETER        BYTE   MAX    MIN    OPT   RANGE
     **********************************************************
     * Read DQS          0    0x06f  0x002  0x038  0x06d
     * Read DQS          1    0x075  0x002  0x03b  0x073
     * Read DQS          2    0x07d  0x000  0x03e  0x07d
     * Read DQS          3    0x079  0x000  0x03c  0x079
     *
     * Read DQS GATE     0    0x109  0x03e  0x0a3  0x0cb
     * Read DQS GATE     1    0x11b  0x050  0x0b5  0x0cb
     * Read DQS GATE     2    0x0d7  0x00d  0x072  0x0ca
     * Read DQS GATE     3    0x0f0  0x025  0x08a  0x0cb
     *
     * Write DQS         0    0x083  0x012  0x04a  0x071
     * Write DQS         1    0x09c  0x029  0x062  0x073
     * Write DQS         2    0x079  0x008  0x040  0x071
     * Write DQS         3    0x08d  0x01a  0x053  0x073
     *
     */
    
    
    const unsigned int TDA2Ex_DDR3L [] = {
        0x10040100, // EMIF1_EXT_PHY_CTRL_1
        0x00a300a3, // EMIF1_EXT_PHY_CTRL_2
        0x00b500b5, // EMIF1_EXT_PHY_CTRL_3
        0x00720072, // EMIF1_EXT_PHY_CTRL_4
        0x008a008a, // EMIF1_EXT_PHY_CTRL_5
        0x006b006b, // EMIF1_EXT_PHY_CTRL_6
        0x00380038, // EMIF1_EXT_PHY_CTRL_7
        0x003b003b, // EMIF1_EXT_PHY_CTRL_8
        0x003e003e, // EMIF1_EXT_PHY_CTRL_9
        0x003c003c, // EMIF1_EXT_PHY_CTRL_10
        0x002f002f, // EMIF1_EXT_PHY_CTRL_11
        0x006b006b, // EMIF1_EXT_PHY_CTRL_12
        0x006f006f, // EMIF1_EXT_PHY_CTRL_13
        0x00600060, // EMIF1_EXT_PHY_CTRL_14
        0x00600060, // EMIF1_EXT_PHY_CTRL_15
        0x00600060, // EMIF1_EXT_PHY_CTRL_16
        0x004a004a, // EMIF1_EXT_PHY_CTRL_17
        0x00620062, // EMIF1_EXT_PHY_CTRL_18
        0x00400040, // EMIF1_EXT_PHY_CTRL_19
        0x00530053, // EMIF1_EXT_PHY_CTRL_20
        0x00400040, // EMIF1_EXT_PHY_CTRL_21
        0x00800080, // EMIF1_EXT_PHY_CTRL_22
        0x00800080, // EMIF1_EXT_PHY_CTRL_23
        0x40010080, // EMIF1_EXT_PHY_CTRL_24
        0x08102040, // EMIF1_EXT_PHY_CTRL_25
        0x005b005b, // EMIF1_EXT_PHY_CTRL_26
        0x005b005b, // EMIF1_EXT_PHY_CTRL_27
        0x005b005b, // EMIF1_EXT_PHY_CTRL_28
        0x005b005b, // EMIF1_EXT_PHY_CTRL_29
        0x005b005b, // EMIF1_EXT_PHY_CTRL_30
        0x00300030, // EMIF1_EXT_PHY_CTRL_31
        0x00300030, // EMIF1_EXT_PHY_CTRL_32
        0x00300030, // EMIF1_EXT_PHY_CTRL_33
        0x00300030, // EMIF1_EXT_PHY_CTRL_34
        0x00300030, // EMIF1_EXT_PHY_CTRL_35
        0x00000077, // EMIF1_EXT_PHY_CTRL_36
    };
    

  • The software is Code Composer Studio Version: 7.3.0.00019
    The SDK is Vision SDK 3.0.0.1
  • Hi Javier,

    SBL already implements hardware leveling for DDR and the same is supported in gel. You don't need to do anything else.
    Are you facing any issue with HW leveling?

    Regards,
    Rishabh
  • Hi, thanks.

    Good to know, but I'm not sure how to activate that hardware level function in the SBL.
    I have done the level procedure with a Code Composer Script and seems to work fine... it also generates a .c file but I don't know what to do with it. Could you help me?

    Regards,
    Javier
  • Hi Javier,

    Its is already enabled by default. Software leveling is not the recommended approach.
    In case you want to enable it you will need to modify DDR configuration.
    For gel files you should modify TDA2xx_ddr_config.gel.
    For SBL you should modify ti_components\drivers\pdk_01_08_01_06\packages\ti\boot\sbl_auto\sbl_utils\src\tda2xx\sbl_utils_tda2xx_ddr_config.c.

    Regards,
    Rishabh