CH592蓝牙mesh长时间运行会出现死机现象

当多个蓝牙mesh节点长时间(好几天)上电时,会有个别节点死机的现象。程序中并未使用中断,但是tmos中有个100ms的任务循环用于接收mesh数据,同时有使用pwm进行输出。

请问会是什么原因造成的?

同时还有一个现象,当四五十个mesh节点同时工作的时候(处于未入网状态),及其容易出现死机现象,当节点数量减少时,则不会出现这类情况。


第一种情况的“死机”现象是什么样的,接出串口打印,排查①mesh收发包是否可以正常工作,②100ms周期的TMOS事件是否正常运行,③PWM输出是用的定时器还是PWMX模块,是否有正常情况下的波形,④是否启用了看门狗,看门狗是否生效,⑤应用层代码中是否有阻塞代码块,可能是跑进了死循环,⑥hard fault中断中是否有配置MCU复位,是否代码跑飞进了hard fault中断中的死循环。⑦可以启用一个定时器中断,在TMR中断中打印PC指针,检查死机时MCU是否允许在某些代码块,参考博客CH582 CH592 CH573 PC指针打印(排查程序运行+死循环指示) - debugdabiaoge - 博客园 (cnblogs.com)

“四五十个mesh节点同时工作的时候(处于未入网状态)”出现的“死机”,现象是否与上一情况一致,是无法被配网者节点纳入网络吗。



你好,我使用CH592的adv_vendor_self_provision_with_peripheral例程时,在【blemesh_on_sync】函数中添加,若未加入mesh网络则开启配网使能的功能代码,如下图方框内的函数:

3b72006135b5c8fe365b05dde450017.png

一旦加入该代码,当同时工作的未入网节点数量大于20+时,会随机出现节点设备死机的情况,若取消,则不会出现死机现象。在例程中我只加入了该代码和灯光显示的代码,其余并未修改例程。请问这是什么原因,我该如何修改呢?



只有登录才能回复,可以选择微信账号登录