Hi,
In a nutshell: I need more memory in the DSP side of my application, how do I configure that?
.
In more words and details:
My application is based on the call_dsplib example application. All I want to do is to have more memory in my DSP side application. I followed the steps to change the memory map in this page:
http://processors.wiki.ti.com/index.php/Changing_DSPLink_Memory_Map
But when I run my application weird things happen, like getting my SD card corrupted or getting a huge load of information printed on the terminal.
I realized that the changes I do on $(DSPLINK)/config/all/CFG_OMAPL1XXGEM_SHMEM.c don't really seem to matter, since if I mess up the file I still can build my application. Then I went to this page:
And it seems that this is my issue, apparently I'm running DSPLink inside Codec Engine. I'm using the DSPLink 1.61-prebuilt that comes under the OMAP-L137 SDK 1.00.00.07, I really don't know if this is a standalone DSPLink or if this really is inside Codec Engine, but it does look like a standalone build.
So assuming my DSPLink is inside CE, how do I change the memory map through Codec Engine? I read this page:
http://processors.wiki.ti.com/index.php/Changing_the_DVEVM_memory_map
But this really didn't help me. I looked in the CE folder and I found some files that set the memory map, they are:
C:\OMAPL137_dsp_1_00_00_07\codec_engine_2_22\packages\ti\dsplink\utils\lad\user1_linkcfg_omapl137.c
(there is also user2_linkcfg_omapl137.c and user3_linkcfg_omapl137.c)
and C:\OMAPL137_dsp_1_00_00_07\codec_engine_2_22\packages\ti\sdo\ce\ipc\dsplink\Processor_dsplink_linkcfg_OMAPL137.c
In the first ones the memory map definitely doesn't match my TCF file, and for the second one, instead of the memory table, that is what I have:
STATIC LINKCFG_MemEntry * LINKCFG_memTables [] =
{
(LINKCFG_MemEntry *)NULL /* Memory Table 0 - filled by CE runtime code */
} ;
So how can I setup this CE runtime code? How can I have more memory in my DSP application? I have no problem when I'm running my app under CCS, because I can define a huge heap size on the CMD file and everything runs fine. But once I start using DSPLink, I have this memory issue that I just cannot solve.
Any help will be really appreciated. My next post will have all the details about the memory map configurations I've been trying.
.
EDIT: I got it to work. Inspired by this page I stoped trying to map my memory starting at 0xC000_0000, that is probably the reason I corrupted my SD card since this memory is reserved for Linux. I have mem=32M in my bootargs, and my CMEM starts at 0xC200_0000 like in the table. The rest is different, though. The rest starts at 0xC3E0_0000, and ends at 0xC3FF_FFFF like in the table. So I figured that I could try to map my segment in this gap between CMEM and the rest, and it worked!
Now my question is: why can't I map my new segment after 0xC3FF_FFFF, starting at 0xC400_0000, for instance? In OMAP-L137 datasheet, page 25, it is said that EMIFB SDRAM Data goes from 0xC000_0000 to 0xCFFF_FFFF.