在sensor和collector正常通讯中
sensor打印 Auth Error: 0x", 1A
就会出现如何信息。sensor发送能够接收到ACK,无法接收到collector数据。
我查看运行之前的sensor的map文件, falsh和SRAM和FLASH_LAST都有剩余空间,基本都有0001000多的剩余。FLASH_LAST是00000fa8.
我在sensor中,没有malloc,只在里面定义了5个全局buf,大小在256.。
Alvin Chen:
你加大你的#define APP_TASK_STACK_SIZE 900试试,不行的话只能选择更大的13×2了。
user5322468:
回复 Alvin Chen:
我现在的#define APP_TASK_STACK_SIZE 900
我的sensor不是所有的都变成这个样子,34支跑了30个小时,五分钟一次数据交互,出现3支这种现象。
你说13×2只指13×2系列的片子吗?
Alvin Chen:
回复 user5322468:
你这种现象应该是有buf 没释放掉吧,导致内存不足,这个只能去自己看看程序了,设备是创建这个list发现内存不足,先加大一些APP_TASK_STACK_SIZE试试。
/* Put the parent in the security device list */stat = Jdllc_addSecDevice(parentInfo.devInfo.panID,parentInfo.devInfo.shortAddress,&parentInfo.devInfo.extAddress, 0);if(stat != ApiMac_status_success){Ssf_displayError("Auth Error: 0x", (uint8_t)stat);}
user5322468:
回复 Alvin Chen:
你说我内存没有释放,主要是我没有没有malloc, 我应用层都是全局BUF,在运行。我现在把APP_TASK_STACK_SIZE加大试试看。
user5322468:
回复 Alvin Chen:
是不是这样子的额,在内存不足的时候,sensor的table没有更新,发送数据的时候,目标地址是对的,collector,回复的时候,sensor的地址错了。如果是这个样子,collector应该是可以收到sensor的信息的,只是sensor无法收。
Alvin Chen:
回复 user5322468:
通常情况下是由于你的使用的空间太多,导致无法添加表。如果你使用默认的demo,大概可以加到50个左右设备。
user5322468:
回复 Alvin Chen:
demo里面有什么方法,比如在Ssf_displayError("Auth Error: 0x", (uint8_t)stat);我主动释放内存。然后在SysCtrlSystemReset?
而且这个内存不足,是MAC?如果是我应该如何释放内存?demo有释放内存的函数吗?
Alvin Chen:
回复 user5322468:
不建议你这么做,MAC不开放,建议你减小你的那个buf 应该有改善。
user5322468:
回复 Alvin Chen:
我刚刚遇见一起奇怪的问题。
我重启sensor,串口打印了
信标回调成功,然后扫描回调成功,panid正确,然后发送关联请求的回调缺失败,我重烧代码就可以了。