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.
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.
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