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
  • Nope. SD must run from flash. Google: Static linking in C language.

    Note that there is next to nothing to save in current consumtion - SD runs often, but not for a long time.

  • ok thanks let see. and i have one issue .

    i am trying  to run our code from ram instead of flash in nrf52840. in linker file we create one section like this


    MEMORY
    {
    FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xda000
    RAM (rwx) : ORIGIN = 0x20003bb8, LENGTH = 0x9000
    NO_INIT (rwx) : ORIGIN = 0x20009000, LENGTH = 0x2400000
    }

    SECTIONS
    {
    }

    SECTIONS
    {
    .no_init (NOLOAD):
    {
    PROVIDE(__start_no_init_data = .);
    KEEP(*(SORT(.no_init*)))
    PROVIDE(__stop_no_init_data = .);
    } > NO_INIT
    }

    and use txn fxn

    __attribute__((used, long_call, section(".no_init"))) void main(void)

    {
    ble_init();

    }

    code is succesfully build but in jlink we dont see any print msg and nrf connect dont see my device name .  can u suggest me how can i run our main fxn in ram instead of flash

  • The .noinit section won't be populated with code - no initialization means random data (empty on POR).

    Try just using ".data" section. The startup code must copy your function from flash to RAM, this is always done for the data section.

    Note: Your NO_INIT section seems to be waaaaay bigger than available RAM, and it overlaps the actual RAM section. Both are not a good idea.

Reply
  • The .noinit section won't be populated with code - no initialization means random data (empty on POR).

    Try just using ".data" section. The startup code must copy your function from flash to RAM, this is always done for the data section.

    Note: Your NO_INIT section seems to be waaaaay bigger than available RAM, and it overlaps the actual RAM section. Both are not a good idea.

Children
Related