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.

AM2434: Is it possible to increase "IPC Shared Memory Available(Bytes)" to more than 49152?

Part Number: AM2434
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hello,

I am unable to increase IPC Shared Memory. Increasing the RTOS_NORTOS_IPC_SHM_MEM value to 0xE000 is not affecting the available memory in SysCfg IPC config.

Attached the screenshot.

Thank you.

Best Regards,
Upendar

  • Hi Upendar, 

    Current limitation is embedded in sysconfig as it assumes IPC share memory in MSRAM

    From drivers\.meta\ipc\soc\ipc_am243x.syscfg.js we have:

     
    function getIpcSharedMemAvailable()
    {
        /* The limit is determined by space set aside in OCRAM, but keep a reasonable default
         */
        return (48*1024);
    }
    In linker.cmd we have: 
    snipped code from ipc_rpmsg_echo_am243x-evm_r5fss1-1_nortos_ti-arm-clang\Debug\syscfg\linker.cmd
    MEMORY
    {
        R5F_VECS   : ORIGIN = 0x0 , LENGTH = 0x40 
        R5F_TCMA   : ORIGIN = 0x40 , LENGTH = 0x7FC0 
        R5F_TCMB0   : ORIGIN = 0x41010000 , LENGTH = 0x8000 
        NON_CACHE_MEM   : ORIGIN = 0x70078000 , LENGTH = 0x8000 
        MSRAM   : ORIGIN = 0x70140000 , LENGTH = 0x40000 
        FLASH   : ORIGIN = 0x60280000 , LENGTH = 0x80000 
    
        /* For memory Regions not defined in this core but shared by other cores with the current core */
    
        USER_SHM_MEM   : ORIGIN = 0x701D0000 , LENGTH = 0x180  
        LOG_SHM_MEM   : ORIGIN = 0x701D0180 , LENGTH = 0x3E80  
        RTOS_NORTOS_IPC_SHM_MEM   : ORIGIN = 0x701D4000 , LENGTH = 0xC000  
    
    }
    So, you could change "RTOS_NORTOS_IPC_SHM_MEM" to DDR, however, I don't think changes can be easily done inside Sysconfig (I will double check though). 
    One option, if this is not easy to change inside Sysconfig, is to copy files generated by Sysconfig inside your project, exclude from build "example.syscfg" and work "outside" sysconfig scheme so you can modify linker.cmd.
    thank you,
    Paula 
  • Hello Paula,


    Thank you for the information.

    And I have question related to IPC. are IPC APIs like RpMessage_Send thread safe?

    Regards,
    Upendar

  • Hi Upendar, yes RpMessage_Send is thread safe. If you check "source\drivers\ipc_rpmsg\ipc_rpmsg.c" you will see functions are created with thread safe in mind by disabling hardware interrupts for critical sections, adding memory barriers for cache coherency, and using semaphore blocking for synchronization

    mcupsdk-core/source/drivers/ipc_rpmsg/ipc_rpmsg.c at next · TexasInstruments/mcupsdk-core · GitHub

    mcupsdk-core/source/drivers/ipc_rpmsg/ipc_rpmsg_vring.c at next · TexasInstruments/mcupsdk-core · GitHub

    thank you,

    Paula

  • Thank you Paula.

    Best Regards,
    Upendar