This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-CC26X2R1: Memory corruption occurs when using high ZDSECMGR_TC_DEVICE_MAX value

Part Number: LAUNCHXL-CC26X2R1
Other Parts Discussed in Thread: SIMPLELINK-CC13X2-26X2-SDK, Z-STACK

Hi,

I'm currently testing the CC26X2R1 with zigbee2mqtt and think I've stumbled upon a memory corruption issue.

I currently have a stable firmware which uses ZDSECMGR_TC_DEVICE_MAX=100, however I want to increase this further (to e.g. 200).

Jason provided me the device table sizes mentioned below and a memory calculation based on https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/p/834603/3105789#3105789 indicated that this should be possible. Memory calculation including device table sizes:

Total amount of NV = 0x4000 bytes = 16384 bytes
NWK_MAX_DEVICE_LIST = 50 * 23 bytes = 1150 bytes
ZDSECMGR_TC_DEVICE_MAX = 200 * 27 bytes = 5400 bytes
NWK_MAX_ADDRESSES = 257 * 19 bytes = 4883 bytes ((NWK_MAX_DEVICE_LIST  1)  NWK_MAX_BINDING_ENTRIES  (ZDSECMGR_TC_DEVICE_MAX  5))
MAX_NEIGHBOR_ENTRIES = 20 * 20 bytes = 400 bytes
MAX_RTG_ENTRIES = 100 * 7 bytes = 700 bytes
MAX_RTG_SRC_ENTRIES = 200 * 6 bytes = 1200 bytes
Others = - 2300 bytes
Remaining = 351 bytes

For the firmware which runs stable I use the settings below.

#define INCLUDE_REVISION_INFORMATION
#define MT_SYS_KEY_MANAGEMENT 1
#define FEATURE_NVEXID 1
#undef NWK_MAX_BINDING_ENTRIES
#define NWK_MAX_BINDING_ENTRIES 1
#undef APS_MAX_GROUPS
#define APS_MAX_GROUPS 1
#define MULTICAST_ENABLED FALSE
#define MAX_BCAST 30
#define CONCENTRATOR_ENABLE TRUE
#define CONCENTRATOR_DISCOVERY_TIME 120
#define CONCENTRATOR_ROUTE_CACHE TRUE
#define MAX_RTG_SRC_ENTRIES 200
#define SRC_RTG_EXPIRY_TIME 255
#define NWK_MAX_DEVICE_LIST 50
#define ZDSECMGR_TC_DEVICE_MAX 100
#define MAX_NEIGHBOR_ENTRIES 20
#define MAX_RTG_ENTRIES 100

However when increasing the ZDSECMGR_TC_DEVICE_MAX to greater values, e.g. 150, I get very weird behaviour. E.g. after a device joined I cannot get a response to a node descriptor request (seems that it doesn't receive any messages at all).  

I think I found an easy way to detect that memory corruption occurs. Below are 2 logs of writing a NV item using Z-tool:

ZDSECMGR_TC_DEVICE_MAX=100

<TX>07:41:28.7 COM12 SYS_OSAL_NV_ITEM_INIT (0x2107)
Id: 0x0060
Len: 0x0001
InitLen: 0x01
InitValue: . (0x00)

<RX>07:41:28.71 COM12 SYS_OSAL_NV_ITEM_INIT_SRSP (0x6107)
Status: 9 (0x9)

<TX>07:41:51.65 COM12 SYS_OSAL_NV_WRITE (0x2109)
Id: 0x0060
Offset: 0x00
Len: 0x01
Value: U (0x55)

<RX>07:41:51.65 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
Status: SUCCESS (0x0)

ZDSECMGR_TC_DEVICE_MAX=150

<TX>07:31:51.03 COM12 SYS_OSAL_NV_ITEM_INIT (0x2107)
Id: 0x0060
Len: 0x0001
InitLen: 0x01
InitValue: . (0x00)

<RX>07:31:51.05 COM12 SYS_OSAL_NV_ITEM_INIT_SRSP (0x6107)
Status: 9 (0x9)

<TX>07:32:19.58 COM12 SYS_OSAL_NV_WRITE (0x2109)
Id: 0x0060
Offset: 0x00
Len: 0x01
Value: U (0x55)

<RX>07:32:19.58 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
Status: INVALID_PARAMETER (0x2)

As can been seen, the OSAL_NV_WRITE fails on the firmware with ZDSECMGR_TC_DEVICE_MAX=150 (with a very strange error???) while it succeeds on the firmware with ZDSECMGR_TC_DEVICE_MAX=100. I've included the full Z-Tool log for both in the attachment, using this it should be possible to reproduce the issue.

Start Time: 31-10-2019 19:36:19

<TX>07:36:50.56 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x0003
    Offset: 0x00
    Len: 0x01
    Value: . (0x03)

<RX>07:36:50.56 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: SUCCESS (0x0)

<TX>07:37:21.98 COM12 SYS_RESET (0x4100)
    Type: 0x00 (HARD RESET) (0x0)

<RX>07:37:22.92 COM12 SYS_RESET_RESPONSE (0x4180)
    Reason: 0x00
    TransportRev: 0x02
    Product: 0x01
    MajorRel: 0x02
    MinorRel: 0x07
    HwRev: 0x01

<TX>07:37:47.98 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x0087
    Offset: 0x00
    Len: 0x01
    Value: . (0x00)

<RX>07:37:47.98 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: SUCCESS (0x0)

<TX>07:38:26.28 COM12 APP_CNF_BDB_SET_CHANNEL (0x2F08)
    isPrimary: TRUE (0x1)
    Channel: CHNL_0x00002000 (0x2000)

<RX>07:38:26.28 COM12 APP_CNF_BDB_SET_CHANNEL_SRSP (0x6F08)
    Status: SUCCESS (0x0)

<TX>07:38:42.06 COM12 APP_CNF_BDB_SET_CHANNEL (0x2F08)
    isPrimary: FALSE (0x0)
    Channel: NONE (0x0)

<RX>07:38:42.06 COM12 APP_CNF_BDB_SET_CHANNEL_SRSP (0x6F08)
    Status: SUCCESS (0x0)

<TX>07:39:08.29 COM12 APP_CNF_BDB_START_COMMISSIONING (0x2F05)
    CommissioningMode: (0x04) Network Formation (0x4)

<RX>07:39:13.11 COM12 APP_CNF_BDB_START_COMMISSIONING_SRSP (0x6F05)
    Status: SUCCESS (0x0)

<RX>07:39:13.11 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 1 (0x1)
    Commissioning Mode: 0x02 (Formation) (0x2)
    Commissioning Mode: 0x04 (Network Formation) (0x4)

<RX>07:39:13.39 COM12 ZDO_STATE_CHANGE_IND (0x45C0)
    State: 8 (0x8)

<RX>07:39:13.97 COM12 ZDO_STATE_CHANGE_IND (0x45C0)
    State: 9 (0x9)

<RX>07:39:13.97 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 0x00 (Success) (0x0)
    Commissioning Mode: 0x02 (Formation) (0x2)
    Commissioning Mode: 0 (0x0)

<TX>07:39:27.11 COM12 UTIL_GET_DEVICE_INFO (0x2700)

<RX>07:39:27.11 COM12 UTIL_GET_DEVICE_INFO_RESPONSE (0x6700)
    Status: SUCCESS (0x0)
    IEEEAddr: 0x00124B001CA16247
    ShortAddress: 0x0000
    DeviceType: COORDINATOR, ROUTER, END_DEVICE (0x7)
    DeviceState: DEV_ZB_COORD (0x9)
    NumAssocDevices: 0x00
    AssocDevicesList

<TX>07:40:17.71 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x008F
    Offset: 0x00
    Len: 0x01
    Value: . (0x01)

<RX>07:40:17.72 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: SUCCESS (0x0)

<TX>07:40:42.72 COM12 APP_CNF_BDB_START_COMMISSIONING (0x2F05)
    CommissioningMode: (0x02) Network Steering (0x2)

<RX>07:40:42.72 COM12 APP_CNF_BDB_START_COMMISSIONING_SRSP (0x6F05)
    Status: SUCCESS (0x0)

<RX>07:40:42.74 COM12 ZDO_MGMT_PERMIT_JOIN_RSP (0x45B6)
    SrcAddr: 0x0000
    Status: ZDP_SUCCESS (0x0)

<RX>07:40:42.74 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 0x00 (Success) (0x0)
    Commissioning Mode: 0x01 (Network Steering) (0x1)
    Commissioning Mode: 0 (0x0)

<RX>07:40:42.74 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 0x02 (No Network) (0x2)
    Commissioning Mode: 0x01 (Network Steering) (0x1)
    Commissioning Mode: 0 (0x0)

<TX>07:41:28.7 COM12 SYS_OSAL_NV_ITEM_INIT (0x2107)
    Id: 0x0060
    Len: 0x0001
    InitLen: 0x01
    InitValue: . (0x00)

<RX>07:41:28.71 COM12 SYS_OSAL_NV_ITEM_INIT_SRSP (0x6107)
    Status: 9 (0x9)

<TX>07:41:51.65 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x0060
    Offset: 0x00
    Len: 0x01
    Value: U (0x55)

<RX>07:41:51.65 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: SUCCESS (0x0)
Start Time: 31-10-2019 19:25:51

<TX>07:26:44.52 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x0003
    Offset: 0x00
    Len: 0x01
    Value: . (0x03)

<RX>07:26:44.52 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: SUCCESS (0x0)

<TX>07:26:53.86 COM12 SYS_RESET (0x4100)
    Type: 0x00 (HARD RESET) (0x0)

<RX>07:26:55.39 COM12 SYS_RESET_RESPONSE (0x4180)
    Reason: 0x00
    TransportRev: 0x02
    Product: 0x01
    MajorRel: 0x02
    MinorRel: 0x07
    HwRev: 0x01

<TX>07:27:41.86 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x0087
    Offset: 0x00
    Len: 0x01
    Value: . (0x00)

<RX>07:27:41.87 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: SUCCESS (0x0)

<TX>07:28:19.5 COM12 APP_CNF_BDB_SET_CHANNEL (0x2F08)
    isPrimary: TRUE (0x1)
    Channel: CHNL_0x00002000 (0x2000)

<RX>07:28:19.5 COM12 APP_CNF_BDB_SET_CHANNEL_SRSP (0x6F08)
    Status: SUCCESS (0x0)

<TX>07:28:31.89 COM12 APP_CNF_BDB_SET_CHANNEL (0x2F08)
    isPrimary: FALSE (0x0)
    Channel: NONE (0x0)

<RX>07:28:31.89 COM12 APP_CNF_BDB_SET_CHANNEL_SRSP (0x6F08)
    Status: SUCCESS (0x0)

<TX>07:28:48.93 COM12 APP_CNF_BDB_START_COMMISSIONING (0x2F05)
    CommissioningMode: (0x04) Network Formation (0x4)

<RX>07:28:51.86 COM12 APP_CNF_BDB_START_COMMISSIONING_SRSP (0x6F05)
    Status: SUCCESS (0x0)

<RX>07:28:51.88 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 1 (0x1)
    Commissioning Mode: 0x02 (Formation) (0x2)
    Commissioning Mode: 0x04 (Network Formation) (0x4)

<RX>07:28:52.19 COM12 ZDO_STATE_CHANGE_IND (0x45C0)
    State: 8 (0x8)

<RX>07:28:52.75 COM12 ZDO_STATE_CHANGE_IND (0x45C0)
    State: 9 (0x9)

<RX>07:28:52.77 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 0x00 (Success) (0x0)
    Commissioning Mode: 0x02 (Formation) (0x2)
    Commissioning Mode: 0 (0x0)

<TX>07:29:03.51 COM12 UTIL_GET_DEVICE_INFO (0x2700)

<RX>07:29:03.51 COM12 UTIL_GET_DEVICE_INFO_RESPONSE (0x6700)
    Status: SUCCESS (0x0)
    IEEEAddr: 0x00124B001CA16247
    ShortAddress: 0x0000
    DeviceType: COORDINATOR, ROUTER, END_DEVICE (0x7)
    DeviceState: DEV_ZB_COORD (0x9)
    NumAssocDevices: 0x00
    AssocDevicesList

<TX>07:30:07.81 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x008F
    Offset: 0x00
    Len: 0x01
    Value: . (0x01)

<RX>07:30:07.81 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: SUCCESS (0x0)

<TX>07:30:41.17 COM12 APP_CNF_BDB_START_COMMISSIONING (0x2F05)
    CommissioningMode: (0x02) Network Steering (0x2)

<RX>07:30:41.19 COM12 APP_CNF_BDB_START_COMMISSIONING_SRSP (0x6F05)
    Status: SUCCESS (0x0)

<RX>07:30:41.19 COM12 ZDO_MGMT_PERMIT_JOIN_RSP (0x45B6)
    SrcAddr: 0x0000
    Status: ZDP_SUCCESS (0x0)

<RX>07:30:41.19 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 0x00 (Success) (0x0)
    Commissioning Mode: 0x01 (Network Steering) (0x1)
    Commissioning Mode: 0 (0x0)

<RX>07:30:41.19 COM12 APP_CNF_BDB_COMMISSIONING_NOTIFICATION (0x4F80)
    Status: 0x02 (No Network) (0x2)
    Commissioning Mode: 0x01 (Network Steering) (0x1)
    Commissioning Mode: 0 (0x0)

<TX>07:31:51.03 COM12 SYS_OSAL_NV_ITEM_INIT (0x2107)
    Id: 0x0060
    Len: 0x0001
    InitLen: 0x01
    InitValue: . (0x00)

<RX>07:31:51.05 COM12 SYS_OSAL_NV_ITEM_INIT_SRSP (0x6107)
    Status: 9 (0x9)

<TX>07:32:19.58 COM12 SYS_OSAL_NV_WRITE (0x2109)
    Id: 0x0060
    Offset: 0x00
    Len: 0x01
    Value: U (0x55)

<RX>07:32:19.58 COM12 SYS_OSAL_NV_WRITE_SRSP (0x6109)
    Status: INVALID_PARAMETER (0x2)