[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

  • Hi Maria,

    Thank you for your effort.

    This note is not relevant for RAM memory configuration and the note will be removed in a future documentation update.

    So since today, that note is false-positive and each config (see screenshot below) can be changed between FOTA updates without a risk, am I right?

      

    Regarding the production config partition it turned out that the best option is to do the following: 

    # prj.conf
    CONFIG_PM_PARTITION_SIZE_ZBOSS_PRODUCT_CONFIG
    
    
    # main.c 
    
    int main(void){
    
        # some other important zigbee stuff
        zb_production_config_disable(ZB_TRUE);
        zigbee_enable();
    
    }

    The build system is happy because the zboss_product_config partition exists but does not occupy any memory.

    Commenting out the flash_area_open in zb_osif_nvram.c: zb_osif_nvram_init() for me seems not mandatory. In case of a failure it will generate only false-positive log.

    Regards,

    Pawel

  • Hi Pawel,

    Pawel(embeddedsolutions.pl) said:
    So since today, that note is false-positive and each config (see screenshot below) can be changed between FOTA updates without a risk, am I right?

    Note that the Flash memory configuration is still important and will cause incompatibility if they differ between current and new image.

    But yes, the memory configuration for RAM can be changed between FOTA updates.

    Pawel(embeddedsolutions.pl) said:
    Regarding the production config partition it turned out that the best option is to do the following: 
    Pawel(embeddedsolutions.pl) said:

    The build system is happy because the zboss_product_config partition exists but does not occupy any memory.

    Commenting out the flash_area_open in zb_osif_nvram.c: zb_osif_nvram_init() for me seems not mandatory. In case of a failure it will generate only false-positive log.

    Thank you for sharing your solution.

    Best regards,

    Maria

  • Hi Maria,

    Note that the Flash memory configuration is still important and will cause incompatibility if they differ between current and new image.

    Ok, to sum things up.

    ZBOSS 3.11.2.1 RAM -> These configs can be changed between FOTA/DFU updates.

    ZBOSS 3.11.2.1 FLASH -> That data cannot be changed between FOTA/DFU updates but I do not see any configurable configs. I assume the "Flash memory configuration" applies only to the flash layout. Is my assumption correct? 

    Best regards,

    Pawel

  • Good summary.

    Pawel(embeddedsolutions.pl) said:
    I assume the "Flash memory configuration" applies only to the flash layout. Is my assumption correct? 

    Yes, you are correct.

    Best regards,

    Maria

Related