This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Cannot open linker script file nrf_common.ld

Hello,

we are using SEGGER Embedded Studio for ARM 4.16 to program Nordic chip nRF52832 (SDK is nRF5_SDK_15.3.0).
We would like to have some functions executed in RAM and wanted to use a manual linker script for this (as described in "SEGGER Linker, A linker for Cortex-M Microcontrollers, User Guide & Reference Manual").

We have activated the manual linker script within the linker options. Everytime we select a linker script (for ex. rtc_gcc_nrf52.ld in the rtc exemple case), following error message appears:
C:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 4.16/gcc/arm-none-eabi/bin/ld: cannot open linker script file nrf_common.ld: No such file or directory
Build failed

Any idea why ?

  • Hi

    It seems like you haven't added the nrf_common.ld file to your project. Please see this case for reference, as this guy is implementing something similar.

    Best regards,

    Simon

  • Hi Simon,

    we were able to solve our issue via flash_placement file, using the .fast section instead of a linker script.

    Best regards
    Tibor

  • can you help me with this? How did you solved with flash_placement file?

  • our goal was to put functions into RAM.

    This can be done with __attribute__ ((section(".fast"))) void my_function(void) as the section fast is already configured in the flash_placement file.

  • My flash_placement.xml file looks like this. Where should I add this term to remove cannot open linker script file nrf_common.ld.

    <!DOCTYPE Linker_Placement_File>
    <Root name="Flash Section Placement">
      <MemorySegment name="$(FLASH_NAME:FLASH)">
        <ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START:)" />
        <ProgramSection alignment="4" load="Yes" name=".init" />
        <ProgramSection alignment="4" load="Yes" name=".init_rodata" />
        <ProgramSection alignment="4" load="Yes" name=".text" />
        <ProgramSection alignment="4" load="Yes" name=".dtors" />
        <ProgramSection alignment="4" load="Yes" name=".ctors" />
        <ProgramSection alignment="4" load="Yes" name=".rodata" />
        <ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" />
        <ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" />
        <ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" />
        <ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" />
        <ProgramSection alignment="4" keep="Yes" load="Yes" runin=".fs_data_run" name=".fs_data" />
      </MemorySegment>
      <MemorySegment name="$(RAM_NAME:RAM);SRAM">
        <ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START:$(SRAM_START:))" />
        <ProgramSection alignment="4" load="No" name=".fast_run" />
        <ProgramSection alignment="4" load="No" name=".data_run" />
        <ProgramSection alignment="4" load="No" name=".tdata_run" />
        <ProgramSection alignment="4" load="No" keep="Yes" name=".fs_data_run" address_symbol="__start_fs_data" end_symbol="__stop_fs_data" />
        <ProgramSection alignment="4" load="No" name=".bss" />
        <ProgramSection alignment="4" load="No" name=".tbss" />
        <ProgramSection alignment="4" load="No" name=".non_init" />
        <ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" />
        <ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack" />
        <ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" />
      </MemorySegment>
      <MemorySegment name="$(FLASH2_NAME:FLASH2)">
        <ProgramSection alignment="4" load="Yes" name=".text2" />
        <ProgramSection alignment="4" load="Yes" name=".rodata2" />
        <ProgramSection alignment="4" load="Yes" runin=".data2_run" name=".data2" />
      </MemorySegment>
      <MemorySegment name="$(RAM2_NAME:RAM2)">
        <ProgramSection alignment="4" load="No" name=".data2_run" />
        <ProgramSection alignment="4" load="No" name=".bss2" />
      </MemorySegment>
    </Root>
    

Related