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.

Rebuilding image processing demo causes memory range warnings

Hi,

To get used to Eclipse, CCS5 (5.1.0.09000) and the various tools, I am building the image processing demo for the EVM6670LE board in my workspace.  I started with the Master, moving the files from the MCSDK demo folder to my workspace.  I created an RTSC project and finally got everything to compile.  However, during linking I get various warnings about essentially an undefined memory section call MSMCSRAM_MASTER.  Here are a few lines from the linker output

./configPkg/linker.cmd", line 371: warning #10097: memory range not found:
   MSMCSRAM_MASTER on page 0
"./configPkg/linker.cmd", line 371: error #10265: no valid memory range(NULL)

   available for placement of ".far:NDK_PACKETMEM"
>> Compilation failure
"./configPkg/linker.cmd", line 371: error #10099-D: run placement fails for
   object ".far:NDK_PACKETMEM", size 0x52b00 (page 0)
"./configPkg/linker.cmd", line 372: warning #10097: memory range not found:
   MSMCSRAM_MASTER on page 0

I used ti.platforms.evm6670 as the platform type.  I see that the demo uses a different platform.  How do I change my memory map to match that expected by the cfg file (which I stole from the demo)?  I see no memory section definition in the cfg file.

Thanks.

Kevin

  • Kevin,

    I think there are two ways to handle this.   Perhaps there are more.

    1. You can modify your RTSC Platform file. I know there's a more direct way to get to this wizard, but I can't remember it off the top of my head.

    File->New->Other->RTSC->Edit/View RTSC Platform

    Then select the appropriate package repository and target and add the MSMCSRAM_MASTER memory section.

    2. I think you can override the placement of the .far:NDKPACKETMEM from within the .cfg file, by adding something like

    Program.sectMap[".far:NDK_PACKETMEM" = MSMC; <-- Use the name of your actual section here.

    Regards,

    Dan

     

  • Dan,

    Thanks for the reply.  I tried your first method but was unable to navigate the GUIs.  I'm supposed to enter the "Platform package Repository" in the "Edit Platform" window.  I browsed to and selected C:\Program Files\Texas Instruments\pdk_C6670_1_0_0_17\packages but no options appeared in the "Package Name" pulldown.  I also tried a lot of other variants of the path to the pdk but none yielded any pulldown options.  Do I have the correct path to the repository?

    Thanks.

    Kevin

  • Kevin,

    I was afraid you would ask that.  I didn't remember exactly where they were, that's why I left that detail out.  But after some searching, I found it.

    You want to use the packages directory under your xdctools directory.  On my machine, this is C:\ti\xdctools_3_22_04_46\packages

    Regards,

    Dan

  • Funnily enough, I've just been trying the same thing and am failing to rebuild the image_processing master (although on a 6678)

    I think I can solve your immediate problem:  the image_processing demo uses a custom platform demos.image_processing.ipc.evmc667xl.platform which defines the ranges MSMC_MASTER and MSMC_SLAVE.  It also sets up cache and other options.  This is in

    C:\ti\mcsdk_2_00_04_16\demos\image_processing\ipc\evmc6678l\platform\Platform.xdc  (or 6670 in your case)

    To use this in your project, you need to add C:\ti\mcsdk_2_00_04_16 to your search path and change the platform in project properties | General | RTSC | Platform.  Good luck. 

    As an aside, I find it interesting that both the HUA and image_processing demos both use a custom platform.  We tried building a starter network application on the helloworld base (which uses the standard XDC one) and found that you bang your head against the wall trying to turn on the L2 cache without it.  So I'm concluding that a "custom" platform is actually a normal requirement for a "non-toy" Keystone application even on the Advantech EVM board.  I wish the "getting started" guide and/or EVM docs just up and said this.  (Or I'm happy for the TI gurus to explain why this isn't so.)

    Fortunately, creating a custom platform seems straightforward, albeit quite hidden in "Tools > RTSC Tools > Platform > New...".  It's a shame this isn't more integrated with the memory map editing though.

    I've now hit the hurdle that under CCS 5.1 and MCSDK 2.0.4 libs, the Master build fails for me with

    <Linking>
    "./configPkg/linker.cmd", line 372: error #10099-D: run placement fails for
       object ".far:NDK_PACKETMEM", size 0x52b7f (page 0).  Available ranges:
       MSMCSRAM_MASTER   size: 0x100000     unused: 0x37c97      max hole: 0x37a00
    error #10010: errors encountered during linking;
       "image_processing_evmc6678l_master.out" not built

    I'm guessing the .text size has grown (library inflation?) and is busting out of the MSMC_MASTER segment it's being put into.  I'm about to give up on this and try a simpler application test.

    Memory mapping and cache settings seem to be a "dark art" in getting started with these devices.  The TI docs are either maddeningly non-device-specific or consist of examples like this where you're given a sample setup without enough commentary on what is going on.  Furthermore, IPC and NDK at least seem to have a whole set of implicit requirements (eg. NDK wants L2 cache on, I am told).  I nice guide to this dark art would be enormously valuable, guys...

  • Thanks for the responses.  Both suggestions are helpful.  I was able to view the memory map for the EVM6670l by using the xdc path.  If I want to create a new platform for the EVM6670, can I start with TI's EVM6670l platform and make the proper mods?  Is it as simple as copying the TI files to a new location and adding the new location to the RTSC?

    Also, I did point to the custom platform per Gordon's instructions.  However, during the building of the cfg file I get an error supposedly associated with sh.exe.  This is something I do not see when I use the evm6670 platform.  Here's a portion of the console output

    xdc.tools.configuro -o configPkg -t ti.targets.elf.C66 -p demos.image_processing.ipc.evmc6670l.platform -r debug -c "C:/Program Files/Texas Instruments/ccsv5/tools/compiler/c6000" -v "../image_processing_evmc6670l_master.cfg"
       9909 [main] ? (3048) C:\Program Files\Texas Instruments\xdctools_3_22_04_46\bin\sh.exe: *** fatal error - couldn't allocate heap, Win32 error 487, base 0x810000, top 0x820000, reserve_size 61440, allocsize 65536, page_const 4096

    Anyhow, thanks for the help.  You have got me pointed in the right direction.   I agree with Gordon, a little more documentation would be useful.

    Kevin

  • Just a quick update.  I did create a new platform, starting with the EVM6670l platform.  I used the linker.cmd file from the TI build of the image processing demo (C:\Program Files\Texas Instruments\mcsdk_2_00_05_17\demos\image_processing\ipc\evmc6670l\master\Debug\configPkg) to determine the memory map and Dan's advice on how to modify the platform.  Everything built and ran correctly!  Thanks.

    Kevin