at_device
at_device copied to clipboard
ec200x 4G模块直吐模式导致数据丢失严重
在调试移远EC600N模块时发现,at socket接收大量数据时,出现内存分配失败的现象,后面跟踪发现底层使用的直吐模式,有数据过来时mcu直接calloc缓存,当数据量大点时,比如下载几十KB或者更大的文件时,大量数据直接挤爆mcu的内存,导致出现因内存直接丢弃数据,建议使用模块的缓存模式和QIRD命令实现底层的at_socket,提高可靠性
模块缓存也是有限的,使用缓存模式并不能解决数据积压问题,还可能会引入数据延迟问题和遗漏问题。
传输大量数据一般都是在传输协议上做控制,比如服务器每发送几KB就等待MCU处理确认,MCU处理完一帧服务器再发下一帧。每次发几KB可以取决于应用接收缓存。MCU SRAM大接收缓存就可以开大点。