[Zigbee] OTA compatibility & custom memory configuration

Setup: 
NCS v2.4.1

nrf52840DK (ZR)

Hi, 

I am looking for clarification regarding that small note [Developing with ZBOSS]: 
The memory configuration must not be changed between firmware versions if the firmware is going to be upgraded using the OTA DFU.

  1. Is it valid for all configs or only for part of them ? 
  2. How this works under the hood ? 
  3. Is OTA incompatibility still valid if I am using static partition layout ? 
  4. Do I really need to put my custom memory configuration header after zboss_api.h everywhere I am using the zboss_api.h ? Can it be done in other way in Cmake for eg. ?

I look forward to hearing from you,

Pawel

Parents
  • Hi Pawel,

    This link is to the documentation of an old ZBOSS version. The most recent -- and the one applicable for NCS v2.4.1 is found here (ZBOSS 3.11.2.1 for production). Please update bookmarks if you have an older version of the documentation saved. This can save you some confusion in the future.

    Is it valid for all configs or only for part of them ? 

    It's valid for all the configs.

    How this works under the hood ? 

    What are your referring to here? The memory configuration layout, the OTA DFU process? Please elaborate.

    Is OTA incompatibility still valid if I am using static partition layout ? 

    Yes, the requirement for using the same memory configuration for future firmware versions applies when you are using a static partition layout. Note that static partition is recommended when you are planning to do DFU in the future.

    Do I really need to put my custom memory configuration header after zboss_api.h everywhere I am using the zboss_api.h ?

    No, not everywhere. It is needed in your main application file (often named main.c) and the memory configuration header needs to be included after including zboss_api.h. See the Where to include header files section of the documentation.

    Can it be done in other way in Cmake for eg. ?

    No, the method is as described in the documentation: including it in the main application file after zboss_api.h is included.

    Best regards,

    Maria

Reply
  • Hi Pawel,

    This link is to the documentation of an old ZBOSS version. The most recent -- and the one applicable for NCS v2.4.1 is found here (ZBOSS 3.11.2.1 for production). Please update bookmarks if you have an older version of the documentation saved. This can save you some confusion in the future.

    Is it valid for all configs or only for part of them ? 

    It's valid for all the configs.

    How this works under the hood ? 

    What are your referring to here? The memory configuration layout, the OTA DFU process? Please elaborate.

    Is OTA incompatibility still valid if I am using static partition layout ? 

    Yes, the requirement for using the same memory configuration for future firmware versions applies when you are using a static partition layout. Note that static partition is recommended when you are planning to do DFU in the future.

    Do I really need to put my custom memory configuration header after zboss_api.h everywhere I am using the zboss_api.h ?

    No, not everywhere. It is needed in your main application file (often named main.c) and the memory configuration header needs to be included after including zboss_api.h. See the Where to include header files section of the documentation.

    Can it be done in other way in Cmake for eg. ?

    No, the method is as described in the documentation: including it in the main application file after zboss_api.h is included.

    Best regards,

    Maria

Children
Related