TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

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

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

AndyChen:

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

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

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

赞(0)
未经允许不得转载:TI中文支持网 » 快速发送消息时,内存不够,设备堵死。
分享到: 更多 (0)