各位TI的高手,大家好:
我在使用ti8127 rdk3.8的过程中,建立的链路运行一段时间(时间不等,一般是几个小时后或十几个小时后), SR0中的内容有时就出现异常,比如:
在ipcBitsInLink_tsk.c 中的IpcBitsInLink_putEmptyBitBufs中的如下行:
OSA_assert(SharedRegion_getPtr(pListElem->srBufPtr) == pBitBuf->addr);
这个断言就发生, 随后数据链路中断,程序挂断.
下次又出现别的地方,综合来看就是SR0中的内容出现了异常.
我的内存分配(confg.bld, 1G的内存)如下:
/* first 512MB */
var LINUX_SIZE = 166*MB;
var SR1_SIZE = 110*MB;
var VIDEO_M3_CODE_SIZE = 3*MB;
var VIDEO_M3_DATA_SIZE = 30*MB;
var DSS_M3_CODE_SIZE = 5*MB;
var DSS_M3_DATA_SIZE = 40*MB;
var DSP_CODE_SIZE = 1*MB;
var DSP_DATA_SIZE = 157*MB;
/* second 512MB */
var TILER_SIZE = 10*MB; /* Reducing this to fix Vid Frame Alloc failures. Need to fix */ /* MUST be aligned on 128MB boundary */
var CMEM_SIZE = 120*MB;
var SR2_FRAME_BUFFER_SIZE = 355*MB;
var SR0_SIZE = 20*MB;
var HDVPSS_DESC_SIZE = 2*MB;
var HDVPSS_SHARED_SIZE = 2*MB;
var NOTIFY_SHARED_SIZE = 2*MB;
var REMOTE_DEBUG_SIZE = 1*MB;
有谁能给我一些提示吗? 一般是什么原因造成SR0区域的内容乱了呢?
我原来猜想有可能SR2_FRAME_BUFFER_SIZE区域的内容溢出导致写到SR0来了,因为SR2与SR0毗连,但查找程序中在SR2中分配的内存远没有达到355M.
抓狂了好多天了…恳请大家提示下…非常感谢!!!
Chris Meng:
你好,
你的bld不是默认的吧?如果修改过,DSP相关cache配置是否有一起调整?
如何修改DVR RDK/IPNC RDK Memory Maphttp://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/104139.aspx
jensen zhang:
回复 Chris Meng:
Chris Meng:
你好! 我用的不是默认的confg.bld, 关于DSP使用的cache配置修改过了,如下:
var Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');/* Disable caching for HWspinlock addresses */Cache.MAR0_31 = 0x00000000;Cache.MAR32_63 = 0x00000000;/* Config/EDMA registers cache disabled */Cache.MAR64_95 = 0x00000000;Cache.MAR96_127 = 0x00000000;/* cache settings for 1st 512MB DDR */Cache.MAR128_159 = 0xFFFFFF00;在config.bld中 DSP用的内存是第1个512M的最后158M, 我这边默认是所有dsp使用的内存都是做了cache的.
这个跟我这边出现的这个问题有什么关系吗?
jensen zhang:
回复 jensen zhang:
Chris Meng:
你好!附件是我这边的相关配置文件,麻烦你帮我看看有什么毛病没有?