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.

Mapping an array to L2



Hello,

I have here several questions regarding memory management of my project...

Hope you can help.

I have a program I made which bases on the examples from TI code.

1)

I have a very big amount of memory I will need to use, I understnad I need to place it specifically in L2.

How can I ensure I am putting there my array? Do I need to use some pragma or can I just set pointer to specific address which is located in L2 memory space?

 

2)

What memory space do the NDK and the BIOS (including heap) use?

___

 

 

I am using the following:

Board: EVMC6748 (I am using the TMS320C6748 DSP).

I am connected using the ethernet port to my router.

ccs: 5.4.0.00091

bios: 6_35_01_29

pspdrivers: 01_30_01

nsp: nsp_1_10_02_09

ndk: ndk_2_22_03_20

xdctools: 3_25_00_48

xgconf

 

Thanks in advance!!!

  • Gaby,

    Gaby Levy said:

    1)

    I have a very big amount of memory I will need to use, I understand I need to place it specifically in L2.

    How can I ensure I am putting there my array? Do I need to use some pragma or can I just set pointer to specific address which is located in L2 memory space?

    When you create a Project, you select a Platform file that includes the basic memory components. This includes the default location for program and data to be placed.

    One solution is to place all of that in external memory and set the L2 Cache size to its maximum. This will make it easy on you to not worry about the location of the big buffer and to let the cache controller take care of fetching the data that is needed into the L2 cache.

    If you want to manually place the array in memory, you will want to look at the DATA_SECTION pragma described in the C/C++ Compiler User Guide. You may also need to create your own linker command file. Better information than I can offer is available from the online training resources - start with the TI Wiki Pagesand search for "C6748 training" (no quotes).

    Gaby Levy said:

    2)

    What memory space do the NDK and the BIOS (including heap) use?

    These will be in the default locations from the Platform file.

    Regards,
    RandyP

  • Thanks!

    Where is the platform file?

    I already created the project and I would like to see what it chose for me...

    I cannot understand this : 

    For a test, I created a volatile arrays and I started to play with sizes until it could not link anymore.

    I made more arrays this way..

    I managed to create one array of 100 million bytes (!!!) and another one with at least 30 million bytes...

    How can it be? I understand the memory we have there is for sure much smaller... maybe I chose incorrect Platform file?

  • Gaby,

    On the Wiki you can search for EricScottVideos or "C6000 sys/bios" (no quotes) to find training information on CCSv5 and SYS/BIOS. These will cover some of the details about the tools much better than I could do.

    If you would like, I can ask for this thread to be moved to the Code Composer forum where there are experts to address some of your tools-related questions.

    My recommendation to find out about the Platform file is to create a new Project with a new name, but go through the same process as before. When you see the reference to the Platform file when creating the Project, you can see if there is a way to find out where it is and what is in it.

    In one of your Project's folders is a linker .cmd file that tells the linker how much memory is available and where it is located. In the output folder, probably Debug, will be a .map file that will show you how much memory is being used and how much is still available. This may help you understand the answers to some of your questions.

    Regards,
    RandyP