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.

[参考译文] CC3235MODASF:HTTP 客户端连接问题

Guru**** 2538955 points
Other Parts Discussed in Thread: CC3235SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/920254/cc3235modasf-http-client-connect-problem

器件型号:CC3235MODASF
主题中讨论的其他器件:CC3235SF

我正在尝试连接到我自己的 http 服务器、但我面临两个问题。 (使用 httpclient_debug.a)
 我 的 URL 很长(大约1KB)、lib 的最大值为100b。 如何重建库(我需要步骤......)
 2. 我在重建库之前尝试连接服务器、位为-688而不 是-3005。 这意味着什么?

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

    您好、Frank、

    以下是从命令行重建 http 库的步骤:

    1. 转到 CC32xx SDK 安装中的 source/ti/net 目录
    2. 从 net 目录中编辑 makefile 文件中的以下行:
      1. @$(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" ALL -PR。 ->@$(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" ALL -P http
        @$(XDC) XDCARGS="$(XDCCARGS)" XDCPATH="$(XDCPATH)" Clean -PR。 ->@$(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" All -P http 
    3. 在 net 目录中运行 /gmake clean
    4. 然后运行 /gmake  以重建 http 库

    此外、错误代码-688对应 于 SL_ERROR_BSD_ESEC_ASn_NO_Pigner_E、这意味着 CC3235无法验证服务器的证书链。 请验证服务器证书链是否正确。

    此致、

    Paul

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

    我更改了 makefile、如下所示

    第49行:  
    @$(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" ALL -PR。 ->@$(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" All -P http
    第53行:
    @$(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" Clean -PR。 ->@$(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" All -P http

    但是、当我运行 cmd (C:\ti\xdctools_3_61_00_16_core\gmake clean)和(C:\ti\xdctools_3_61_00_16_core\gmake)时、
    我得到:
    清洁套件...
    C:/Users/Frank/AppData/Local/Temp/make39988-2.sh:1:C:/Users/Frank/AppData/Local/Temp/make39988-2.sh:语法错误:"("意外
    C:/ti/xdctools_3_61_00_16_core 包\XDC\BLD\XDC_TOPL.MAK:267:警告:没有要构建的内容;在-P[RRD]之后命名的目录不包含任何可构建的软件包

    -P
    PR
    PR
    PD

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

    您好、Frank、

    很抱歉、我的解释不清楚。 我打算替换以下行:

    @ $(XDC) XDCARGS="$(XDCARGS)"XDCPATH="$(XDCPATH)"all -PR .

    使用

    @ $(XDC) XDCARGS="$(XDCARGS)"XDCPATH="$(XDCPATH)"all -P http

    同样、替换:

    @ $(XDC) XDCARGS="$(XDCARGS)"XDCPATH="$(XDCPATH)"clean -PR .

    使用

    @ $(XDC) XDCARGS="$(XDCARGS)"XDCPATH="$(XDCPATH)"clean -P http

    基本而言,您在这里所做的就是告诉它只构建 http 目录(-P http)中找到的包,而不是所有子目录(-PR .)中找到的所有包

    此致、

    Paul

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

    我将其更改为( @ $(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" all -P http) and (@ $(XDC) XDCARGS="$(XDCARGS)" XDCPATH="$(XDCPATH)" clean -P http).
    但仍会收到一些错误消息。(如下所示)
    尝试使其正常工作时,我运行了 cmd brforE 编辑程序,它是否会导致此消息?


    C:\ti\simplelink_cc32xx_sdk_4_10_00_07\source\ti\net>C:\ti\xdctools_3_61_00_16_core\gmake clean
    清洁套件...
    清洁:2020年7月7日13:38:25...
    =========== 清理[http/]=====
    正在制作 package.mak (由于 package.bld)以清洁...
    JS:"c:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/ITarget.xs、第364行:错误:找不到目录"c:/ti/ccs1000/ccs/tools/compiler/gcc-arm-none-eabi-9-2019-q4-major-win32/bin。 确保在"C:/ti/simplelink_cc32xx_sdk_4_10_00_07/source/ti/net/ns.bld "中正确设置 M4目标的 rootdir。
    "C:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/_utils.xs "、第31行
    "C:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/ITarget.xs、第184行
    gmake[1]:***删除文件'package.mak
    正在制作 package.mak (由于 package.bld)以清洁...
    JS:"c:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/ITarget.xs、第364行:错误:找不到目录"c:/ti/ccs1000/ccs/tools/compiler/gcc-arm-none-eabi-9-2019-q4-major-win32/bin。 确保在"C:/ti/simplelink_cc32xx_sdk_4_10_00_07/source/ti/net/ns.bld "中正确设置 M4目标的 rootdir。
    "C:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/_utils.xs "、第31行
    "C:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/ITarget.xs、第184行
    gmake[1]:***删除文件'package.mak
    清洁完成:2020年7月7日13:38:29日星期二。

    C:\ti\simplelink_cc32xx_sdk_4_10_00_07\source\ti\net>C:\ti\xdctools_3_61_00_16_core\gmake
    正在构建软件包...
    全部:Tue Jul 713:38:412020...
    =========== .interfaces [http/]=====
    正在制作 package.mak (由于 package.bld)...
    JS:"c:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/ITarget.xs、第364行:错误:找不到目录"c:/ti/ccs1000/ccs/tools/compiler/gcc-arm-none-eabi-9-2019-q4-major-win32/bin。 确保在"C:/ti/simplelink_cc32xx_sdk_4_10_00_07/source/ti/net/ns.bld "中正确设置 M4目标的 rootdir。
    "C:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/_utils.xs "、第31行
    "C:/ti/simplelink_cc32xx_sdk_4_10_00_07/kernel/tirtos/packages/gnu/targets/arm/ITarget.xs、第184行
    gmake[1]:***删除文件'package.mak
    gmake[1]:***没有规则使目标'package.mak '成为".interfaces'所需的目标'package.mak '。 停下。
    xdctools_3_61_00_16_core\gmake.exe:***[c:/ti/xdctools_3_61_00_16_core 包\XDC\Bld\XDC_top.mak:389:HTTP/、.interfaces]错误2.
    gmake:***[makefile:49:all]错误2.

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

    您好、Frank、

    CC32xx 4.10.00.07 SDK 要求  在 CCS 编译器目录中安装 GCC ARM 编译器版本 gcc-arm-none-eabi-9-2019-Q4-Major。  CCS 10.0.0不随此版本的 GCC 编译器一起提供。 您需要手动将此 GCC 版本安装到 CCS 10.0.0编译器目录中。

    1. 请访问上面提供的下载链接并下载  gcc-arm-none-eabi-9-2019-q4-major-win32.zip
    2. 解压缩 gcc-arm-none-eabi-9-2019-q4-major-win32.zip 并单击 Extract to "gcc-arm-no-eabi-9-2019-Q4-majer-win32"
    3. 复制新 的 gcc-arm-none-eabi-9-2019-Q4-majer-Win32 文件夹并将其粘贴到 C:/ti/ccs1000/ccs/tools/compiler 中
    4. 现在、您应该能够重新运行这些命令而不会出现错误!

    请查看位于 CC32xx SDK 根目录中的 imports.mak 文件。 此文件定义了 SDK 用于查找其使用的每个工具和编译器的搜索路径。 请确保按照我在上面所述安装了 GCC 编译器、以匹配在 imports.mak 中可以看到的默认搜索路径。

    此致、

    Paul

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

    尊敬的 Paul:

    我按照您的步骤成功地重建了库、但我仍然对 我构建的库有一些奇怪的行为。
    我可以通过旧库连接 http 服务器、并通过 POST 和 Get 函数返回一些消息。
    但是、如果使用新的 lib I Build、它将在调用 HttpClient_connect()之后运行到一个 while 循环函数(faultISR ()、startup_cc32xx_ccs.c 中的第193行)中。
     最奇怪的是、它在 Get 函数处运行得非常完美。 但是在调用 HttpClient_connect()时,POST 和 Get 之间没有任何不同。

    我尝试按如下所示的类型构建库、所有库都处于相同的情况。
      1.更改 CCS_ARMCOMPILER     ?= imports.mak 中的 c:/ti/ccs1000/ccs/tools/compiler/ti-cgt-arm_20.2.0.LTS
        更改为       CCS_ARMCOMPILER     ?= c:/ti/ccs1000/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS

     2. 更改 IAR_ARMCOMPILER     ?= c:/Program Files (x86)/IAR Systems/Embedded Workbench 8.4/ARM in imports.mak  (我拥有的 IAR 版本为8.3)
        更改为      IAR_ARMCOMPILER     ?= c:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3/ARM  
     3. 更改两项1. 和2. 在 Imports.mak 中
     4. 使用原始 进口产品.mak
     5. 如您所说,使用 makefile withch 会发生变化
     6.  使用原始 makefile



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

    您好、Frank、

    我很高兴您能够重建库!

    我在我的末尾从 SDK 重建了默认的 HTTP 库、它看起来工作正常。 您是否对 HTTP 源代码进行了任何更改? 如果是、您确切修改了什么?

    您在原始帖子中也提到您无法连接到 HTTP 服务器、并且收到错误代码-688。 但是,在上一次答复中,您提到能够成功连接到服务器。 您是否能够解决您遇到的-688错误代码问题?

    此致、
    Paul

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

    尊敬的 Paul:

    我仅在 httpclient.h 中将 HttpClient_domain_BUFLEN 从100更改为2048

    我在 http 客户端上有3个步骤:
     1. 连接到服务器 A,请求,断开连接,销毁
     2. 连接到服务器 A,执行 POST 请求,断开连接,销毁
     3. 连接到服务器 B,请求,断开连接,销毁(服务器 B 的 URL 长度>1KB 和<2KB)
     使用原始库时、在步骤3中会发生错误-688。 第1步和第2步运行良好。

    但是、当我使用新库(HttpClient_domain_BUFLEN 更改为2048)时、步骤1的运行仍然正常。
    在调用 HttpClient_connect()时,步骤2将运行到 while 循环函数(faultISR (),startup_cc32xx_ccs.c 中的第193行)中;
    这是一件奇怪的事情、即使我跳过步骤1、我仍然无法连接到服务器 A。使用 原始库时运行良好、甚至跳过步骤1。
    由于服务器 B 从第2步开始、我无法尝试 setp 3。

    我正在运行相同的代码、唯一的区别是 lib (我在更改 lib 后重新编译整个项目)。

    顺便说一下、我必须更改 SL 线程的堆栈大小?

    pthread_attr_init (&pthreadAttrs);
    // sl 线程
    priParam.sched_priority = 1;
    status = pthread_attr_setschedparam (&pthreadAttrs、&priParam);
    status = pthread_attr_setstacksize (&pthreadAttrs、2048);
    status = pthread_create (&threadArray[df_sl_thread]、&pthreadAttrs、sl_Task、NULL);
    // AWS 线程
    priParam.sched_priority = 1;
    status = pthread_attr_setschedparam (&pthreadAttrs、&param);
    status = pthread_attr_setstacksize (&pracks); //3328);将 HttpClient_domain_BUFLEN 从100更改为2048
    状态= pthread_create (&threadArray[df_aws_thread]、&pthreadAttrs、awsThreadFxn、NULL); 

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

    您好、Frank、

    感谢您的设置说明。

    我认为您不需要更改 sl_task 的栈大小、因为该线程只处理从 NWP 发送的异步事件。 我猜、当您调用 HttpClient_connect 时、它无法为增加的缓冲区大小分配足够的内存、这就是您看到硬故障的原因。 增大 AWS 线程的堆栈大小是否无法解决此问题?

    至于您看到的原始错误 SL_ERROR_BSD_ESEC_ASn_NO_Pigner_E (-688)表示无法验证证书链中的证书、因为编程到文件系统的 CA 不是签署该链的 CA。 您为服务器 B 的 CC3235SF 提供了什么根 CA 证书?

    要查找希望通过器件验证证书的根 CA 的通用名、可以将 SL_SSL_notification_wrong_root_CA 案例添加到套接字事件处理程序中。 发生此事件时,可以在 SocketNameEvent.EventData.extraInfo 中找到该名称。

    此致、
    Paul