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:支持 SDK 7 TLS1.3

Guru**** 2394305 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1275079/cc3235modsf-sdk-7-tls1-3-support

器件型号:CC3235MODSF

您好、Kobi 或其他人、

我尝试了 针对 TLS 1.3的 MQTT 示例、但仅 MQTT 可正常运行。 但是、当我添加 HTTP 时、很可能是第二次 SSL/TLS 握手失败、并显示错误代码:

#define MBEDTLS_ERR_SSL_SHANGLE_FAILURE          -0x6E00

相同的错误、无论 HTTP 或 MQTrans 如何优先。  

如果我只运行 MQTT 或 HTTP、它每次都会运行。 但不能同时存在两者。

mbedtls 端口线程是否安全? 关于如何同时支持 https 和 MQTT 的任何指导?

谢谢。

安迪

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

    您可以在 mbedtls_config.h 中检查是否缺少配置(在 source/third_party/mbedtls/include/mbedtls/中)。

    有关构建 mbedtls 库的说明、请参见 mbedtls/ti/中的自述文件。

    我们将需要查看日志。 您可以在 mbedtls_config.h 中启用"MBEDTLS_SSL_DEBUG_ALL"(需要重建库)或提供监听器捕获。

    我们  也会尝试在内部进行检查、但可能需要更长时间。

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

    库文档指出  Wifi_Create ,上下文不应在线程之间共享(线程安全和多线程:并发问题—mbed TLS 文档(mbed-tls.readtheddocs.io )),然而,在 slnestifWIFI.c 文件中,使用全局上下文的 SlNetIappi 文本。 这会是问题吗? 如果可以、我可以共享代码。  

    重新构建和启用所有调试消息。  

    如果我在证书加载过程中先断点、然后再握手、情况会有所帮助。 在我看来、这是一个更多线程的问题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kobi:
    感谢您的在线回答。  
    现在、我缩小到 MQTT 握手中断的一种场景、只需添加一个调用来创建 http 客户端、这似乎没有关系。 需要您的帮助来确定出了什么问题。
    已通过电子邮件向您发送日志文件和 Wireshark 捕获。
    如果您需要更多信息、请告诉我。  

     

    谢谢。

    安迪

     

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

    我认为这是可以的-上下文不是每个插座,而是每一个核心,我们只有一个。

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

    好的。 我将检查日志、可能明天就会回复。

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

    尊敬的 Kobi:

    感谢您对此进行跟进。 事实证明这是一个内存问题、要使 MQTT 和 http 同时运行、内存堆必须足够大、而且还需要堆栈大小。  我的测试显示、内存堆所需的最小大小为2a000。 并将堆栈分别称为 MQTT 和 http 10k。 这用在了240KB RAM 中的188KB。 这将仅运行包含 http 线程的示例。 有什么建议可以使 RAM 的使用量更少、适合我们的应用?  

    还有一个后续问题、  

    1) 1)在 SDK 7版本中、文件夹 http_lib_for_ota 下有 OTA 的 http 二进制文件、http/lib 下的二进制文件有何区别? 如何重新构建它?

    2) 2)我们将使用不同版本的 IAR (8.42.1)、SDK 7中的二进制文件使用9.21。 如果我们将二进制文件直接用于应用、您认为有什么潜在问题吗?  

    3) 3)如果我们需要重新构建内核、你能向我指出如何使用 IAR 构建内核(和其他组件)的指令吗?

    谢谢。

    安迪  

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

    感谢您发送通知。

    堆(特别是168KB 的堆)和堆栈的大小确实太大了。

    目前 、我们没有很好的解决方案。 我们将需要进行一些分析来检查分配的缓冲区源、并尝试进行一些优化。

    1) http_lib_for_OTA 会根据 GitHub 和下拉框的需要为 HTTP 请求缓冲区分配更大的内部大小(由于包含了大令牌)。

    您基本上可以在 source/ti/net/http/http httpclient_internal.h 中处理大小(HttpClient_BUF_LEN)(并重建 http 库)。

    2) 2)我可以告诉 IAR -如果它工作正常且构建正常、那么您应该假设它正常。

    3) 3)可以通过 makefile 来完成有关 SDK/docs 的操作、请参阅用户指南。 查找"Rebuilding the Libraries"(重建库)。