Andy,

There should be nothing in your hardware that force you to split the map
as described.
As far as ARM and DSP use a shared memory model, it is pure
softwares configuration that define the split points.

Memory used by Linux is defined on the Linux boot command line with
argument memorySize=XXX
Memory used by CMEM is defined by cmem load command line
Memory used by DSP is mostly defined by TCF/LNK files used when building
the server _with_the_exception_ of some hard-coded values into DSP/Link
DSP/Link is hardcoded with a fixed map for the upper 2 Mbytes (254 to 255 MB for
DSP/Link and 255 to 256MB for reset vectors) which loose some space.
Although this is not critical on 256/128 MB system, it is sensitive when going 
down to
64/32 MB.

For easy development between various platform with various memory size, 
in order to not regenerate DSP firmwares functionally identical but different 
only on memory top location, we have successfully used "ghosting" artifact 
of memory.
I mean that wif your device is populated with 128 MB, you will find a ghost 
image of 0-128MB area between 128-256MB. On a 64MB, you have 3 ghost 
images of the 0-64MB area. With this trick you can reuse almost the DSP mapping
used in DV EVM, including pre-compiled DSP/Link. You just need to redefine
your TCF/LNK to move up the bottom of DDR Heap so it fits your various
memory model.
So it is very convenient to design your software considering that DSP memory
is allocated top-down from 256MB to X.
If you design a codec server which total memory requirement (including 
DSP/Link, code, heap)
is for example 16 MB and locate this from 240 to 256 MB, then you can use this 
binary
on platforms with 64 /128 or 256 MB considering that total limit for Linux
+CMEM is 48MB / 112MB or 240MB. So it is only a matter of changing Linux boot 
command line
and CMEM load command line.

If you want to optimize further the top 2MBytes, we have successfully packed 
DSP/Link
+ reset vectors into a 512KB block, freeing up to 1.5MB of SDRAM which is 
usefull
for 32 MB systems.

Hope this is clear and gives you some hints.


Best regards,

Jean-Michel.


  ----- Original Message ----- 
  From: Andy Ngo 
  To: [email protected] 
  Sent: Friday, January 05, 2007 4:33 AM
  Subject: small footprint CE Server


  I just found out from my hardware engineer that we have limited memory 
resources on our custom DaVinci board.  
  The DVEVM has 4MB dedicated to the DSP for code, stack, static data, and 
system dynamic data.  However,
  our custom board only has 512KB dedicated to the DSP!  Yikes!  Our board does 
have 128MB DDR for to
  be splitted among Linux, CMEM, DSP Heap, DSPLINKMEM, and CTRLRESET.  I 
noticed from the codec 
  examples the CE Server binary is relatively large, for example, the 
video_copy.x64P is 800KB.  Is there a way
  for me to reduce/compact the CE Server to a very small footprint?  For 
example, in the VISA API, I only
  need to use the SPHENC and SPHDEC modules.  Hence I only need to implement 
the speech codecs in the
  CE Server and eliminate the video, image, and audio modules.  Thanks in 
advance for your help and advice.

  Regards,
  Andy Ngo





------------------------------------------------------------------------------


  _______________________________________________
  Davinci-linux-open-source mailing list
  [email protected]
  http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to