我在使用TI CC2530芯片两台(协调器和终端)设备进行组网通信:E终端设备1000字节/S发数据给协调器C设备,通信几个小时后C设备出现卡死现象且串口无调试信息打印和接收数据输出,两台设备都启用芯片自带看门狗功能正常运行时可控制程序重启但卡死后看门狗不存在喂狗也不复位重启,只能通过手动拔插电源重启协调器设备后才能再次进行组网通信。
暂时不清楚什么原因导致程序卡死,有两次都是C协调器重新启动网络获取到地址NLME_GetExtAddr()后卡死,此时终端设备还未连接之后也无法连上。开始我自己在应用程序和osal_start_system函数内都有做了超时重启功能,通过TI定时器超时计数,但是卡死后无法确定是定时器失效未计数还是没有运行到超时重启位置,都不能够控制设备重启。现在我在对APP的主循环进行检测,因为串口无法打印只能用IO口控制来识别,若连主循环真不知道该怎么重启设备。
目前设备没有硬件看门狗功能,而且以前都能长期进行小数据量通信一直没有问题。想请问这是否可能是内存溢出导致或者其他什么原因,有什么好的排查和处理方法??非常感谢!!!
gaoyang9992006:
内存溢出的死机,应该也可以通过看门狗复位,能否其中一个全速调试模式,等卡死的时候确认一下停在哪儿了。
Sower lian:
回复 gaoyang9992006:
你的意思是用IAR软件进行硬件仿真,然后全速运行调试,卡死了程序会显示停在哪里吗??因为对调试模式不熟悉,还请多指点一下。谢谢!!
hehui cai:
回复 Sower lian:
你好,请问这个问题你解决了没??我也发现了存在这个问题,希望能得到你的回复
xin zheng:
回复 hehui cai:
单包数据太大导致每次通信时动态开辟的空间不足。
卡死是表象,内在是8K的xdata不足。