AnsweredAssumed Answered

LPC4330 multicore project (M4/M0): linker can't resovle symbols for M0 application .text

Question asked by Brett Nicholas on May 31, 2018
Latest reply on Jun 4, 2018 by Victor Jimenez

Hi there NXP,

 

I'm trying to build a multicore project for the lpc4330FET100 in MCUXpresso, linking against the LPCOpen libraries. My M0 project builds successfully, however when I try to build the M4 project I get the following error:

Building target: XOPowerMgr.axf
Invoking: MCU Linker
arm-none-eabi-gcc -nostdlib -L"C:\Work\Firmware\MCUXPresso\lpc_chip_43xx\Debug" -Xlinker -Map="XOPowerMgr.map" -Xlinker --gc-sections -Xlinker -print-memory-usage -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb -T "XOPowerMgr_Debug.ld" -o "XOPowerMgr.axf"  ./src/XOPowerMgr.o ./src/cr_start_m0.o ./src/cr_startup_lpc43xx.o ./src/crp.o ./src/sysinit.o  C:/Work/Firmware/MCUXPresso/XOPowerMgr_M0/Debug/XOPowerMgr_M0.axf.o -llpc_chip_43xx
XOPowerMgr_Debug.ld:28: undefined section `.data_core_m0app_text' referenced in expression
collect2.exe: error: ld returned 1 exit status
make: *** [XOPowerMgr.axf] Error 1

It seems that there is an error in the auto-generated linker script on the M0 side of things (maybe not exporting the right symbols??) but I don't really know how to proceed.

 

I created both projects as multicore apps, and added the M0 project object file to the M4 project in the multicore configuration dialog.

 

I've attached the autogenerated linker scripts for both cores for reference. A snippet containing the offending line from the M4 linker script is shown below:

SECTIONS
{
    /* MAIN TEXT SECTION */
    .text : ALIGN(4)
    {
        FILL(0xff)
        __vectors_start__ = ABSOLUTE(.) ;
        KEEP(*(.isr_vector))
        /* Global Section Table */
        . = ALIGN(4) ;
        __section_table_start = .;
        __data_section_table = .;
        LONG(LOADADDR(.data_core_m0app_text)); <-- ERROR HERE
        LONG(    ADDR(.data_core_m0app_text));
        LONG(  SIZEOF(.data_core_m0app_text));
        LONG(LOADADDR(.data_core_m0app_ARM_extab));
        LONG(    ADDR(.data_core_m0app_ARM_extab));
        LONG(  SIZEOF(.data_core_m0app_ARM_extab));
        LONG(LOADADDR(.data_core_m0app_ARM_exidx));
        LONG(    ADDR(.data_core_m0app_ARM_exidx));
        LONG(  SIZEOF(.data_core_m0app_ARM_exidx));
        LONG(LOADADDR(.data_core_m0app_data));
        LONG(    ADDR(.data_core_m0app_data));
        LONG(  SIZEOF(.data_core_m0app_data));
        LONG(LOADADDR(.data));

 

Any help is appreciated. Thanks!

Outcomes