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

Zigbee maximum device number

Hi, I'm using nRF5_SDK_for_Thread_and_Zigbee_v3.1.0_c7c4730 to develop a Zigbee Network.
I'm using the ble_zigbee_template example as starting point of my works.
I seen that the Zigbee stack is able to store permanently the network data of each device connected (to delete it user must connect pin 1.09 to GND during startup).
My questions:
- how many Zigbee node can store? I need to have until 250 node stored.
- what's the address of FLASH storage for these data?
Many thanks for help
Kind Regards

Abele

Parents
  • Hello Abele,

    I had to forward this question to our Zigbee team. I should have noticed you, but I haven't received any response yet.

    Just some background:

    I believe (waiting for confirmation) that this is stored similarly to FDS, so it will not be a specific flash address containing the addresses and routing tables for each node. It is most likely a dynamic handling of this data.

    I see that on the nRF52840 there are some data stored in two locations:

    One chunk on 0x000F7000 and one chunk on 0x000FB000. Do you need more information regarding the address than this? If so, what?

    I am waiting for an answer regarding the number of nodes that can be stored.

  • Hello Edvin
    Thanks for answer, for further requests I will wait the info about the maximum # nodes can stored.

  • Hello,

    I am sorry for the late reply. I received this today:

    Q: What's the address of FLASH storage for these data?

    A: Zigbee storage is placed at the end of the Flash, start address depends on:

    • Amount of flash available at given chip
    • Size of flash to be used by the Zigbee stack

    Q: How many Zigbee node can store? I need to have until 250 node stored.

    A: From looking at docs I can see limitation of 200 nodes. Ble_zigbee_template includes zb_mem_config_med.h which indicates network size of 32 nodes (taken directly from zb_mem_config.h, also available in Infocenter ).

    Are there any further questions from the customer?

    So it doesn't look like there is possible to store 250 nodes, unfortunately.

    This is due to memory restrictions.

  • Ok, for my customer 200 device are good.
    Now, I see that flash space reserved for zBoss stack is configured on sdk_config.h file (see code below)

    // <i> Expressed in number of 4-byte words.
    // <i> By default, a virtual page is the same size as a physical page.
    // <i> The size of a virtual page must be a multiple of the size of a physical page.
    // <1024=> 1024 
    // <2048=> 2048 
    
    #ifndef FDS_VIRTUAL_PAGE_SIZE
    #define FDS_VIRTUAL_PAGE_SIZE 1024
    #endif
    
    // <s> FDS_VIRTUAL_PAGES_RESERVED - The number of virtual flash pages that are used by other modules.
    
    // <i> FDS module stores its data in the last pages of the flash memory.
    // <i> By setting this value, you can move flash end address used by the FDS.
    // <i> As a result the reserved space can be used by other modules.
    #ifndef FDS_VIRTUAL_PAGES_RESERVED
    #define FDS_VIRTUAL_PAGES_RESERVED ((ZIGBEE_NVRAM_PAGE_SIZE * (ZIGBEE_NVRAM_PAGE_COUNT + ZIGBEE_NVRAM_CONFIG_PAGE_COUNT))/(FDS_VIRTUAL_PAGE_SIZE * 4))
    #endif

    // <i> Selectively enable Zigbee binary trace logs. Possible values (logical or): TRACE_SUBSYSTEM_ZCL, TRACE_SUBSYSTEM_ZDO, TRACE_SUBSYSTEM_NWK. Defaults to 0x0000.
    
    #ifndef ZIGBEE_TRACE_MASK
    #define ZIGBEE_TRACE_MASK 0
    #endif
    
    // <o> ZIGBEE_TIMER_INSTANCE_NO - nRF timer instance used by Zigbee stack 
    #ifndef ZIGBEE_TIMER_INSTANCE_NO
    #define ZIGBEE_TIMER_INSTANCE_NO 3
    #endif
    
    // <o> ZIGBEE_NVRAM_PAGE_SIZE - Size of logical Zigbee NVRAM page in bytes 
    // <i> The size must be a multiply of physical page size
    
    #ifndef ZIGBEE_NVRAM_PAGE_SIZE
    #define ZIGBEE_NVRAM_PAGE_SIZE 16384
    #endif
    
    // <o> ZIGBEE_NVRAM_PAGE_COUNT - Number of Zigbee NVRAM data pages 
    #ifndef ZIGBEE_NVRAM_PAGE_COUNT
    #define ZIGBEE_NVRAM_PAGE_COUNT 2
    #endif
    
    // <o> ZIGBEE_NVRAM_CONFIG_PAGE_COUNT - Number of Zigbee NVRAM configuration pages 
    #ifndef ZIGBEE_NVRAM_CONFIG_PAGE_COUNT
    #define ZIGBEE_NVRAM_CONFIG_PAGE_COUNT 1
    #endif
    

    My futher question:
    These settings are enough for 200 device?
    (I will remember you that I'm developing a Coordinator)
    Please, if possible to answer me asap.
    Thanks. Abele

  • I want to say yes. Unless you have any error messages during the initialization, there shouldn't be any issues, I believe. The stack will set aside as much memory as it needs. Let me double check with the team. In the meantime, can you check that it doesn't throw any errors during initialization?

    BR,

    Edvin

  • What you means with

    errors during initialization?

    In any case, I have no errors during boot phase, also when it is a "first start" after all flash area erase before programming the device.

Reply Children
Related