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.

[参考译文] CC2538:有时(非常罕见)设备“停止通信”

Guru**** 2540720 points
Other Parts Discussed in Thread: CC2538, Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/580782/cc2538-sometimes-very-rare-a-device-stops-to-communicate

部件号:CC2538
主题中讨论的其他部件: Z-stack

您好,

我们与基于CC2538的ZigBee网络合作超过2年(堆栈1.2。0)。 在上个月,我们遇到了一些问题,很少有设备停止发送数据包和响应远程请求。

这些设备是在“测试”客户中工作的设备,而不是在我们的实验室中工作的设备,因此我们对发生通信中断的确切情况的反馈很低。

我们能够重现客户报告的相同症状(设备停止响应远程订单),但不能在相同的条件下重现。 为了重现相同的症状,我们不得不使用自动转换器降低/归零/提高线路电压+与设备的大量通信对远程订单“停止响应”。 设备继续工作(本地任务工作,读取键,…) 问题。 我们几乎可以肯定客户的设备没有受到任何重置(断电,看门狗,断开),因为在外部闪存中进行本地登录。

并非我们已经有代码禁止在VDD低于2.7V时写入NV内存。

这就是我们在“线路电压攻击”+与设备进行大规模通信后所达到的目标:

症状A -设备不断从NV内存读取错误的NWKKEY (0x00,0xFF…)。 设备传输数据包,但其他设备拒绝这些数据包。 设备的正常断电/通电“解决”了问题,NWKKEY开始正确读取。  

症状B -设备重新启动框架安装程序。 设备传输数据包,但其它设备会拒绝这些数据包,因为帧计数器较旧。 正常断电/通电不能解决问题。 必须关闭所有其它设备,才能忘记帧录机并开始接受数据包。

症状C -设备发送INTERPAN数据包(我们不使用INTERPAN)。 设备从其ID (正确的PANID和正确的短地址)发送数据包,但不是在相同的PANID中向协调人发送消息,而是向协调人发送PANID=0xFFFE。 断电/通电不能解决问题。 必须将设备置于网络之外并重新加入网络。

(我们附加了设备的嗅探器日志,短地址0x060E,尝试与PANID=0xFFFE通信,数据包号47及以下)

 症状D -设备认为已超出网络,因此不发送任何数据包,devstate = dev_hold。 关机/开机后,设备正常,因为没有发生任何情况。 其中一台客户设备的行为与此类似。

 

从4个设备报告到现在,在断电/通电或重新连接(1个月前)后,没有任何设备报告相同的问题。 上述4种症状都是由我们引起的。

是否有人遇到类似的问题,“设备停止通信”? 谁知道z堆栈的代码中是否有函数可以导致这种“通信中断”? 有人可以帮助我们分析这个问题吗?

 

此致

 

nalvese2e.ti.com/.../Dispositivo-fora-de-rede-apos-sair-de-PROG.psd

 

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nalves,您好!

    我们正在对此进行调查,我将在此处发布任何更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nalves,您好!

    3.0 发行说明中提到,CC2538上的NV项目上有Nwk密钥的修复,闪存设备时是否出现症状A,如果有,3.0 中的修复可以解决此问题。

    此修复程序的相关更改位于osal_nv.c中

    静态uint8 writeItem( uint8 pg, uint16 id, uint16 len, void *buf, uint8 flag ){...
    
    
    
    
    如果( chk == calcChkF( pg, datOff, len ))
    {
    hdr数据[0]=检查;
    FlashWrite (OSAL_NV_PAGE_to_PTR (pg)+ hdrOff + OSAL_NV_HDR_CHK,
    OSAL_NV_HDR_Item,(uint8 *)(hdrData);
    readHdr( pg, hdrOff,(uint8*)(&hdr);
    
    如果( chk == hdr.chk )
    {
    HotItemUpdate (pg,datOff,hdr.id);
    Rtrn =真;
    }
    }
    }
    
    ...}
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Luis,

    很高兴知道有人应该有同样的问题。 您是否有同样的问题得出这一结论? 我测试了它,但问题发生了,尽管频率较低。 当问题发生时,ZCD_NV_Nwk_active_key_info (0x003A)的NV读取结果为0x00,0xFF ....我不知道为什么会有这个值...

    此致
    Nalves
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nalves,您好!

    你说的是,即使有Luis提议的修复,你仍然看到NV中的Nwk密钥存在同样的问题吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jason:

    Luis提出的修复方案没有解决症状A的问题,但我觉得改进了,因为重现问题变得越来越困难。

    但是,有了这个建议,我就知道,当OSAL_NV_CHECK_BUS_VOLTAGE低于最小值时,osal_NV_item_init()和osal_NV_write()返回NV_Oper_failed时,z-stack不能很好地工作。

    为了解决这个问题,我将条件“if (!OSAL_NV_CHECK_BUS_VOLT ) return NV_Oper_failed;”更改为:

    同时(!OSAL_NV_CHECK_BUS_VOLT;

     //如果(!OSAL_NV_CHECK_BUS_VOLTAGE )

     //{

     // 返回NV_Oper_failed;

     //}

    在函数的第一行中:OSAL_NV_item_init(),osal_NV_write()和osal_NV_read()。 在这种交换情况下,如果检查了最小电压"OSAL_NV_CHECK_BUS_VOLT",则只会启动对NV内存的任何调用。

    有了这一变化,我无法重现第一篇文章中描述的任何其他问题,但是,我不理解初始化错误NV项目的坏开端在设备启动后的几天内有何影响。 我是这样说的,因为在测试现场,有问题的设备,只有在正常运行几天后才会出现故障。

    此致,

    nalves

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Jason:

    根据此信息,我在ZDSSecMgrNwkKeyInit()中检查了,如果以下项目的某些初始化失败(返回NV_Oper_failed[返回NV_Oper_Failed])

    - osal_NV_item_init( ZCD_NV_NWKKEY, sizeof(nwkActiveKeyItems),(void *)&keyItems );
    —osal_NV_item_init( ZCD_NV_Nwk_active_key_info, sizeof(nwkKey),&nwkKey);
    - osal_NV_item_init( ZCD_NV_Nwk_altern_key_info, sizeof(nwkKey),&nwkKey );

    这些是热项目(hotPG[],hotOff[]),它们将设置为0x00。

    NV内存可以使用hotPg[],hotOff[],iqual 0x00进行流化,由于此值从未被初始化,设备在不重新启动的情况下永远不会恢复与网络的通信!

    此致
    Nalves
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nalves,您好!

    您能否澄清您仍有哪些未解决的问题? 只是想在我再次回答之前确保我完全理解。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Jason:

    好的,让我来澄清一下。 我们正在开发一个基于具有HA配置文件的设备之间的Zigbee通信的系统。E正在使用C2538和Z-Stack 1.2。0 我们在3年时间内就可以顺利使用此解决方案。 几周前,我们检测到一些设备与网络中的其他设备明显停止通信(停止发送数据包并停止响应远程请求)。 在我们的实验室中,我们很可能会重现所报告问题的语法,我们可以在发送数据包请求的同时,将其打开并关闭。 几秒钟后,设备停止通信。设备内部工作正常,按下按键时响应打开并关闭本地执行器等,但在网络中它已失效。


    我们在Z-Stack中做了一些更改,其中一个是用于初始化信息并将信息写入NV内存的最小电源电压。 我们将其从2.0V更改为2.5V。


    我们认为NV内存操作存在一些问题,因为我们对于同一问题有不同的症状(在第1篇文章中描述),我们认为,WAT与NV准备/提交的参数有关。  
    希望这能有所帮助。 如果您仍有疑问,请随时询问我。

    此致
    Nalves

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nalves,您好!

    我们还提供了另一个补丁,用于处理低电压情况和NV操作。 我需要通过私人信息将其发送给您,因此我将向您发送e2e友谊请求,以便我们继续。