Hi,
I am debugging a custom board with DM8168,
and my ezsdk version is 5.02.02.60. (C6run 0.98.0.0, syslink 2.0.2.80, omx 5.2.0.15 ).
I have a openMax demo program and a C6runLib program, and both work fine respectively.
But if I run openMax demo after c6runlib demo, the program crashed at OMX_Init(), with the error
Assertion at Line no: 430 in /media/ezsdk/ezsdk_dm816x-evm_5_02_02_60/component
sources/syslink_2_00_02_80/packages/ti/syslink/utils/hlos/knl/Linux/../../../..
../../ti/syslink/ipc/hlos/knl/Linux/SharedRegionDrv.c: (status >= 0) : failed
I add printk in syslink and here is the print out message
SharedRegion_Entry: name=(null), id=1, ownerProcId=65535
ownerProcId=-1: sharedAddr=d7600000, heapHandlePtr=d0ac9044, status=-5
Assertion at Line no: 430 in /media/ezsdk/ezsdk_dm816x-evm_5_02_02_60/component
sources/syslink_2_00_02_80/packages/ti/syslink/utils/hlos/knl/Linux/../../../..
../../ti/syslink/ipc/hlos/knl/Linux/SharedRegionDrv.c: (status >= 0) : failed
SharedRegion_Entry: name=(null), id=1, ownerProcId=65535
ownerProcId=-1: sharedAddr=d7600000, heapHandlePtr=d0ac9044, status=-5
Assertion at Line no: 430 in /media/ezsdk/ezsdk_dm816x-evm_5_02_02_60/component
sources/syslink_2_00_02_80/packages/ti/syslink/utils/hlos/knl/Linux/../../../..
../../ti/syslink/ipc/hlos/knl/Linux/SharedRegionDrv.c: (status >= 0) : failed
I this post http://e2e.ti.com/support/embedded/linux/f/354/t/135217.aspx#487893, I think we have the same problem.
it said “ The ownerProcId should definitely *not* be 65535 (16-bit form of -1).”
But when the openMax run respectively, (I mean before c6runlib demo run) It works fine,
and the output message is like
SharedRegion_Entry: name=(null), id=1, ownerProcId=65535
ownerProcId=-1: sharedAddr=d7400000, heapHandlePtr=d0ac9044, status=0
SharedRegion_Entry: name=(null), id=2, ownerProcId=65535
ownerProcId=-1: sharedAddr=d8000000, heapHandlePtr=d0ac9068, status=0
Chris said this is a bug in the OMX layer, so I found the source of memcfg.c.
......
/*--------------------------------------------------------------------*/ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* If the shared region is not included, then set a new entry. */ /* */ /*--------------------------------------------------------------------*/ SharedRegion_entryInit (&srEntry); MEMCFG_module->bSrAddEntryDone[i] = TRUE; if (MEMCFG_sharedRegionTypeMaster == MEMCFG_sharedRegionConfigTable.aSRInfo[i].srType) { srOwnerProcId = MultiProc_self (); createHeap = TRUE; } else { srOwnerProcId = SharedRegion_DEFAULTOWNERID; createHeap = TRUE; }
......
Is this part incorrect?
I am sorry I still not quite clear how to slove this problem.
Regards,
Lei