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
