主控:MT2503,文章管理以太网芯片:W5500
通讯方式:SPI
以太网协议:UDP
实现功能:MT2503的升级文件,通过w5500接收并保存在2503的文件中,待校验成功后启动升级。
遇到的问题:FOTA协议中,服务器下发的升级数据包,大多在1069字节以上,发现接收超过1024字节百分之百会出现只接受了9个字节左右的数据,其余全是0x00。首先在FOTA协议层查找有没有可能丢失数据,在spi_read函数中打印接收的原始数据,发现和协议层一样的现象。怀疑是w5500出了接收问题,询问供应商W5500在UDP模式下的MTU为1460字节(包括以太网协议帧,校验,数据等),觉得这方面不会出什么问题。然后查看MT2503 SDK中的spi函数,发现不论是发送和接收都有一个函数
spi_set_desired_size()会检查将要读写数据大小,通过宏SPI_INTERFACE_MAX_PKT_LENGTH_PER_TIMERS 0x400来控制大小,坑的是这个函数官方调用的时候不会对返回的错误进行检查。。。所以如果超过1024就只能分段接收了。