MQTT大型OTA文件传输在1024块处失败。

0

【以下的问题经过翻译处理】 我正在努力在MQTT模式下设置freeRTOS OTA示例,以便传输大文件(> 10MB)。我已经修改了“pOtaInterfaces”,使用“fseek()”和“fwrite()”将文件写入SD卡。在小文件上,这运行得非常完美,并且我收到了完整的文件。然而,在大文件上,当传输到块1024时,我开始收到“接收到重复的块”的消息,并且块号似乎已经混淆了。它从1023跳到1025,然后到1027,再到1056。这看起来非常像库中有些东西正在破坏记录块的系统中的任意位10。我想这就是位图系统。此时传输速度大大减慢,如果我等待其完成,则会有损坏的文件。请问是否有人非常熟悉此OTA位图系统,以帮助我确定SDK中是否确实存在bug?

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 嗨,安德鲁。请检查您的项目中OTA_MAX_BLOCK_BITMAP_SIZE的值。我怀疑它是128。这意味着需要128字节或1024位来跟踪块。如果是这种情况,您需要增加此值以获得足够的位来跟踪您的块数量。

您应该查看所有这些设置并根据需要进行调整:https://github.com/aws/ota-for-aws-iot-embedded-sdk/blob/fb4aece8c7ee4211b17ee48196222c04795b7a51/source/include/ota_private.h#L62-L70

更多信息请参见此处(尽管它不包括位图设置):https://www.freertos.org/Documentation/api-ref/ota-for-aws-iot-embedded-sdk/docs/doxygen/output/html/ota_config.html

顺便说一下,您的设备是否包括HTTP客户端?对于如此大的文件,您的MQTT消息成本可能会超过作业执行成本。您可能会发现HTTP文件传输更具有成本效益。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则