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

can we run soft device from RAM instead of flash?

 is there any way to run soft device from RAM instead of flash? which function we can use for this .i am using s140 for nrf52840.

Parents Reply Children
  • The gcc ARM documentaion suggests using

    #pragma long_calls

    as workaround.

    ARM Cortex-M cannot use a single instruction to call functions outside a ±16MB range, and thus won't be able to call flash from RAM. Workaround is to put the address into a register and use this for the call (BLX).

  • as per your suggestion i am using like this  in bilnky example

    #pragma long_calls 


    __attribute__((used, long_calls, section(".data"))) int main(void)
    {
    /* Configure board. */
    bsp_board_init(BSP_INIT_LEDS);

    /* Toggle LEDs. */
    while (true)
    {
    for (int i = 0; i < LEDS_NUMBER; i++)
    {
    bsp_board_led_invert(i);
    nrf_delay_ms(500);
    }
    }

    but we get same error

    bilnkyoutsdh/Applications/main.c:66:(.data+0x6): relocation truncated to fit: R_ARM_THM_CALL against symbol `bsp_board_init' defined in .text.bsp_board_init section in _build/nrf52840_xxaa_boards.c.o
    bilnkyoutsdh/Applications/main.c:73:(.data+0x12): relocation truncated to fit: R_ARM_THM_CALL against symbol `bsp_board_led_invert' defined in .text.bsp_board_led_invert section in _build/nrf52840_xxaa_boards.c.o
    collect2.exe: error: ld returned 1 exit status

Related