This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3235MODSF:Azure 上载到 Blob、大文件返回错误

Guru**** 2557520 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/973759/cc3235modsf-azure-upload-to-blob-returning-error-with-large-files

器件型号:CC3235MODSF

我使用 Azure CC32xx v3.20.00.02 SDK 通过 IoTHubClient_LL_UploadMultipleBlocksToBlobEx 函数和回调将文件上载到1K 块中的 blob 存储。 我遇到了一个问题、回调返回的状态为 file_upload_error、而不是 file_upload_OK、但我无法确定发生这种情况的原因。

我尝试在每个1K 块上传之间设置一个延迟、以查看是否发生了超时。 没有超时、因为它不是在75秒内上传而是在700秒内失败。 文件大小可能是一个问题。 上传623K 字节后、我的测试当前停止。 但是、另一个电路板停止运行、上传了520K 字节。

有什么建议吗? 我无法调试 SDK、因为我使用的是预构建的 SDK 对象。

谢谢、

Anthony

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Anthony、

    我的第一个建议是确保您在模块中刷写了最新的服务攻击。

    CC32xx Azure 插件3.20是较旧版本。 这是以前工作过的项目上的新问题吗?

    按"预构建 SDK 对象"、您是指 simplelink.a 库吗? 您使用的是 CCS 还是其他 IDE?

    我相信您的问题实际上发生在 source/third_party/azure-IoT-PAL-simplelink/sdk/iouthub_client/src/ioithub_client_ll_uploadtoblob.c 中的 IoTHubClient_LL_UploadMultipleBlocksToBlob_Impl ()中 您能否将该源文件直接添加到您的项目中并单步执行它?

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sarah、

    感谢您的建议。 我将 iothub_client_ll_uploadtoblob.c 添加到我的 CCS 工程中、并能够设置断点。 我注意到 第785行对 Blob_UploadMultipleBlocksFromSasuri 的调用将返回 BLOB_ERROR。 我必须添加 blob.c 以查找 BLOB_ERROR 的来源。 我只是想报告我到目前为止的调查结果。

    Anthony

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现 blob.c 中的 Blob_UploadBlock 正在第 59行调用 string_connat_With 字符串。  在第426行调用 realloc 时、string_connat_With 字符串函数失败。 重新分配似乎存在问题。 大约300次成功的块上传后失败。 我使用的是 TI-RTOS。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现随着 blockIDList 字符串继续上传、s1的长度越来越大。 当超过堆时、重新分配最终失败。 s1的内容似乎是某种记录块 ID 列表的 XML 文件。 更多块、更多 ID。 我想有些解决方案是分配更多的堆内存、使块大小更大或限制文件大小。

     是否需要 blockIDList? 可以禁用它吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Anthony、

    看起来 blockIDList 用于构建 HTTP 响应、因此我认为这是必需的。

    您可以根据典型的文件大小增加堆、但我还建议限制或处理应用程序中的文件大小错误。

    此致、

    Sarah