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)