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.

[参考译文] CCS/CC3200:使用 RTOS 进行 CC3200配置"超时"错误

Guru**** 2770005 points

Other Parts Discussed in Thread: CC3200, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/915223/ccs-cc3200-cc3200-provisioning-with-rtos-timeout-error

器件型号:CC3200
Thread 中讨论的其他器件: SysConfig

工具/软件:Code Composer Studio

我正在执行常见的 MQTT 示例、但在将配置包括到我的 RTOS 主任务时遇到问题。 这就是我得到的错误:


注意,许多“[NetApp 事件] IP 租赁给客户端”都是由于我在进行配置之前与智能手机连接和断开连接。 即使 startProvisioning API 返回-3 (我认为它是超时的?)、配置文件有时也会被实际添加、我可以在设备的 Web 服务器中看到它。 在智能手机端、我看到的是:

项目和依赖项已设置为 OS_DEBUG 和调试配置。 我尝试过的内容:

  • 需要在 main 中定义的函数 generalTimeoutHandler、waitmSec、timeoutHandler、ProvEventTimeoutHdl、ProvWaitHdl 才能使配置正常工作。 我确保 i;m 不会同时在其他任何位置使用计时器 A1和 A0。
  • 向我的项目中添加了 USE_TIRTOS、SL_platform_multi_threaded 以及 provisioninglib 项目的预定义符号。
  • OS_DEBUG 之外的其他配置。 在某些情况下、该程序根本不起作用。
  • 确保"Simplelink/user.h"中包含以下行:#include "Provisioning_api.h"、#define SL_EXT_LIB_1 sl_Provisioning
  • 使用免费 RTOS 在完全不同的项目中尝试了同样的操作。 结果相同。
  • 我注意到的一件奇怪的事情是 CCS 已经将项目 wlan_station、driverlib 和 simplelink 复制到工作区、尽管"入门"指令说不应该这样做、并且我在导入时禁用了该选项。 可能我要将配置设置为错误的项目? 这些项目现在位于我的工作区中。 这些是我的链接器包括:

请帮助。 Alex

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

    尊敬的 Alex:

    为了在此处建立基准、您在 CC3200上使用了什么 SDK 和服务包? 请确保您已将最新的服务包刷写到您的设备中、因为它包含最新的错误修复和错误。

    我看到您是否已将配置添加到 MQTT 客户端应用程序?  

    您的器件在启动时尝试连接的配置文件似乎是这样的。 您可能会遇到奇怪的配置行为、因为您正在尝试在设备已连接到 AP 时进行配置。 如果您在启动时删除了所有配置文件、然后再尝试配置、您是否仍然会遇到这种情况? 此外、请确保使用 AP 配置而不是 SmartConfig、因为它更可靠。

    Jesu

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

    我已刷写了最新的 SDK (1.5)和最新的服务包(如上面的 TerraTerm 中所示)。 甚至使用新的 CCS 版本安装它们。

    是的、它是 MQTT 客户端应用程序、在主任务中使用 AP 配置进行修改。

    有时配置文件确实会被添加(如我在上面的图片中所见)、但配置总是会错误地完成。 我将在启动时删除所有配置文件(运行常规 ConfigureSimpleLinkToDefaultState()函数)。 还尝试在其中设置不同的连接策略,但没有效果。

    非操作系统应用程序工作正常。

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

    有什么想法吗? 这是一个非常重要的问题...

    也许我会使用非操作系统版本并在 RTOS 启动前进行配置...

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

    嘿 Alex、

    我在 UART 日志屏幕截图中看到配置任务和 MQTT 任务都返回相同的错误。 我不确定您是否会遇到计划冲突。 您能否尝试对应用中禁用的所有其他功能(例如 MQTT、外设... 等等)? 请告诉我结果。 此外、哪个函数专门返回-3误差?

    Jesu

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

    sl_extlib_ProvisioningStart 是返回-3的第一个 API。 它位于函数 startProvisioning()内,该函数从主任务运行并返回-3。

    主任务是示例项目中的 MqttClient 任务。 但是、特定的项目无关紧要、因为我还尝试向 Get_Time 项目(FreeRTOS)添加置备、但它的失败方式相同。

    startProvisioning()函数已从 AP 配置项目中导入,只需更改某些线路 MAP_UtilsDelay---->OSI_SLEEP 即可。 我没有在那里运行任何其他东西,因为这是在任务的开始。

    以下是运行指令 sl_extlib_ProvisioningStart 之前的一些 RTOS 数据(如果值为任何值):

    谢谢、Alex

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

    尊敬的 Alex:

    请给我一些时间来测试这个、然后返回给您。 我看不到您的设置有什么问题。  

    Jesu

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

    尊敬的 Alex:

    我可以在某种程度上重新创建您看到的行为。 我不确定它是否完全相同。  

    当我尝试进行配置时、SimpleLink Start Pro 移动应用程序中出现以下错误: "配置序列尚未启动。 设备正在等待发送配置"。

    您能否确认在配置超时发生时收到-3错误? 在我的测试中、我注意到当配置超时发生时、startProvisioning 返回。 到目前为止、我的猜测是、即使添加了 AP 配置文件、也会导致操作系统配置库无法运行。 这就是为什么我们一直停留在超时发生之前、然后我们可以连接到 AP。

    Jesu

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

    有时这也是我在 SimpleLink Start Pro 移动应用程序中使用此程序时遇到的错误。
    是的、这是相同的错误。 3错误。 它们是否超时? 我不知道。

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

    有此消息吗? 我们知道谁写了这个图书馆吗? 也许他们可以提供帮助。 我认为这是很多人的问题。

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

    尊敬的 Alex:

    我可以确认 startProvisioning 由于配置过程超时而返回、但这只是一个症状、而不是问题。 这些库是很久以前编写的、遗憾的是不再按优先级排序。 我长期建议您使用 CC3220或 CC3235、因为我们定期支持这些器件、并按季度发布计划提供相关软件。  

    您可以尝试查看 out_for_box 示例。 此示例基于 RTOS、支持配置。 我个人没有机会研究这个问题,但它看起来值得研究。 我将在背景下继续对此进行调查。 如果您发现任何值得关注的内容、请在此与社区分享。

    Jesu

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

    嗯。 也许这个库会与新的 SDK 混淆。 以前是否有人在 CC3200中使用 RTOS AP 配置? 我在 GitHub 中找不到任何东西... 如果您可以找到任何示例、我们将对其进行解决。

    遗憾的是、在 RTOS 项目中执行非操作系统配置会给我带来各种各样的错误、因此没有办法解决此问题。 开箱即用示例使用 smartconfig、而不是 AP。

    CC3235听起来不错、但我们已经在校园中购买了一组 cc3200开发套件、它们应该是一个可靠的芯片。

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

    尊敬的 Alex:

    正确、开箱即用示例使用基于 SysConfig 的配置。 这不是您的选择吗? 所有需要配置的基于 RTOS 的示例都使用 Smartconfig。

    Jesu

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

    很遗憾、开箱即用示例的配置不起作用、我还记得在某个地方读出 cc3200中的 smartconfig 已被弃用?

    我们没有任何人提供的示例,使用 RTOS 配置 AP 的工作地点是什么?

    大家好、Alex

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

    尊敬的 Alex:

    我还记得在某处读过 cc3200中的 smartconfig 已被弃用? 

    正确。 如前所述、我们不再积极支持 CC3200、每季度更新一次软件。 这就是我建议升级到 CC3220或 CC3235的原因、但我知道您可能已经批量购买了 CC3220或 CC3235。 也就是说、您在配置 smartconfig RTOS 时会遇到什么问题?

    我们没有任何人提供的示例,使用 RTOS 配置 AP 的工作地点是什么? 

    没有使用 RTOS 进行 AP 配置的示例。 都使用 SMART 配置。

    Jesu

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

    然后、我想最好尝试使用较旧的 SDK 并查看该程序是否在那里工作。 有什么想法吗?

    虽然在 GitHub 中、其他人的代码倾向于使用 HTML 网站配置、但我认为这不适合我的用途。

    之后、我想我将转向 cc3235。 尽管如此,令人遗憾的是,在 cc3200上,一些基本的东西不起作用。

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

    尊敬的 Alex:

    最好使用最新的 SDK、因为它将具有最新的错误修复。  

    使用 Smart config 进行配置时、通常会存在一些可靠性问题、因为会影响一些环境因素。 我们的 cc3220和 cc3235设备的智能配置已经得到改进,但对于 cc3200,智能配置将保持不变。 我们通常建议将 AP 配置或 WPS 作为备份。  https://processors.wiki.ti.com/index.php/CC3200_SmartConfig_Provisioning

    关于 AP 配置、我可以始终如一地让它与您可以使用的非操作系统版本配合使用。 如果您仅将这些器件用于教学目的、我建议您仅使用 PROVISIONING_ap 示例-如果要同时配置多个器件、则不适合使用 Smartconfig。 如果您确实需要基于操作系统的 AP 配置、可以尝试导入 Provisioninglib 项目并尝试重建库。 我们过去曾在社区成员的一些 E2E 论坛上对此提供帮助:

    https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/t/589812?CC3200-Provisioning-AP-Example-Unable-to-Start-Provisioning-Sequence

    确保使用 sl_platform_multi_threaded define 重新编译它。  https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/t/552002

    此外、除了我已经提到的有关升级到 cc3220和 cc3235的其他好处之外、如果这是出于教育目的、我们还拥有 适用于 CC3220和 CC3235器件的 Simplelink Academy、这是一个很棒的教学资源。 总之、它基本上是一组实验/项目和教程、以某种或其他方式介绍我们器件中的几乎所有功能。  

    但愿这对您有所帮助。

    Jesu

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

    抱歉、如果我提出一个愚蠢的问题、但事实是我在使用编译器和 include 选项时遇到困难。 我注意到 provisioninglib 工程已导入到我的工作区中、但编译器和链接器在问题列表中包含了我的工程的选项${CC3200_SDK_ROOT}/simplelink_extlib/provisioninglib
    头文件和源文件。 当我将这些 include 选项更改为我的 workspacev10/provisioninglib 时,它会抛出 A

    无法打开源文件"Provisioning_api.h" 

    simplelink/user.h 项目中出现错误。 但是,此 simplelink 项目是${CC3200_SDK_ROOT}中的项目,而不是从我的工作区开始导入的项目,当然我已经为操作系统配置了该项目。 可能我在这里包含了错误的内容?

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

    嘿 Alex、

    无需道歉。 我随时为您提供帮助!

    首先、让我验证导入 provisioninglib 时没有选中"Copy to workspace"。 您不希望这样做、因为在构建时、它将生成新的库、并且您希望它引用 SDK 中的库目录以及任何其他文件。  

    更改此项目时请小心、因为您将更改 SDK 中的实际源文件。 确保您可以返回到原始项目、以避免损坏 SDK 中的任何内容。  

    请尝试此操作并确认您能够构建 provisioninglib 项目。

    编辑:执行此操作后、您开始进行修改并生成新的库文件、同时验证使用配置的其他项目是否引用了新生成的库文件。  

    Jesu

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

    感谢您的帮助。

    如果不将 provisioninglib 工程复制到工作区、则无法导入该工程。 它会将选项格式删除并无论如何复制、您可以在其设置中看到它位于工作区中之后:

    然后、其余项目包括${CC3200_SDK_ROOT}/simplelink_extlib/provisioninglib 目录、而不是我的导入和修改后的目录。 例如、请参阅默认 PROVISIONING_AP 示例:

    但是、正如我提到过的、如果我将 include 更改为我的 workspacev10/provisioninglib 目录、我的 RTOS 项目会在编译时抛出该错误。

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

    尊敬的 Alex:

    您认为是正确的。 这与 CC3220 SDK 中的情况不同-我的假设错误。 前面说过、我在工作区中的 provisioninglib 项目上没有遇到编译错误。 您必须获取从工作区目录生成的库、然后将其复制到其他工程引用它的位置。

    如果您在没有进行更改的情况下遇到编译错误、则必须修改了会破坏该错误的内容。 也许可以尝试重新安装 SDK 以重新开始。

    Jesu

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

    我没有收到任何关于 provisioninglib 的构建错误。 无论如何、我执行了您所做的操作、因为我无法链接到${CC3200_SDK_ROOT}中的 provisioninglib、所以我刚刚复制了我在工作区中修改过的那个、现在它已针对 RTOS 进行了修改。 没有影响。

    我还尝试在链接器中包含我的工作区中修改的 provisioninglib 和 simplelink 源文件、而不是${CC3200_SDK_ROOT}、如下所示。 仍然没有效果。 配置结束时出现错误、配置文件未添加。

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

    尊敬的 Alex:

    希望这些信息能帮助您解决您遇到的问题。 我自己花时间深入研究这个问题、让它正常工作。 下面是我自始至终执行的步骤、以使 PROVISIONING_ap 示例与基于 RTOS 的配置一同工作。  

    1.将 PROVISIONING_ap 和 ti_rtos_config 项目导入工作区

    2.在 PROVISIONING_ap 项目中、右键单击该项目、转至 properties->arm linker->file search path 并删除所有链接的库(顶部窗口)、然后复制并粘贴以下库:

    ${INHERITED_libraries}
    ${CC3200_SDK_ROOT}/simplelink/ccs/OS_debug/simplelink.a
    ${CC3200_SDK_ROOT}/driverlib/ccs/Release/driverlib.a
    ${CC3200_SDK_ROOT}/oslib/ccs/ti_rtos/ti_rtos.a
    ${CC3200_SDK_ROOT}/simplelink_extlib/provisioninglib/ccs/os/provisioninglib.a
    libc.a

    您将看到其中的大多数是相同的。 我更改的唯一内容是我使用了 simplelink.a 的操作系统版本和 provisioninglib.a 的操作系统版本、并添加了 ti_rtos.a 库。

    3.同样在 Provisioning_ap 项目中,右键单击->属性-> ARM 编译器->包含选项并删除所有包含选项(顶部窗口),然后复制并粘贴以下选项:

    ${INHERITED_INCLUDE_PATH}
    ${PROJECT_ROOT}
    ${CC3200_SDK_ROOT}/simplelink/
    ${CC3200_SDK_ROOT}/simplelink/include
    ${CC3200_SDK_ROOT}/simplelink/source
    ${CC3200_SDK_ROOT}/driverlib/
    ${CC3200_SDK_ROOT}/inc/
    ${CC3200_SDK_ROOT}/example/common
    ${CC3200_SDK_ROOT}/simplelink_extlib/provisioninglib
    ${CC3200_SDK_ROOT}/oslib
    ${CG_TOOL_ROOT}/包含

    其中的大部分内容也应该是熟悉的。 如果我正确地记得我在这里所做的所有操作是添加 oslib。

    4...... Properties->ARM Compiler->Predefined symbols,删除所有预定义符号(顶部窗口),然后复制并粘贴以下符号:

    ${INHERITED_symbols}
    CCS
    USE_TIRTOS
    sl_platform_multi_threaded
    cc3200
    _ccs__

    5. properties->build->dependencies,然后单击 add 并添加 ti_rtos_config 项目

    6.最后,用下面我所附的文件替换项目中的 main.c 文件。 我刚刚为 TI-RTOS 添加了一个 include、更正了我发现的与 sl_platform_multi_threaded 相关的错误、并为主机驱动程序和 RTOS 设置执行了所有初始配置(例如、sawn SL 任务、OSI_start 等)。  

    我在这里仔细检查了我的步骤、我知道这适用于 SDK v1.5及其附带的服务包。  

    您应该能够从此处提取设置所需的信息。

    编辑:忘记附加 main.c 文件。  e2e.ti.com/.../1411.main.c

    Jesu

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

    您好、再说一次、

    我对此进行了一些测试。 您已略微修改了 network_if.h 中的内容 似乎我还需要从项目中删除 network_common.c。

    但是、即使在您确切描述的项目中、进程也会如您所示、但在配置成功后抛出错误[-76]。 配置成功后、MQTT 项目将显示以下内容:

    我找到了该 线程 、该线程指出在已连接时不使用配置。 为此、我在运行代码之前对闪存进行了格式化、并修改了 provisioningStart:

    if (!is_connected (g_ulStatus))){
    lRetVal = sl_extlib_ProvisioningStart (Role_STA、.cfg);
    ASSERT_ON_ERROR (lRetVal);
    } 

    但是、这并没有什么帮助、尽管我现在已确保不连接。 还尝试设置不同的连接策略。

    感谢您的帮助、我知道这不是您的错、但这令人沮丧、我想我将在 AP 中启动它、只需使用手机发送一个带有密钥和凭据的 JSON。 这样的配置似乎很简单。

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

    尊敬的 Alex:

    我不确定您执行的操作会导致-76错误。 我在 SDK 中进行了搜索、这是错误代码: sl_error_wlan_drv_start_fail。

    您可能需要为您的自定义应用程序添加其他注意事项、以使一切顺利进行。 在开始配置之前、可能会尝试禁用连接策略。 此外、如果您启动配置、则不要创建或运行任何其他任务。 最好在启动应用程序的其余部分之前让其运行到完成。 它使调试变得更简单、因为您逐步构建应用。  

    我不确定在这里还有什么建议、但我很高兴您最终能够使用配置。  

    Jesu

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

    你好、Jesu。 这不仅是我的项目所发生的事情、也是你所发生的事情。 如果您让它进一步向下运行、您将看到它抛出此错误。 无论如何,我会将 ConfigureSimpleLinkToDefaultState()中的连接策略设置为

    lRetVal = sl_WlanPolicySet (sl_policy_connection、
    sl_connection_policy (0、0、0、0)、 空,0); 

    但没有影响。

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

    嘿 Alex、  

    您说我的示例代码也会重现此错误吗? 我所做的就是配置。 完成后、我就让它就在那里。 我是否必须执行其他操作才能重现此错误?

    Jesu