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.

AM5728: NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject build failed

Part Number: AM5728

When I am building NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject, the following error pops up:

Building target: "NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject.out"
Invoking: GNU Linker
"C:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/arm-none-eabi-gcc-7.3.1.exe" -mtune=cortex-a15 -marm -Dam5728 -Dcore0 -DUSE_BIOS -DSOC_AM572x -DidkAM572x -Og -g -gdwarf-3 -gstrict-dwarf -Wall -MMD -MP -mfloat-abi=hard -Wl,-Map,"NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject.map" -nostartfiles -Wl,--gc-sections -L"C:/ti/bios_6_76_03_01/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/hard" -L"C:/ti/ndk_3_61_01_01/packages/ti/ndk/os/lib" -Wl,--defsym,CORE0=1 -Wl,--defsym,STACKSIZE=0x10000 -Wl,--defsym,HEAPSIZE=0x400 --specs=nano.specs -static C:/ti/pdk_am57xx_1_0_19/packages/MyExampleProjects/NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV1/icss_dualemac_PRU0.bin C:/ti/pdk_am57xx_1_0_19/packages/MyExampleProjects/NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV1/icss_dualemac_PRU1.bin C:/ti/pdk_am57xx_1_0_19/packages/MyExampleProjects/NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU0.bin C:/ti/pdk_am57xx_1_0_19/packages/MyExampleProjects/NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject/../../ti/drv/icss_emac/firmware/icss_dualemac/bin/am572x/a15_0/REV2/icss_dualemac_PRU1.bin -o"NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject.out" "./UART_soc.o" "./main_am57xx.o" "./netHooks.o" "./osdrv_ndkdeviceconfig.o" -Wl,-T"configPkg/linker.cmd"  -Wl,--start-group -Wl,-T"C:/ti/pdk_am57xx_1_0_19/packages/ti/build/pruss/lnk_a8_a9_a15_REV1.cmd" -Wl,-T"C:/ti/pdk_am57xx_1_0_19/packages/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd" -lrdimon -lgcc -lm -lnosys -l:os.aa15fg -lc -Wl,--end-group 
makefile:152: recipe for target 'NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject.out' failed
c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe:C:/ti/pdk_am57xx_1_0_19/packages/ti/build/pruss/lnk_a8_a9_a15_REV1.cmd:10: warning: memory region `APP_CACHED_DATA_BLK0_MEM' not declared
c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe:C:/ti/pdk_am57xx_1_0_19/packages/ti/build/pruss/lnk_a8_a9_a15_REV2.cmd:10: warning: memory region `APP_CACHED_DATA_BLK1_MEM' not declared
c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: section PRU0_REV2_IMEM LMA [00000000,00002fff] overlaps section PRU0_REV1_IMEM LMA [00000000,00002fff]
c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: section PRU0_REV2_DMEM LMA [00003000,00004fff] overlaps section PRU0_REV1_DMEM LMA [00003000,00004fff]
c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: section PRU1_REV2_IMEM LMA [00006000,00008fff] overlaps section PRU1_REV1_IMEM LMA [00006000,00008fff]
c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: section PRU1_REV2_DMEM LMA [00009000,0000afff] overlaps section PRU1_REV1_DMEM LMA [00009000,0000afff]
collect2.exe: error: ld returned 1 exit status
gmake[1]: *** [NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject.out] Error 1
gmake: *** [all] Error 2
makefile:148: recipe for target 'all' failed

I build the project fresh without changing any setting.

  • Hi,

    Can you please have a look at the steps mentioned in this thread. Let me know if it helps.

    Regards,
    Tanmay

  • Those were general steps shown in Rebuilding the PDK through which I managed to obtain the NIMU_ICSS project fresh. I think the problem is more related to the PRU_ICSS local memory maps, notably instruction memory (IMEM), data memory (DMEM). 

    According to the error message, the most relevant code snippets I can allocate are: 

    <Project dir> NIMU_ICSS_BasicExample_idkAM572x_wSocLib_armExampleproject/Debug/ConfigPkg/linker.cmd

    SECTIONS {
    
            BOARD_IO_DELAY_DATA : {*(BOARD_IO_DELAY_DATA)}  AT> OCMC_RAM1
        BOARD_IO_DELAY_CODE : {*(BOARD_IO_DELAY_CODE)}  AT> OCMC_RAM1
        APP_CACHED_DATA_BLK1_MEM : {*(APP_CACHED_DATA_BLK1_MEM)}  AT> EXT_RAM
        PRU0_REV1_IMEM : {*(PRU0_REV1_IMEM)}  AT> EXT_RAM
        PRU0_REV1_DMEM : {*(PRU0_REV1_DMEM)}  AT> EXT_RAM
        PRU0_REV1_EXT : {*(PRU0_REV1_EXT)}  AT> EXT_RAM
        PRU1_REV1_IMEM : {*(PRU1_REV1_IMEM)}  AT> EXT_RAM
        PRU1_REV1_DMEM : {*(PRU1_REV1_DMEM)}  AT> EXT_RAM
        PRU1_REV1_EXT : {*(PRU1_REV1_EXT)}  AT> EXT_RAM
        .vecs : {*(.vecs)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuFirstLevelTableSection (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuFirstLevelTableSection)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection0 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection0)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection1 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection1)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection2 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection2)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection3 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection3)}  AT> EXT_RAM
        xdc.meta (COPY) : {KEEP(*(xdc.meta))}  AT> EXT_RAM

    Also: C:/ti/pdk_am57xx_1_0_19/packages/ti/build/pruss/lnk_a8_a9_a15_REV1.cmd

    SECTIONS {
    
            BOARD_IO_DELAY_DATA : {*(BOARD_IO_DELAY_DATA)}  AT> OCMC_RAM1
        BOARD_IO_DELAY_CODE : {*(BOARD_IO_DELAY_CODE)}  AT> OCMC_RAM1
        APP_CACHED_DATA_BLK1_MEM : {*(APP_CACHED_DATA_BLK1_MEM)}  AT> EXT_RAM
        PRU0_REV1_IMEM : {*(PRU0_REV1_IMEM)}  AT> EXT_RAM
        PRU0_REV1_DMEM : {*(PRU0_REV1_DMEM)}  AT> EXT_RAM
        PRU0_REV1_EXT : {*(PRU0_REV1_EXT)}  AT> EXT_RAM
        PRU1_REV1_IMEM : {*(PRU1_REV1_IMEM)}  AT> EXT_RAM
        PRU1_REV1_DMEM : {*(PRU1_REV1_DMEM)}  AT> EXT_RAM
        PRU1_REV1_EXT : {*(PRU1_REV1_EXT)}  AT> EXT_RAM
        .vecs : {*(.vecs)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuFirstLevelTableSection (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuFirstLevelTableSection)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection0 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection0)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection1 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection1)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection2 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection2)}  AT> EXT_RAM
        ti.sysbios.family.arm.a15.mmuSecondLevelTableSection3 (NOLOAD) : {*(ti.sysbios.family.arm.a15.mmuSecondLevelTableSection3)}  AT> EXT_RAM
        xdc.meta (COPY) : {KEEP(*(xdc.meta))}  AT> EXT_RAM

    Maybe look into this direction can be helpful?

    Kind regards,

    Gerard

  • I am sorry for a typo here:

    The second code snippet should be this instead

    C:/ti/pdk_am57xx_1_0_19/packages/ti/build/pruss/lnk_a8_a9_a15_REV1.cmd

    /* SPECIFY THE SYSTEM MEMORY MAP */
    SECTIONS
    {
        PRU0_REV1_IMEM : {
            pru_imem0_rev1_start = .;
            KEEP(*(PRU0_REV1_IMEM))
            pru_imem0_rev1_end = .;
        } > APP_CACHED_DATA_BLK0_MEM
        PRU0_REV1_DMEM : {
            pru_dmem0_rev1_start = .;
            KEEP (*(PRU0_REV1_DMEM))
            pru_dmem0_rev1_end = .;
        } > APP_CACHED_DATA_BLK0_MEM
        PRU0_REV1_EXT : {
            KEEP (*(PRU0_REV1_EXT))
        } > APP_CACHED_DATA_BLK0_MEM
        PRU1_REV1_IMEM : {
            pru_imem1_rev1_start = .;
            KEEP (*(PRU1_REV1_IMEM))
            pru_imem1_rev1_end = .;
        } > APP_CACHED_DATA_BLK0_MEM
        PRU1_REV1_DMEM : {
            pru_dmem1_rev1_start = .;
            KEEP (*(PRU1_REV1_DMEM))
            pru_dmem1_rev1_end = .;
        } > APP_CACHED_DATA_BLK0_MEM
        PRU1_REV1_EXT : {
            KEEP (*(PRU1_REV1_EXT))
        } > APP_CACHED_DATA_BLK0_MEM
    }

  • Change the default configuration from evmAM572x to idkAM572x and build again.