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.

performance drop on porting from EVMDM642 to DM6435

Hi,
  I am porting my application from a EVMDM642 board to a DM6435 board (not an EVM). I am seeing a performance drop by a factor of about 3 to 4. I have the MAR128to159 set to 0x0000ffff, I profiled the code to see if the cache is being thrashed  - about 80% of the cycles are used in processing data. I have included the tcf settings at the end of the message. Is there any other setting that I should be modifying? Any thing I should be trying?
 
  Thanks
 
 
 
 
  ---------------------
 tcf
 
  /*
 *  Load platform file for DM6437
 */
utils.loadPlatform("ti.platforms.evmDM6437");

/* Enable Time Stamp */
bios.LOG.TS = true;

/*
 *  Import driver TCI files.
 */


utils.importFile("ti/sdo/pspdrivers/system/dm6437/bios/evmDM6437/video/sample/dm6437_previewer.tci");
utils.importFile("ti/sdo/pspdrivers/system/dm6437/bios/evmDM6437/video/sample/dm6437_vpfe0.tci");

/*
 * Enable common BIOS features used by all examples
 */
bios.enableRealTimeAnalysis(prog);
bios.enableMemoryHeaps(prog);
bios.enableRtdx(prog);
bios.enableTskManager(prog);

/* Enable ECM Handler */
bios.ECM.ENABLE = 1;

bios.MEM.instance("DDR2").createHeap = 1;
bios.MEM.instance("DDR2").heapSize = 0x03c00000;

bios.LOG.instance("LOG_system").bufLen = 1024;
bios.LOG.instance("LOG_system").bufSeg = prog.get("IRAM");

bios.LOG_system.bufLen = 1024;
bios.LOG_system.logType = "circular";

bios.LOG.create("trace");
bios.LOG.instance("trace").bufLen = 1024;
bios.LOG.instance("trace").bufSeg = prog.get("IRAM");

bios.LOG.create("DVTEvent_Log");
bios.LOG.instance("DVTEvent_Log").bufSeg = prog.get("IRAM");
bios.LOG.instance("DVTEvent_Log").bufLen = 8192;
bios.LOG.instance("DVTEvent_Log").comment = "DVT";

/*Decide on sections*/
bios.SIO.OBJMEMSEG = prog.get("DDR2");
bios.DIO.OBJMEMSEG = prog.get("DDR2");
bios.SEM.OBJMEMSEG = prog.get("DDR2");
bios.MBX.OBJMEMSEG = prog.get("DDR2");
bios.QUE.OBJMEMSEG = prog.get("DDR2");
bios.LCK.OBJMEMSEG = prog.get("DDR2");
bios.SWI.OBJMEMSEG = prog.get("DDR2");
bios.TSK.OBJMEMSEG = prog.get("DDR2");
bios.TSK.STACKSEG = prog.get("DDR2");
bios.PRD.OBJMEMSEG = prog.get("DDR2");
bios.MEM.BIOSOBJSEG = prog.get("DDR2");
bios.MEM.MALLOCSEG = prog.get("DDR2");
bios.MEM.ARGSSEG = prog.get("DDR2");
bios.MEM.STACKSEG = prog.get("DDR2");
bios.MEM.GBLINITSEG = prog.get("DDR2");
bios.MEM.TRCDATASEG = prog.get("DDR2");
bios.MEM.OBJSEG = prog.get("DDR2");
bios.MEM.SYSDATASEG = prog.get("DDR2");
bios.MEM.TEXTSEG = prog.get("DDR2");
bios.MEM.SWITCHSEG = prog.get("DDR2");
bios.MEM.BSSSEG = prog.get("DDR2");
bios.MEM.CINITSEG = prog.get("DDR2");
bios.MEM.FARSEG = prog.get("DDR2");
bios.MEM.PINITSEG = prog.get("DDR2");
bios.MEM.CONSTSEG = prog.get("DDR2");
bios.MEM.DATASEG = prog.get("DDR2");
bios.MEM.CIOSEG = prog.get("DDR2");
bios.MEM.BIOSSEG = prog.get("DDR2");
bios.MEM.SYSINITSEG = prog.get("DDR2");
bios.MEM.HWISEG = prog.get("DDR2");
bios.MEM.HWIVECSEG = prog.get("DDR2");
bios.MEM.RTDXTEXTSEG = prog.get("DDR2");

bios.MEM.MALLOCSEG = prog.get("DDR2");
bios.BUF.OBJMEMSEG = prog.get("DDR2");
bios.LOG.OBJMEMSEG = prog.get("DDR2");
bios.STS.OBJMEMSEG = prog.get("DDR2");
bios.IDL.OBJMEMSEG = prog.get("DDR2");
bios.DHL.OBJMEMSEG = prog.get("DDR2");
bios.RTDX.RTDXDATASEG = prog.get("DDR2");
bios.TSK.instance("TSK_idle").stackMemSeg = prog.get("DDR2");

bios.HST.OBJMEMSEG = prog.get("DDR2");
bios.HST.instance("RTA_fromHost").bufSeg = prog.get("DDR2");
bios.HST.instance("RTA_toHost").bufSeg = prog.get("DDR2");
bios.SYS.TRACESEG = prog.get("DDR2");
bios.PIP.OBJMEMSEG = prog.get("DDR2");
bios.CLK.OBJMEMSEG = prog.get("DDR2");

bios.CLK.RESETTIMER = 1;

bios.GBL.ENABLEINST = 1;
bios.GBL.C64PLUSMAR128to159 = 0x0000ffff;

bios.MEM.STACKSIZE = 0x8000;

/* ECM configuration - manually Reflect these settings in soc.h */
bios.HWI.instance("HWI_INT7").interruptSelectNumber = 0;
bios.HWI.instance("HWI_INT8").interruptSelectNumber = 1;
bios.HWI.instance("HWI_INT9").interruptSelectNumber = 2;
bios.HWI.instance("HWI_INT10").interruptSelectNumber = 3;

// !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!
prog.gen();

  • What are you doing with the L2?  I see a few references to "IRAM" in there, but I can't imagine that's filling the entire L2.  Can you make the length of IRAM half it's current size and turn on 64k of L2 cache?  Like this...

    bios.MEM.instance("IRAM").len = 0x00010000;
    bios.GBL.C64PLUSL2CFG = "64k";

    I don't know how your L2 was configured on DM642, but that could make a big difference.

  • Hi,

       I am using the tcf for the sample capture application that came with the camera and DM6435 card, I am not sure why  the default setting for L2 was as such. I changed the tcf as suggested , I did not see any improvements in speed. The EVMDM642 used the following settings

    Thanks!

    ------

    EVMDM642 settings

    environment["ti.bios.oldMemoryNames"] = true;

    /* loading the generic platform */
    var params = {};
    params.clockRate = 720.000000;
    params.deviceName = "DM642";
    params.catalogName = "ti.catalog.c6000";
    params.regs = {};
    params.regs.l2Mode = "4-way cache (0k)";
    utils.loadPlatform("ti.platforms.generic", params);


    /* enabling DSP/BIOS components */
    bios.GBL.ENABLEINST = true;
    bios.MEM.NOMEMORYHEAPS = false;
    bios.RTDX.ENABLERTDX = true;
    bios.HST.HOSTLINKTYPE = "RTDX";
    bios.TSK.ENABLETSK = true;
    bios.GBL.ENABLEALLTRC = true;

    bios.GBL.ENDIANMODE = "little";

    bios.GBL.C641XCONFIGUREL2 = true;
    bios.ISRAM.createHeap = true;
    bios.ISRAM.heapSize = 0x8000;

    bios.MEM.BIOSOBJSEG = prog.get("ISRAM");
    bios.MEM.MALLOCSEG = prog.get("ISRAM");
    bios.TSK.STACKSEG = prog.get("ISRAM");


    /* applying user changes */
    bios.SDRAM = bios.MEM.create("SDRAM");
    bios.SDRAM.comment = "This object defines space for the DSP's off-chip memory";
    bios.SDRAM.base = 0x80000000;
    bios.SDRAM.len = 0x1ff0000;
    bios.SDRAM.heapSize = 0x1b00000;
    bios.SDRAM.enableHeapLabel = 1;
    bios.SDRAM.heapLabel = prog.extern("EXTERNALHEAP");
    bios.SDRAM.space = "code/data";
    bios.tskLoopback = bios.TSK.create("tskLoopback");
    bios.TSK_bkgProc = bios.TSK.create("TSK_bkgProc");
    bios.trace = bios.LOG.create("trace");
    bios.mbxProcess = bios.MBX.create("mbxProcess");
    bios.VP0CAPTURE = bios.UDEV.create("VP0CAPTURE");
    bios.VP1CAPTURE = bios.UDEV.create("VP1CAPTURE");
    bios.VP2DISPLAY = bios.UDEV.create("VP2DISPLAY");
    bios.RTA_fromHost.bufSeg = prog.get("SDRAM");
    bios.RTA_toHost.bufSeg = prog.get("SDRAM");
    bios.TSK_idle.stackMemSeg = prog.get("SDRAM");
    bios.LOG_system.bufSeg = prog.get("SDRAM");
    bios.LOG_system.bufLen = 0x400;
    bios.MEM.ARGSSEG = prog.get("SDRAM");
    bios.MEM.BIOSSEG = prog.get("SDRAM");
    bios.MEM.STACKSIZE = 0x1000;
    bios.MEM.STACKSEG = prog.get("SDRAM");
    bios.MEM.SYSINITSEG = prog.get("SDRAM");
    bios.MEM.GBLINITSEG = prog.get("SDRAM");
    bios.MEM.TRCDATASEG = prog.get("SDRAM");
    bios.MEM.SYSDATASEG = prog.get("SDRAM");
    bios.MEM.OBJSEG = prog.get("SDRAM");
    bios.MEM.BIOSOBJSEG = prog.get("SDRAM");
    bios.MEM.MALLOCSEG = prog.get("SDRAM");
    bios.MEM.TEXTSEG = prog.get("SDRAM");
    bios.MEM.SWITCHSEG = prog.get("SDRAM");
    bios.MEM.BSSSEG = prog.get("SDRAM");
    bios.MEM.FARSEG = prog.get("SDRAM");
    bios.MEM.CINITSEG = prog.get("SDRAM");
    bios.MEM.PINITSEG = prog.get("SDRAM");
    bios.MEM.CONSTSEG = prog.get("SDRAM");
    bios.MEM.DATASEG = prog.get("SDRAM");
    bios.MEM.CIOSEG = prog.get("SDRAM");
    bios.MEM.SYSMEMSEG = prog.get("SDRAM");
    bios.MEM.HWISEG = prog.get("SDRAM");
    bios.MEM.HWIVECSEG = prog.get("SDRAM");
    bios.MEM.RTDXTEXTSEG = prog.get("SDRAM");
    bios.GBL.CALLUSERINITFXN = 1;
    bios.BUF.OBJMEMSEG = prog.get("SDRAM");
    bios.PRD.OBJMEMSEG = prog.get("SDRAM");
    bios.HST.OBJMEMSEG = prog.get("SDRAM");
    bios.TSK.OBJMEMSEG = prog.get("SDRAM");
    bios.TSK.STACKSEG = prog.get("SDRAM");
    bios.tskLoopback.comment = "Loopback Task";
    bios.tskLoopback.fxn = prog.extern("tskVideoLoopback");
    bios.tskLoopback.stackSize = 0x7d00;
    bios.tskLoopback.stackMemSeg = prog.get("SDRAM");
    bios.TSK_bkgProc.fxn = prog.extern("tskBkgProc");
    bios.TSK_bkgProc.stackMemSeg = prog.get("SDRAM");
    bios.TSK_bkgProc.priority = 0x2;
    bios.IDL.OBJMEMSEG = prog.get("SDRAM");
    bios.LNK_dataPump.order = 1;
    bios.RTA_dispatcher.order = 0x2;
    bios.IDL_cpuLoad.order = 0x3;
    bios.LOG.OBJMEMSEG = prog.get("SDRAM");
    bios.trace.bufSeg = prog.get("SDRAM");
    bios.trace.bufLen = 0x400;
    bios.PIP.OBJMEMSEG = prog.get("SDRAM");
    bios.SEM.OBJMEMSEG = prog.get("SDRAM");
    bios.MBX.OBJMEMSEG = prog.get("SDRAM");
    bios.mbxProcess.messageSize = 0x14;
    bios.mbxProcess.length = 0x5;
    bios.mbxProcess.elementSeg = prog.get("SDRAM");
    bios.QUE.OBJMEMSEG = prog.get("SDRAM");
    bios.LCK.OBJMEMSEG = prog.get("SDRAM");
    bios.SIO.OBJMEMSEG = prog.get("SDRAM");
    bios.STS.OBJMEMSEG = prog.get("SDRAM");
    bios.SYS.TRACESEG = prog.get("SDRAM");
    bios.GIO.ENABLEGIO = 1;
    bios.VP0CAPTURE.fxnTable = prog.extern("VPORTCAP_Fxns");
    bios.VP0CAPTURE.fxnTableType = "IOM_Fxns";
    bios.VP0CAPTURE.params = prog.extern("EVMDM642_vCapParamsPort");
    bios.VP1CAPTURE.fxnTable = prog.extern("VPORTCAP_Fxns");
    bios.VP1CAPTURE.fxnTableType = "IOM_Fxns";
    bios.VP1CAPTURE.deviceId = 1;
    bios.VP1CAPTURE.params = prog.extern("EVMDM642_vCapParamsPort");
    bios.VP2DISPLAY.fxnTable = prog.extern("VPORTDIS_Fxns");
    bios.VP2DISPLAY.fxnTableType = "IOM_Fxns";
    bios.VP2DISPLAY.deviceId = 0x2;
    bios.VP2DISPLAY.params = prog.extern("EVMDM642_vDisParamsPort");
    bios.DHL.OBJMEMSEG = prog.get("SDRAM");
    bios.DIO.OBJMEMSEG = prog.get("SDRAM");
    bios.GBL.USERINITFXN = prog.extern("EVMDM642_init");
    bios.CLK.OBJMEMSEG = prog.get("SDRAM");
    bios.PRD_clock.order = 1;
    bios.RTDX.RTDXDATASEG = prog.get("SDRAM");
    bios.SWI.OBJMEMSEG = prog.get("SDRAM");
    bios.ISRAM.len = 0x20000;
    bios.ISRAM.createHeap = 0;

    // !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!

    if (config.hasReportedError == false) {
        prog.gen();
    }