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.

OMAPL138 Memory Map Configuration

Other Parts Discussed in Thread: OMAPL138

I am using one of the examples (message) from the dsplink package for the OMAPL138 as my starting point.  I have identified some files that are used for memory map configurations.

Under the message sample dir, there were a few others

1)  message/message.tci

2)  message/DspBios/5.XX/OMAPL138GEM/message.cmd

3) message/DspBios/5.XX/OMAPL138GEM/message.tcf

And uder the dsplink root dir

4)  dsplink/config/all/CFG_OMAPL138GEM_SHMEM.c

message.cmd file includes line "SECTIONS { .data:DSPLINK_shmBaseAddress: fill=0xC3F05000 {} > DDR   }".  The DDR for the OMAPL138 starts at 0xC0000000 and ends 64M later 0xC3D09000 since the SDRAM I am using is only 64M.  However, the specified address in message.cmd is 0xC3F05000 = 66M, which is outside the valid range of my 64M DDR.  The CFG_OMAPL138GEM_SHMEM.c also specifies this same out of range address 0xC3F00000.   These configurations define where the dsplink components are residing in mem but unsure where these are being mapped to with this invalid mem address.  I'm puzzled because my dsplink apps still run just fine on the target.    

When I changed the 0xC3F00000 addr in CFG_OMAPL138GEM_SHMEM.c to somewhere in the middle of DDR (0xC1C9C3C0) and rebuild everything, I got an error at runtime.  It does not seem to make a difference if I change the message.cmd address to match the updated CFG_OMAPL138GEM_SHMEM.c.

Error: DSP-sie memory map does not match configuration. Compare DSP-side TCF/MAP file with /dsplink/condig/all/CFG_<PLATFORM>.c

Can you suggest how I modify the memory map configuration for dsplink?      

 

    

  • Joe,

    Please see if this link helps:

    http://wiki.davincidsp.com/index.php/Changing_DSPLink_Memory_Map

    Deepali

  • Thank you for the link, this is helpful. 

    I'm still unsure how exactly the ext memory is getting allocated. 

    If I set the following u-boot params.  

    U-Boot> setenv bootargs mem=32M console=ttyS2,115200n8 root=/dev/ram0 rw initrd=0xc1180000,4M ip=dhcp eth=${ethaddr}
    U-Boot> setenv bootcmd 'tftp 0xc0700000 uImage; tftp 0xc1180000 <ramdisk image name>; bootm 0xc0700000'

    With this configuration, where does the kernel and rfs get placed in ext mem? The arguments suggest the kernel and RFS get placed
    in mem 0xc0700000 and 0xc1180000, respectively, but what is the 7MB of mem for at the start of the ext mem (0xc0000000 - 0xc0700000)?
    I want to figure out what memory space the ARM (Linux) is using so I know where to start allocating memory for the DSP.




  • Hi Joe,

    The Linux kernel occupies all memory from 0xc000'0000 to whatever is specified in 'mem=' parameter.

    In this case, since mem=32m is specified, all the memory from 0xc000'0000 to 0xc200'0000 is occupied by kernel.

    Thanks,

    Sekhar

  • Ok, thanks. 

    The dsplink-omapl138gem-base.tci allows me configure the RESET_VECTOR, DDR, DSPLINKMEM and POOLMEM.  I can't find where the CACHE_L2 is being set, in my dsplink package, it was erroneosly set to 0x11838000 address which belongs to DSP L2 RAM, instead CACHE_L2 needs to be mapped to 0x01840000.   All this according to the OMAPL138 data sheet. 

    Does anyone know where I can set the CACHE_L2?

  • Please disregard this question, I figured it out.  You configure it from dsplink-omapl138gem-base.tci.