This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to execute code from RAM on nRF51 using GCC Environment

How to execute code from RAM on nRF51 using GCC Environment

Parents
  • Hi,

    You can place a function in RAM in GCC like this:

    __attribute__((used, long_call, section(".data"))) void some_func(void)
    {
      do_something();
    }
    

    Then you should check the .map file to see that it's located somewhere in RAM (0x2000XYZZ)

    Cheers, Håkon

  • Hi Håkon,

    Thanks for your input :) .

    Regarding the command attribute((used, long_call, section(".data"))) , I have implemented as below. I want to put function1 into RAM.

    attribute((used, long_call, section(".data"))) void function1(unsigned char *Data, uint16_t len) {

    function2(Data, len);

    }

    When I tried to build I got the error as "(.data+0x20): relocation truncated to fit: R_ARM_THM_CALL against `function2'".

    is there any thing I need to change in the linker files(I am using SDK6.1).

    Sorry it looks like some basic stuff , But still I need your help to understand this.

    Regards, Anand

Reply
  • Hi Håkon,

    Thanks for your input :) .

    Regarding the command attribute((used, long_call, section(".data"))) , I have implemented as below. I want to put function1 into RAM.

    attribute((used, long_call, section(".data"))) void function1(unsigned char *Data, uint16_t len) {

    function2(Data, len);

    }

    When I tried to build I got the error as "(.data+0x20): relocation truncated to fit: R_ARM_THM_CALL against `function2'".

    is there any thing I need to change in the linker files(I am using SDK6.1).

    Sorry it looks like some basic stuff , But still I need your help to understand this.

    Regards, Anand

Children
No Data
Related