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.

[OMAP-L138] DSPlink memory map

Hi,

I've been trying to modify the dsplink memory map. Initially, I had this configured:

Linux: 34MB

CMEM: 16MB

DSP: 14MB

DDRALGHEAP: 10MB

DSPLINKMEM: 1MB

DDR: 3MB

I would like to change from 64MB to 128MB, to eventually increase DDR size. For the moment, I'm leaving the DSP memory space at the same size.

Linux: 98MB

CMEM: 16MB

DSP: 14MB

DDRALGHEAP: 10MB

DSPLINKMEM: 1MB

DDR: 3MB

Now, in order to do this, I followed the instructions at: http://processors.wiki.ti.com/index.php/Changing_DSPLink_Memory_Map.

1. I modified cs1omapl138_1_00_00/packages/ti/sdo/server/cs/server.tcf. And changed the var BASE_ADDR_BOTTOM  = 0xC4000000 to 0xC8000000. This will change the reset vector address from 0xC3200000 to 0xC7200000 according to

RESET_VECTOR_BASE_ADDR = (BASE_ADDR_BOTTOM - DSPLINKMEM_SIZE - DSPEXTMEM_SIZE - DDRALGHEAP_SIZE) & 0xFFF00000;

2. I modified the dsplink_linux_1_65_00_01/dsplink/config/all/CFG_OMAPL138GEM_SHMEM.c file. I found out that the reset vector address is set to:

#define  RESETCTRLADDR      0xC3E00000  : before I did my changes

Is that value suppose to be 0xC3200000 according to what was configured in the server.tcf file? If not, how is that value calculated?

3. I modified dsplink_linux_1_65_00_01/dsplink/dsp/inc/DspBios/5.XX/OMAPL138GEM/dsplink-omapl138gem-base.tci file, the prog.module("GBL").C64PLUSMAR192to223 to match my new map. In this file, the reset vector address is also set to 0xC3E00000, which also lead me to the previous question.

So I did my changes, rebuilt dsplink and the codec server, most of the codecs continued to work correctly except the AAC decoder which is supposed to send the audio stream to alsasink. If I revert my changes, it works again. Am I calculating wrong the Reset vector address? What else can cause this problem?

 

Regards,

Cristina

 

 

 

  • Cristina,

    In the Codec Engine world the DSPLink memory configuration is typically dynamic, meaning that the DSPLink generated configuration for memory is not used.  Codec Engine uses a dynamic memory map when the application's .cfg file uses Engine.createFromServer() to create the Engine (see here http://processors.wiki.ti.com/index.php/Configuring_Codec_Engine_in_Arm_apps_with_createFromServer for details).  The reset vector is part of this dynamic configuration.  If you're using Engine.createFromServer then you should just have to change where you place your DSP executable's code/data, which means you would define DDR/DSPLINKMEM/etc. locations according to your new placement (64MB greater than before).

    Regards,

    - Rob

  • Hi Robert,

     

    Thank you for your reply! I followed the link that you send me and I was in fact using Engine.createFromServer. So I modified the locations of DDR/DSPLINKMEM... according to my new placement, and I actually double checked it with the generated cs.x64P.DataSheet.html file. After this changes, I keep having the same problem, my audio decoder stopped working.

    Is it incorrect to move the BASE_ADDR_BOTTOM from 0xc4000000 to 0xc8000000 inside the server.tcf file in the codec server?

     

    Regards,

    Cristina