1、最初缓存终端设备的数组 存的内容都是固定长度数组,此时INIT_HEAP_LEN=1000这时候协议栈是正常工作的。后来发现无法扩展我更多的业务需求,heap改为700时终端已经搜不到这个协调者了。
2、于是将以上数组中的固定长的数组改成指针型,现用现分配,同时通过缩减dmaUart的缓冲区大小、以及NWK_MAX_DEVICE_LIST,省出来很多空间
3、看XDATA是有4000多剩余,预编译选项设置INT_HEAP_LEN=4100
4、烧录运行后,终端设备无法发现该协调者,调试发现osal_mem_alloc无法分配空间,包括底层为message的分配,和我业务用到的分配。
已经困扰好多天了,求各位专家支支招,多谢了
Viki Shi:
我觉得是你的内存分配不太合理,有一个帖子讲得比较详细,建议看一下:
bbs.elecfans.com/jishu_579573_1_1.html