TI中文支持网
TI专业的中文技术问题搜集分享网站

OTA 过程中协调器发送 image response 出现 ZMemError(0x10)

协议栈:Z-Stack 3.0.2

协调器:CC2538

路由器:EFR32

终端:EFR32

问题描述:

网络中有50个设备,44个路由器和6个终端设备。现在对其中一个终端设备进行OTA升级。升级到了80%的时候协调器会出现发送 image response 命令 会返回ZMemError(0x10),最后导致 OTA 设备发送终止命令,OTA 升级失败。

OTA升级期间没有别的设备进行应用层report之类的交互命令,只有MTO的route request 和 status link 这些维护网络的命令。请问 ZMemError(0x10) 呢?

Viki Shi:

请问是不是以前发过一个类似的问题,这边已有给出解释: e2echina.ti.com/…/171894

Jesse Huang:

回复 Viki Shi:

对,那个问题是官方协议栈设备入网时有个内存泄漏bug,我解决了。但是在较大的网络进行 OTA 升级的时候还是会出现ZMemError(0x10) ,在 50 个节点的网络中 OTA 升级不稳定,容易中断。

Alvin Chen:

回复 Jesse Huang:

你好,

尝试增大缓冲区试试:

#define NWK_MAX_DATABUFS_WAITING 16 //8 // Waiting to be sent to MAC
#define NWK_MAX_DATABUFS_SCHEDULED 10 //5 // Timed messages to be sent
#define NWK_MAX_DATABUFS_CONFIRMED 10 //5 // Held after MAC confirms
#define NWK_MAX_DATABUFS_TOTAL 24 //12 // Total number of buffers

修改 CC2538.icf获取更大内存:

FLASH = mem:[from 0x00200000 to 0x002797FF];
NV_MEM = mem:[from 0x00279800 to 0x0027F7FF];

Jesse Huang:

回复 Alvin Chen:

我设置的是:
#define NWK_MAX_DATABUFS_WAITING 16 //8 // Waiting to be sent to MAC
#define NWK_MAX_DATABUFS_SCHEDULED 10 //5 // Timed messages to be sent
#define NWK_MAX_DATABUFS_CONFIRMED 10 //5 // Held after MAC confirms
#define NWK_MAX_DATABUFS_TOTAL 24 //12 // Total number of buffers

define region FLASH = mem:[from 0x00200134 to 0x00277FFF];
define region NV_MEM = mem:[from 0x00279800 to 0x0027F7FF];
因为我启用了 SBL。
我在英文论坛找到了一篇有关我描述的问题的文章:
e2e.ti.com/…/2589323
从这篇文章你能推测出什么问题么?

Alvin Chen:

回复 Jesse Huang:

你抓包时是否有大量的route request
可以试试加大下面的两个值。
CONCENTRATOR_DISCOVERY_TIME
SRC_RTG_EXPIRY_TIME,

Jesse Huang:

回复 Alvin Chen:

40 多个 router 在进行 route request 的时候是会有大量的 route request 命令,请问这个是怎么影响协议栈内存调度的?
我的
CONCENTRATOR_DISCOVERY_TIME= 120
SRC_RTG_EXPIRY_TIME = 2

Alvin Chen:

回复 Jesse Huang:

我是猜想如果有大量的 route request会不会造成ZC处理的时频繁回复response造成的,试试看吧,或者你能debug一下抓一下。

Jesse Huang:

回复 Alvin Chen:

route request 广播是 coordinator 发起的,它只会发一次吧?在这期间 coordinator 会在哪些地方申请内存?

Alvin Chen:

回复 Jesse Huang:

route reply 会占用内存的。

Jesse Huang:

回复 Alvin Chen:

zigbee网络测试-节点设备OTA升级中途停止-协调器内存分配失败-OTA失败-Abort.rar

我看了 route reply 只是别的设备发送给 coordinator 的而已,而且很少,你能帮我看下这个抓包吗?

前面 OTA 升级时非常顺利的,可是到了后面网络结构会变化,然后 coordinator 要进行 router request 过程修复链路。到最后面 coordinator 就出现zMemError(0x10),OTA 设备收不到 image response 就发送 abort 给 coordinator,升级失败。

赞(0)
未经允许不得转载:TI中文支持网 » OTA 过程中协调器发送 image response 出现 ZMemError(0x10)
分享到: 更多 (0)