微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 快速发送消息时,内存不够,设备堵死。

快速发送消息时,内存不够,设备堵死。

时间:10-02 整理:3721RD 点击:

协调器上每次按键按下,会向一个终端发送一个数据包,每个数据包有120个字节左右,数据包发送时会被分包。现在遇到的问题是,如果我按的非常快,协调器会堵死,数据包完全无法发出去。出现这种堵塞时,我仿真暂停,发现是 AF_DataRequest 内的 apsfSendFragmented 函数申请内存一直失败。由于apsfSendFragmented 没有开源,没办反进一步跟踪。

所以我想请教一下,AF_DataRequest 发送数据时,会不会建立一个消息队列,把那些来不及发送的消息放进去?

如果有这样一个队列,那我每次调用AF_DataRequest 之前,都查看一下队列中的消息数量,如果超过3条消息等待发送,我就不再调用AF_DataRequest ,这样虽然快速发送时会有包丢掉,但至少不会造成堵死完全无法发送。

我跑了一下zstack的串口透传范例,用串口工具定时10ms发送一个包,包大小为40字节时,不会堵死。包大小是80字节时,会堵死。堵死后基本上一个包都发不过去了。

我现在要做到的效果是,如果串口快速的来了很多包需要我无线转发出去,我能够主动丢掉一些包(虽然这样会造成部分数据丢失),来保证无线发送的顺畅。而不是像现在这样出现堵塞,之后所有数据都无法发送了。

问题有点急,希望尽快能帮我解答一下,感激不尽。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top