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.

AM625: Shared Memory between linux and nonrtos M4F MCU

Part Number: AM625
Other Parts Discussed in Thread: SYSCONFIG

Hello Forum,

i want to ask if there is a possibility other than IPC to have a shared memory location

between Linux Application A53 and a nonrtos M4F app?

afaik IPC can only handle 512 Bytes am i correct?

I am in need of around 10k Bytes shared memory.....

Many thanks in advance

Regards 

Martin

  • Hello Martin,

    Please take a look at our new shared memory example here:
    https://git.ti.com/cgit/rpmsg/rpmsg_char_zerocopy/

    This example uses RPMsg to message between cores when the shared memory region is ready to be read.

    Feel free to ask any followup questions or provide feedback on the new example on this thread.

    Regards,

    Nick

  • Hi Nick,

    i just tried to import the example into CCS from this site:

    https://git.ti.com/cgit/rpmsg/rpmsg_char_zerocopy/commit/?id=8957444374d790f0d9a6d026da9632793c9efb63

    I believe this is the part for the AM62xx M4F ?

     i got this error:

    can you please help?

    BR's

    Martin

  • Hello Martin,

    1) What version of CCS are you using, and what versions of Linux and MCU+ SDK are you using?

    2) In CCS, please check for updates and make sure the Sitara devices do not need an update.

    On my side, I will double-check on what versions were used to develop the example.

    Regards,

    Nick

  • Hi Nick,

    i use CCS v12.2.0

    MCU+ SDK 08.05.00.14

    SysConfig: 1.15.0

    Linux not yet installed

    Update checked no updates needed.

    BR's

    Martin

  • Additional information:

    i created a new project with rpmsg_char_zerocopy

    (found in folder ../rtos/am62x-sk/m4fss0-0_freertos)

    i got this error:

    *** Build of configuration Debug for project Example_char_zerocopy ****

    "C:\\ti\\ccs1220\\ccs\\utils\\bin\\gmake" -k -j 4 all -O

    Building file: "../example.syscfg"
    Invoking: SysConfig
    "C:/ti/ccs1220/ccs/utils/sysconfig_1.15.0/sysconfig_cli.bat" -s "C:/ti/mcu_plus_sdk_am62x_08_05_00_14/.metadata/product.json" --script "C:/Users/mh/workspace_v12/Example_char_zerocopy/example.syscfg" -o "syscfg" --compiler ccs
    subdir_rules.mk:9: recipe for target 'build-198844305' failed
    Package not found: BGA. This package may be available in a newer version of SysConfig
    gmake: *** [build-198844305] Error 1
    gmake: Target 'all' not remade because of errors.

    If i try to open the example.sysconfig i get the following:

    Package information problem solved by adding 

    "--package ALW" to project properties->SysConfig->Miscellaneous

    by adding the needed include options:

    and Predefined symbols:

    i could built the project.

    now it tells me:

    Invoking: Arm Linker
    "C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/bin/tiarmclang.exe" -mcpu=cortex-m4 -mfloat-abi=hard -mlittle-endian -mthumb -Og -DSOC_AM62X -D_DEBUG_=1 -g -Wl,-m"Example_charcopy.map" -Wl,-i"C:/ti/ccs1220/ccs/tools/compiler/ti-cgt-armllvm_2.1.2.LTS/lib" -Wl,--reread_libs -Wl,--diag_wrap=off -Wl,--display_error_number -Wl,--warn_sections -Wl,--xml_link_info="Example_charcopy_linkInfo.xml" -Wl,--rom_model -o "Example_charcopy.out" "./syscfg/ti_dpl_config.o" "./syscfg/ti_drivers_config.o" "./syscfg/ti_drivers_open_close.o" "./syscfg/ti_pinmux_config.o" "./syscfg/ti_power_clock_config.o" "./syscfg/ti_board_config.o" "./syscfg/ti_board_open_close.o" "./main.o" "../linker.cmd"
    makefile:141: recipe for target 'Example_charcopy.out' failed
    warning #10247-D: creating output section ".cinit" without a SECTIONS specification
    "../linker.cmd", line 25: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment fails for section ".bss" size 0x8508c. Available memory ranges:
    M4F_DRAM size: 0x10000 unused: 0xfec0 max hole: 0xfec0

    undefined first referenced
    symbol in file
    --------- ----------------
    AddrTranslateP_Params_init ./syscfg/ti_dpl_config.o
    AddrTranslateP_init ./syscfg/ti_dpl_config.o
    ClockP_init ./syscfg/ti_dpl_config.o
    DebugP_logZoneEnable ./syscfg/ti_dpl_config.o
    DebugP_memLogWriterInit ./syscfg/ti_dpl_config.o
    DebugP_uartSetDrvIndex ./syscfg/ti_dpl_config.o
    HwiP_enable ./syscfg/ti_dpl_config.o
    HwiP_init ./syscfg/ti_dpl_config.o
    IpcNotify_Params_init ./syscfg/ti_drivers_config.o
    IpcNotify_init ./syscfg/ti_drivers_config.o
    MpuP_init ./syscfg/ti_dpl_config.o
    Pinmux_config ./syscfg/ti_pinmux_config.o
    RPMessage_Params_init ./syscfg/ti_drivers_config.o
    RPMessage_init ./syscfg/ti_drivers_config.o
    SOC_moduleClockEnable ./syscfg/ti_power_clock_config.o
    SOC_moduleSetClockFrequency ./syscfg/ti_power_clock_config.o
    Sciclient_init ./syscfg/ti_drivers_config.o
    UART_init ./syscfg/ti_drivers_config.o
    _DebugP_assert ./syscfg/ti_drivers_config.o
    _DebugP_assertNoLog ./syscfg/ti_drivers_config.o
    ipc_rpmsg_zerocopy_main ./main.o
    vTaskDelete ./main.o
    vTaskStartScheduler ./main.o
    xTaskCreateStatic ./main.o

    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "Example_charcopy.out" not built
    tiarmclang: error: tiarmlnk command failed with exit code 1 (use -v to see invocation)
    gmake[1]: *** [Example_charcopy.out] Error 1
    gmake: *** [all] Error 2
    makefile:137: recipe for target 'all' failed

    Ok now i got it to work:

    had to add all linker libs:

    and also suppress that warning:

    With linker Runtime environment-> Initialization model changed to "Link using RAM autoinitialization model"

    i eliminated the warning: 

    warning #10247-D: creating output section ".cinit" without a SECTIONS specification

    BR's

    Martin

  • So my question is:

    With A53SS0 Core 0 = PIC Notify ONLY i am able to build the application.

    With A53SS0 Core 0 = IPC Notify + IPC RP Message the app needs 524288 Bytes of additional data and the app will not build:

    makefile:147: recipe for target 'Example_charcopy.out' failed
    "../linker.cmd", line 25: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment fails for section ".bss" size 0x89f3e. Available memory ranges:
    M4F_DRAM size: 0x10000 unused: 0xd940 max hole: 0xd940
    error #10010: errors encountered during linking; "Example_charcopy.out" not built
    tiarmclang: error: tiarmlnk command failed with exit code 1 (use -v to see invocation)
    gmake[1]: *** [Example_charcopy.out] Error 1
    gmake: *** [all] Error 2
    makefile:143: recipe for target 'all' failed

    What to do next please?

    Another question:

    Am I right that i am in need of a virtual Linux development host for the Linux-App and Kernel?

    BR's

    Martin

  • Hello Martin,

    Hmm, ok I would tentatively expect that you would be able to load and build the example project with that version of CCS and SDK.

    I will take a closer look tomorrow. Please keep me honest and ping the thread on Monday if I haven't replied.

    Regards,

    Nick