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

nRF9160 SRAM Partition changes

Hello,

I would like to modify the current default SRAM partition from 64k (secure), 64k (bsd), 128k (non-secure).  I would like to change it as follows; 8k (secure), 8k (bsd), 240k (non-secure).  The secure_boot application is only using around 4k now, so 8k is more than enough.  Will the bsd be ok at 8k? What other potential problems should I look out for?

Thanks,

JL

Parents
  • Hi JL,

    Update 20.01.2020:

    Check the updated BSDLIB documentation for the latest information.

    "The secure domain memory is divided into segments of 8 KB RAM blocks. Because the size of the BSD library block is 0xC020 bytes, it is not aligned to full 8 KB blocks. It occupies six blocks and a small part of a seventh block.

    The leftover memory in that seventh block (8160 bytes, starting at address 0x2001 c020) is configured as non-secure, but it can be used by the application."




    Old answer:
    The BSD Library has an absolute position and is fixed at starting address 64K and size of 64K (0x20010000 – 0x2001FFFF).

    This cannot be moved.

    However, all other partitions might be moved. 

    Note: The BSD memory always has to be Non-Secure configured.


    You can find the "Default flash planning"  in the file: [/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090_partition_conf.dts]

    There it's also documented that "64 kB SRAM reserved for and used by the BSD socket library."

    Best regards,
    Martin L.

Reply
  • Hi JL,

    Update 20.01.2020:

    Check the updated BSDLIB documentation for the latest information.

    "The secure domain memory is divided into segments of 8 KB RAM blocks. Because the size of the BSD library block is 0xC020 bytes, it is not aligned to full 8 KB blocks. It occupies six blocks and a small part of a seventh block.

    The leftover memory in that seventh block (8160 bytes, starting at address 0x2001 c020) is configured as non-secure, but it can be used by the application."




    Old answer:
    The BSD Library has an absolute position and is fixed at starting address 64K and size of 64K (0x20010000 – 0x2001FFFF).

    This cannot be moved.

    However, all other partitions might be moved. 

    Note: The BSD memory always has to be Non-Secure configured.


    You can find the "Default flash planning"  in the file: [/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090_partition_conf.dts]

    There it's also documented that "64 kB SRAM reserved for and used by the BSD socket library."

    Best regards,
    Martin L.

Children
  • Hi Martin,

    Is it possible then to have discontiguous Non-Secure areas in SRAM to be used by the application?

    &sram0 {

    reg = <0x20000000 DT_SIZE_K(8)>;

    };

    &sram0_ns {

    reg = <0x20002000 DT_SIZE_K(56)>;

    };

    &sram0_bsd {

    reg = <0x20010000 DT_SIZE_K(64)>;

    };

    &sram1_ns {

    reg = <0x20020000 DT_SIZE_K(128)>;

    };

    Thanks,

    JL

  • I stronly would suggest that Nordic builds/releases another bsd library that only uses 8k or 16k of memory.
    Following the sugested SAM partition of 64kb secure, 64kbkb bsd that leaves you only 128kb for the application.

    For example: I am porting an appliction that used to access an ublox cellular modem and uses at most 2kb of RAM. Why should I waste the other 62kb of RAM?

    The secure memory can easily be reclaimed but not the BSD memory.

    And I think it implies from the original question that JL just wanted to increase the available memory for the non-secure application.

Related