Hi all, I'm using EVM-DM6437 board to port a one common automotive application and I faced with following problem. I configured BIOS on the following way (see below) like I saw in TI tutorials. I succeeded to get working Video Front/Back-End and I got captured video on the display. Also I succeeded to process input video but when I added one “serious” processing block then I realized that video Front-End stops to respond after few minutes. Application still works but only on the few already buffered video buffers and video Back-End produce processed picture on the output. If I take look on the VPSS_PCR register I’m able to see that it is set to 0x00800000 value. If I’m right it indicates memory overflow: Bit 23 -- Write buffer memory overflow (CCDC). All data units have been filled and not yet transferred to SDRAM before the next data unit is to be filled from the WBL. Software has to clear the bit. In my application I set entire DDR to be cacheable but I realized that if I reduce cacheable area my application works slower (logical) but it works longer before the video Front-End stops. BCACHE_setMar( (Ptr)(0x82000000), 0x07800000, BCACHE_MAR_ENABLE ); If someone faced with similar problems or if maybe realized what I did wrong please share your knowledge with me. Thanks in advance. BIOS configuration /* * ======== DM6437_common.tci ======== * Custom settings that apply to all the DM6437 Examples. * */ /* Enable BIOS Instrumentation and RTA. */ bios.enableRealTimeAnalysis(prog); bios.enableRtdx(prog); bios.GBL.ENABLEALLTRC = true; /* Enable BIOS heaps and task scheduler */ bios.enableTskManager(prog); bios.enableMemoryHeaps(prog); /* Increase the buffer size of the LOG_system LOG object */ bios.LOG.instance("LOG_system").bufLen = 1024; bios.LOG.instance("LOG_system").bufSeg = prog.get("DDR"); bios.LOG_system.bufLen = 1024; bios.LOG_system.logType = "circular"; /* A LOG object named "trace" used by some examples: */ bios.LOG.create("trace"); bios.LOG.instance("trace").bufLen = 4096; bios.LOG.instance("trace").bufSeg = prog.get("DDR"); bios.LOG.create("DVTEvent_Log"); bios.LOG.instance("DVTEvent_Log").bufSeg = prog.get("DDR"); bios.LOG.instance("DVTEvent_Log").bufLen = 8192; bios.LOG.instance("DVTEvent_Log").comment = "DVT"; /* Setup heaps in DDR2 and L1DSRAM */ utils.getProgObjs(prog, bios); var vDDR2 = prog.module("MEM").instance("DDR2"); vDDR2.createHeap = true; vDDR2.name = "DDR2"; vDDR2.heapSize = 0x04000000; /* * Enable a heap in the L1DSRAM (internal L1 cache ram) * and define the label for DSKT2 or DMAN3 heap usage * * H.264 Encoder needs 64K of internal memory. * Otherwise, ACPY3 (used by copy codecs) needs internal memory. */ bios.L1DSRAM.createHeap = true; bios.L1DSRAM.len = 0x10000; bios.L1DSRAM.enableHeapLabel= true; bios.L1DSRAM["heapLabel"] = prog.extern("L1DHEAP"); bios.L1DSRAM.heapSize = 0x10000; // Need 64K L1DSRAM heap for H.264Enc. /* GBL configuration */ bios.GBL.C64PLUSCONFIGURE = true; bios.GBL.C64PLUSL1PCFG = "32k"; bios.GBL.C64PLUSL1DCFG = "16k"; bios.GBL.C64PLUSL2CFG = "32k"; //bios.GBL.C64PLUSMAR128to159 = 0x0000ffff; /* set all BIOS data and code sections to be in DDR */ bios.setMemDataHeapSections(prog, vDDR2); bios.setMemDataNoHeapSections(prog, vDDR2); bios.setMemCodeSections(prog, vDDR2); /* Ensure these are in external memory: */ bios.MEM.MALLOCSEG = vDDR2; bios.MEM.BIOSOBJSEG = vDDR2; bios.TSK.STACKSEG = vDDR2; /* Make global stack size large enough for all examples: */ bios.MEM.STACKSIZE = 0x8000; /* Take the selected timer out of reset */ bios.CLK.TIMERSELECT = "Timer 0"; bios.CLK.RESETTIMER = true; bios.MEM.instance("IRAM").len = 0x00018000; /* * Load platform file for DM6437 newedma3test.tcf */ utils.loadPlatform("ti.platforms.evmDM6437"); /* Import settings common to all DM6437 DVSDK examples.*/ utils.importFile("DM6437_common.tci"); /* Enable ECM Handler */ bios.ECM.ENABLE = 1; bios.CLK.RESETTIMER = 1; bios.GBL.ENABLEINST = 1; /* 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; bios.TSK.instance("TSK_idle").order = 1; bios.TSK.create("ApplFunc"); bios.TSK.instance("ApplFunc").stackSize = 16384; bios.TSK.instance("ApplFunc").comment = "ApplFunc test task"; bios.TSK.instance("ApplFunc").fxn = prog.extern("ApplFunc4__Fv"); /*bios.GBL.C64PLUSMAR128to159 = 0x00008000; bios.GBL.C64PLUSMAR128to159 = 0x00000000; bios.GBL.C64PLUSMAR160to191 = 0x000000ff; bios.GBL.C64PLUSMAR160to191 = 0x0000ffff;*/ /* Create user devices for I2C (needed by video) and video drivers */ bios.UDEV.create("I2C0"); bios.UDEV.instance("I2C0").fxnTableType = "IOM_Fxns"; bios.UDEV.instance("I2C0").initFxn = prog.extern("I2C_INIT"); bios.UDEV.instance("I2C0").params = prog.extern("I2C_devParams"); bios.UDEV.instance("I2C0").fxnTable = prog.extern("I2CMD_FXNS"); bios.UDEV.create("VPFE0"); bios.UDEV.instance("VPFE0").fxnTable = prog.extern("VPFEMD_FXNS"); bios.UDEV.instance("VPFE0").fxnTableType = "IOM_Fxns"; bios.UDEV.create("VPBE0"); bios.UDEV.instance("VPBE0").fxnTable = prog.extern("VPBEMD_FXNS"); bios.UDEV.instance("VPBE0").fxnTableType = "IOM_Fxns"; if (config.hasReportedError == false) { // !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT! prog.gen(); }