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.

How to safely reduce CMEM size - IPNC RDK 3.8

Hi all,

DM8148, IPNC RDK 3.8 as basecode, finished product, 1280x720 30fps global shutter CCD sensor, 512 MB RAM

Custom usecase: 1x H.264 1280x720 30 fps + 1 x H.264 640x360 30 fps + 1 x JPEG 1280x720 30 fps

Due to a customer request I do have to release more RAM to Linux system. So Ive proceed to force the stream to use the 256_TRISTREAM layout so CMEM would be smaller.

At first I've reduced CMEM size from 64 MB to 32 MB:

  • At ti_mcfw_ipcbits.c I've FORCED  streamSet.Mem_layout = MEM_LAYOUT_256MB_TRISTREAM; altough I have 512 MB RAM
  • At mcfw_api_demos/stream/stream.h I've changed STREAM_BUF_MEM_SIZE to 0x01E00000
  • I've changed bootcmd at uboot to reflect the new configuration:
    • mem=158M cmemk.phys_start=0x89E00000 cmemk.phys_end=0x8BD00000

  • My .bld file is:

var LINUX_SIZE = 158*MB;
var CMEM_SIZE = 32*MB

The problem is: 

Sometimes after a few (15-30) minutes of streaming (2x H.264 + JPEG) the sys_server/streamer simply stalls. Before, with CMEM of 64 MB, the system worked absolutely fine.

During boot I see no complaints about memory and the stream buffer seems to be using roughly 28 MB.

Questions:

1) At App_streamSysInit() I see some hardcoded stream parameters that do not match my case:

streamSet.ImageWidth = 1920;
streamSet.ImageHeight = 1080;
streamSet.Mpeg4Quality = 100;
streamSet.JpgQuality = 100;

streamSet.ImageWidth_Ext[STREAM_EXT_JPG] = 1920;
streamSet.ImageHeight_Ext[STREAM_EXT_JPG] = 1080;

Does them make any difference? Should I change to my current sensor resolution?

Info: JPEG Quality is changed in runtime.

2) Why the default stream memory scheme for 512 MB TRISTREAM requires 64 MB for CMEM? Isn't it a bit too much?