Anyway to separate nrf connect sdk util from user application to decrease image size when performing DFU, like SoftDevice strategy ?

Hi,

We are using nRF Connect SDK to develop Mesh application on nRF52832. We want to add DFU function to our application.

When analyzing the memory report, we find that exceed 90% of the ROM is nRF Connnect SDK Util. Our self-developed code takes up less than 10%.

Is there anyway that we can seperate nrRF Connect SDK Util from user application, like SoftDevice in nRF SDK?
Thereby, we can put the nRF Connect SDK Util in one partition and our user application in another partition. After that, we just need to upgrade the user application when performing DFU.

Parents
  • Hi,

    In nRF5 SDK the SoftDevice was a separate entity that was called into from the application using supervisor calls. In nRF Connect SDK, on the other hand, the stack is linked into the application itself. Therefore, in nRF Connect SDK there is no such separation between stack and application, and they have to be updated together as one entity. This means there will also be one common image for the DFU.

    You may still be able to reduce the size of the application (including stack), see memory footprint optimization. For a Bluetooth mesh application, the sections general recommendations, Bluetooth and Bluetooth mesh are relevant. You can also look for the microbit configuration files, as those are made specifically for small memory footprints. The following files may be of interest for reference:

    ./zephyr/samples/bluetooth/hci_uart/boards/bbc_microbit.conf
    ./zephyr/samples/bluetooth/mesh/microbit_gatt.conf
    ./zephyr/samples/bluetooth/mesh/prj_bbc_microbit.conf
    ./zephyr/samples/bluetooth/mesh_demo/prj_bbc_microbit.conf
    ./zephyr/tests/bluetooth/mesh/microbit.conf
    ./zephyr/tests/bluetooth/mesh/microbit_gatt.conf

    Regards,
    Terje

Reply
  • Hi,

    In nRF5 SDK the SoftDevice was a separate entity that was called into from the application using supervisor calls. In nRF Connect SDK, on the other hand, the stack is linked into the application itself. Therefore, in nRF Connect SDK there is no such separation between stack and application, and they have to be updated together as one entity. This means there will also be one common image for the DFU.

    You may still be able to reduce the size of the application (including stack), see memory footprint optimization. For a Bluetooth mesh application, the sections general recommendations, Bluetooth and Bluetooth mesh are relevant. You can also look for the microbit configuration files, as those are made specifically for small memory footprints. The following files may be of interest for reference:

    ./zephyr/samples/bluetooth/hci_uart/boards/bbc_microbit.conf
    ./zephyr/samples/bluetooth/mesh/microbit_gatt.conf
    ./zephyr/samples/bluetooth/mesh/prj_bbc_microbit.conf
    ./zephyr/samples/bluetooth/mesh_demo/prj_bbc_microbit.conf
    ./zephyr/tests/bluetooth/mesh/microbit.conf
    ./zephyr/tests/bluetooth/mesh/microbit_gatt.conf

    Regards,
    Terje

Children
No Data
Related