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.

TDA3: How to convert a DDR3 image to an LPDDR2 image

Part Number: TDA3

Hi.

I succeeded in writing the example image with 3.5 Load using QSPI on the TDA3xx-EVM Board via VisionSDK_UserGuide_TDA3xx in UserGuide.

In the next step, I want to write the example image to the Custom Board.

However, Custom Board is DM50x + LPDDR2, TDA3xx + LPDDR2. (2 Board Exist)

I know TDA3xx-EVM is TDA3xx + DDR3.

So I want to know how to change the example image to be available on the DM50x + LPDDR2, and how to change the example image to be available on the TDA3xx + LPDDR2.

For DM50x + LPDDR2, installation with CCS succeeded.
(Script -> LPDDR2 Memory set)

I want to install it with QSPI.

I tried to find a way through my own search.

I checked for the VisionSDK_UserGuide_Memory Map in FeatureSpecificUserGuide and TDA3xx_ddr_config.gel in ccs_base/emulation/gel/TDA3x, but no way was found.
(There may be a way in the document, but I may not have understood it.)

It may be a rudimentary question, but please help me.

Thank you.

  • Hi Kim,

    You can modify <vsdk>\ti_components\drivers\<pdk>\packages\ti\boot\sbl_auto\sbl_app\src\tda3xx\sbl_tda3xx_main.c to call SBLUtilsLPDDR2Config API and remove different #if for configuring different DDRs.

    Regards,
    Rishabh
  • Thank you very much, Rishabh.

    But there is one question.

    When I build Example Image, I run gmake from "PROCESSOR_SDK_VISION_03_04_00_00\vision_sdk\build".

    Will modifying "PROCESSOR_SDK_VISION_03_04_00_00\ti_components\drivers\<pdk>\packages\ti\boot\sbl_auto\sbl_app\src\tda3xx\sbl_tda3xx_main.c" file affect my example image build?

    I thought "PROCESSOR_SDK_VISION_03_04_00_00\vision_sdk" and "PROCESSOR_SDK_VISION_03_04_00_00\ti_components" were separate, but I wonder if I was wrong.


    Separately, I found a section in file that calls the function.

    I will try "if (SBLLIB_SILICON_PACKAGE_TYPE_! 2x12 == siliconPackageType)" be executed (there is SBLUtilsLPDDR2Config function inside it) and try not to execute "else" part.

    Thank you again.

  • Hi Kim,

    When you build sbl from "PROCESSOR_SDK_VISION_03_04_00_00\vision_sdk\build", make will be done from "PROCESSOR_SDK_VISION_03_04_00_00\ti_components\drivers\<pdk>\packages\ti\boot\sbl_auto\" directory.

    What I meant is remove the below code and directly call SBLUtilsLPDDR2Config(<speed>).

    if (SBLLIB_SILICON_PACKAGE_TYPE_12X12 == siliconPackageType)
    {
        /*Configure LPDDR2 */
        #if (SBLLIB_DDR_TYPE_LPDDR2 == SBL_LIB_CONFIG_DDR_TYPE_12X12)
        SBLUtilsLPDDR2Config(
            (uint32_t) SBL_LIB_CONFIG_DDR_SPEED_12X12);
        #else
        SBLLibPrintf(SBLLIB_TRACE_LEVEL_ERROR,
                     "\n Invalid DDR Type \n");
        SBLLibAbortBoot();
        #endif
        SBLLibPrintf(SBLLIB_TRACE_LEVEL_INFO1,
                     "\n DDR Configuration Completed \n");
    }
    else /* SBLLIB_SILICON_PACKAGE_TYPE_15X15 == siliconPackageType */
    {
        /* Configure DDR */
        #if (SBLLIB_DDR_TYPE_DDR2 == SBL_LIB_CONFIG_DDR_TYPE)
        SBLUtilsDDR2Config(SBL_LIB_CONFIG_DDR_SPEED);
        #elif (SBLLIB_DDR_TYPE_DDR3 == SBL_LIB_CONFIG_DDR_TYPE)
        SBLUtilsDDR3Config(SBL_LIB_CONFIG_DDR_SPEED);
        #else
        SBLLibPrintf(SBLLIB_TRACE_LEVEL_ERROR,
                     "\n Invalid DDR Type \n");
        SBLLibAbortBoot();
        #endif
        SBLLibPrintf(SBLLIB_TRACE_LEVEL_INFO1,
                     "\n DDR Configuration Completed \n");
    }
    

    Regards,

    Rishabh

  • I fully understand it.

    Thank you very much for your detailed explanation.