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/CC3220SF-LAUNCHXL:最新 SDK 的 CC3220SF OTA 演示存在问题

Guru**** 2553450 points
Other Parts Discussed in Thread: UNIFLASH, CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/748549/ccs-cc3220sf-launchxl-issues-with-cc3220sf-ota-demo-with-latest-sdk

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:UNIFLASHCC3220SF

工具/软件:Code Composer Studio

您好:
我仍然无法使用最新 TI Resource Explorer (dev.ti.com/.../)中概述的 OTA 演示
这是一个冗长的解释,请与我一起解释。
我最近更新到了最新的 SDK (版本'simplelink_cc32xx_sdk_2_30_00_05')和最新版本的 Code Composer Studio (版本:8.2.0.00007)
在开始之前、在我的硬件上、我在闪存中加载了一个简单的映像、该映像将每秒闪烁一次红色 LED (这只是一个固件演示部分、仅让我知道硬件已启动并正在运行) 因此、当我从调试环境运行 OTA 演示时、这是它在上面运行的映像。
我使用以下命令使用高级设置 Uniflash 构建该映像:
服务包:
\servicepack-cc3x20\sp_3.9.0.6_2.0.0.0_2.2.0.6.bin
受信任根证书:
\certificate-m游乐场\certcatalogPlayFound20160911.lst
\certificate-m游乐场\certcatalogPlayGround20160911.lst.signed_3220.bin
用户文件:
\certificate-d游乐场\dummy-root-ca-cert
\certificate-d游乐场\dummy-trusted-ca-cert
\certificate-d游乐场\dummy-trusted-cert
添加了 MCU 映像并将以下文件链接到其中:
\certificate-d游乐场\dummy-trusted-cert-key
\certificate-d游乐场\dummy-trusted-cert
我刷写项目并按预期运行(每秒闪烁一次 LED)
然后、我按照"TI Resource Explorer/Wi-Fi OTA"中所述设置 OTA 工程并运行该工程。 我已成功将其配置到路由器并重新启动、以便它可以连接到路由器并尝试进行 OTA 下载。
根据任务2 -步骤5下"TI Resource Explorer/Wi-Fi OTA"中的屏幕截图、它显示了演示达到某个点并看到安装根 CA 证书的错误消息。
当我运行 OTA 演示时、我从未看到此消息-相反、我看到以下消息:
========================================================================================
秘书长的报告
                 OTA 应用程序-版本0.10.00.03
秘书长的报告
SimpleLinkInitCallback:在角色0中启动
主机驱动程序版本:3.0.1.41
编译版本3.8.0.3.31.2.0.2.2.0.6
STA 连接到 AP Cisco99009,BSSID 为68:7f:74:53:26:30
已获取 IPv4:IP = 192.168.6.130
网关= 192.168.6.1
正在 Ping Gw...!
Ping 完成。 成功率:66%
HandlePingComplete:PingCounter=1
正在 Ping Gw...!
Ping 完成。 成功率:100%
HandlePingComplete:PingCounter=2
正在 Ping Gw...!
Ping 完成。 成功率:100%
HandlePingComplete:PingCounter=3
正在 Ping Gw...!
Ping 完成。 成功率:100%
HandlePingComplete:PingCounter=4
正在 Ping Gw...!
Ping 完成。 成功率:100%
HandlePingComplete:OTA 命令已到达
OtaInit:统计数据= 0、0、0
OtaInit:调用 Ota_init
OTA_INIT:sizeof CdnClient=576、sizeof OtaArchive=4956
ota_init:sizeof OtaLib_t=7736、sizeof ota_memBlock=7800
OTA_INIT:OTA 库版本= OTA_LIB_2.0.0.7
OtaArchive_Init:OTA 存档版本= OTA_archive_2.0.0.4
OtaConfig:调用 OTA_SET EXTLIB_OTA_SET_OPT_SERVER_INFO、ServerName=api.github.com
OtaConfig:调用 OTA_SET EXTLIB_OTA_SET_OPT_VENDOR_ID、VendorDir=SEC_OTA_CC3220SF
OTA_RUN:调用 CdnClient_ConnectServer OTA server=api.github.com
CdnClient_ConnectServer:HttpClient_Connect api.github.com
HttpClient_Connect:IP_ADDR=192.30.253.117
HttpClient_Connect:错误套接字连接,状态=-456
CdnClient_ConnectServer:错误 HttpClient_Connect、状态=-20304
OTA_RUN:错误 CdnClient_ConnectServer、Status=-20304
_OtaCheckConfuriveErrors:ConfuriveOtaErrors=1/5、仅返回警告
OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试
OTA_RUN:调用 CdnClient_ConnectServer OTA server=api.github.com
CdnClient_ConnectServer:HttpClient_Connect api.github.com
HttpClient_Connect:IP_ADDR=192.30.253.116
HttpClient_Connect:错误套接字连接,状态=-456
CdnClient_ConnectServer:错误 HttpClient_Connect、状态=-20304
OTA_RUN:错误 CdnClient_ConnectServer、Status=-20304
_OtaCheckConfuriveErrors:ConfuriveOtaErrors=2/5、仅返回警告
OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试
OTA_RUN:调用 CdnClient_ConnectServer OTA server=api.github.com
CdnClient_ConnectServer:HttpClient_Connect api.github.com
HttpClient_Connect:IP_ADDR=192.30.253.117
HttpClient_Connect:错误套接字连接,状态=-456
CdnClient_ConnectServer:错误 HttpClient_Connect、状态=-20304
OTA_RUN:错误 CdnClient_ConnectServer、Status=-20304
_OtaCheckConfuriveErrors:ConfuriveOtaErrors=3/5、仅返回警告
OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试
OTA_RUN:调用 CdnClient_ConnectServer OTA server=api.github.com
CdnClient_ConnectServer:HttpClient_Connect api.github.com
HttpClient_Connect:IP_ADDR=192.30.253.116
HttpClient_Connect:错误套接字连接,状态=-456
CdnClient_ConnectServer:错误 HttpClient_Connect、状态=-20304
OTA_RUN:错误 CdnClient_ConnectServer、Status=-20304
_OtaCheckConfuriveErrors:ConfuriveOtaErrors=4/5、仅返回警告
OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试
OTA_RUN:调用 CdnClient_ConnectServer OTA server=api.github.com
CdnClient_ConnectServer:HttpClient_Connect api.github.com
HttpClient_Connect:IP_ADDR=192.30.253.117
HttpClient_Connect:错误套接字连接,状态=-456
CdnClient_ConnectServer:错误 HttpClient_Connect、状态=-20304
OTA_RUN:错误 CdnClient_ConnectServer、Status=-20304
_OtaCheckConfuriveErrors:ConfuriveOtaErrors=5/5、MAX_CONSECURE_OTA_ERRORS!!!
OtaRunStep:Ota_run -21003的致命错误!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
测试失败:状态= 6、事件= 17
事件处理程序失败..!!
========================================================================================
问题1. 为什么没有提示我输入错误的根 CA? (是的,我对 SimpleLinkSockEventHandler()进行了编辑)
问题2. 3220上编程的底层证书是否允许我的闪烁演示运行会导致 OTA 演示正常运行的问题?

========================================================================================
我进一步进入了任务3的演示文档(完成 OTA 更新)。 我构建了本节中介绍的 Uniflash 映像、下载后、C3220没有执行任何操作(基本上是一个砖型)。
我甚至尝试在其中重新运行 OTA 演示项目、但仍然相同、没有。
我有损失...
Dave。。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    -456错误表示 CA 文件错误。

    从您在 Uniflash 中提到的文件列表中、我看不到连接到 GitHub 所需的 CA 文件。

    它应该是 DigiCert 高保证 EV 根 CA、如步骤5中的 TeraTerm 输出中显示的那样。

    应将其添加到 Uniflash 的根目录中、并在 otauser.h 中的 OTA_SERVER_ROOT_CA_CERT 下设置名称。

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shlomi:
    感谢您的回答。
    我的3220上编程的默认项目是简单的闪存和 LED 演示(使用以下证书构建)
    服务包:
    \servicepack-cc3x20\sp_3.9.0.6_2.0.0.0_2.2.0.6.bin
    受信任根证书:
    \certificate-m游乐场\certcatalogPlayFound20160911.lst
    \certificate-m游乐场\certcatalogPlayGround20160911.lst.signed_3220.bin
    用户文件:
    \certificate-d游乐场\dummy-root-ca-cert
    \certificate-d游乐场\dummy-trusted-ca-cert
    \certificate-d游乐场\dummy-trusted-cert
    添加了 MCU 映像并将以下文件链接到其中:
    \certificate-d游乐场\dummy-trusted-cert-key
    \certificate-d游乐场\dummy-trusted-cert

    OTA 演示正在通过此项目顶部的调试器运行、当它运行时不会提示我输入 DigiCert 高保证 EV 根证书、我从未看到步骤5中记录的消息。
    由于我没有在闪存中安装 DigiCert 高保证 EV 根证书 LED 演示-当我通过调试器运行 OTA 演示时、我是否应该看不到"sl_socket_ASYNC_EVENT:错误-错误的根 CA"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是的、您也应该看到它、我看不到为什么不这么做。 无论如何、请通过 Uniflash 安装根 CA 证书、并尝试建立与 GitHub 服务器的连接。

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shlomi:
    是的、很奇怪我在运行演示时没有看到该错误-我只是想知道当我在调试会话中运行 OTA 演示时、3220上预编程的任何内容是否与 OTA 演示发生冲突

    无论如何、还有几个问题:
    问题1. 关于获取 DigiCert 高保证 EV 根 CA 证书、我已将其放置在我的系统上(如"DigiCert_High_Assurance_EV_Root_Ca.cer")、并且我也已下载了该证书(从www.digicert.com/digicert-root-certificates.htm") (注意: 我对我下载的版本和系统中的版本进行了二进制比较、它们是"字节表示字节"完全相同)-这些文件都具有".cer"扩展名、我必须将扩展名更改为".der"正确吗?
    问题2. 我能否在通过调试会话运行 OTA 演示之前将证书添加到3220上编程的"FLASH the LED demo"? (这样、当我在"FLASH the LED"程序的顶部运行 OTA 演示时、它将在文件系统中提供证书)。
    问题3. 添加到上面的 Q2、在运行 uniflash 会话时、我会在哪里添加此证书? 添加 MCU 映像并将以下文件链接到该映像时、在 Service Pack、可信根证书、用户文件或相关文件下?
    再次感谢您的帮助。
    戴夫·····
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    答1:是的、这是一个。 格式可以保留为二进制 cer 文件、但需要确保应用程序中预期的文件名与通过 Uniflash 存储在文件系统中的文件名相匹配。 OTA 库将其定义为 OTA_SERVER_ROOT_CA_CERT。 您可以设置所需的任何名称、它应该是文件系统中的确切名称。 例如、如果将其设置为 "DigCert_High_Assurance_CA.der"、则需要在 Uniflash 工程的主目录中调用它。

    A2:证书需要通过 Uniflash 在文件系统上。

    A3:见 A1。 只要与 OTA 库中的完整文件名匹配、就可以将其放置在所需的位置。

    此致、

    Shlomi

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

    Shlomi:

    我相信我会继续前进!!

    我使用以下文件构建了"闪存 LED 演示":

    服务包:

    \servicepack-cc3x20\sp_3.9.0.6_2.0.0.0_2.2.0.6.bin

    受信任根证书:

    \certificate-m游乐场\certcatalogPlayFound20160911.lst

    \certificate-m游乐场\certcatalogPlayGround20160911.lst.signed_3220.bin

    用户文件:

    \certificate-d游乐场\dummy-root-ca-cert

    \certificate-d游乐场\dummy-trusted-ca-cert

    \certificate-d游乐场\dummy-trusted-cert

    C:\Users\DWARNER\Documents\MyProjects\BriggsAndStratton \OTA_Dev\digcert_high_assurance_ev_root_ca.der

    C:\ti\simplelink_cc32xx_sdk_2_30_00_05\tools\cc32xx_tools\ota-example-cert\dummy_ota_vendor_cert.der

    添加了 MCU 映像并将以下文件链接到其中:

    \certificate-d游乐场\dummy-trusted-cert-key

    \certificate-d游乐场\dummy-trusted-cert

    然后、我更新了 otauser.h、更改了#define OTA_SERVER_ROOT_CA_CERT "digcert_high_assurance_ev_root_ca.der"

    我重建了该项目、并在调试会话中运行该项目、以将其配置到我们的路由器。 配置后、我让它运行(有关结果、请参阅随附的"ota_results.txt"文本文件)。

    问题1. 下载完成后、OTA 演示会重置我的3220 (基本上会使我退出调试会话)-这是否意味着演示成功完成?

    问题2. 如果3220上有新的映像、我在重启时应该看到什么? 重启设备后、它不执行任何操作。

    问题3.这个问题完全没有关系(也许你可以帮助我解决这个问题)。 在 Code Composer Studio 中、对于 OTA 演示、我实际上有3个打开的项目(cloud_ota_CC3220SF_freertos_ccs、freertos_builds_CC3220SF_LAUNCHXL_release_ccs 和 OTA)(显然、这3个项目需要运行 OTA 演示)。 在 Uniflash 中、如何构建一个单一 SLI 映像、该映像将使用这3个项目中的所有必需元素、从而使3220在不使用调试器的情况下独立运行? 创建 uniflash 映像时、是否需要包含3个.bin 文件(每个项目一个)?

    谢谢!!

    e2e.ti.com/.../ota_5F00_results.txtDave。。

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

    很高兴听到 Dave、

    答1:是的、大家都很好、正如您所看到的、下载已完成、平台已重置、这将使您从调试会话中退出。

    A2:由于您还更新了 mcuflashimg 应用程序二进制文件,我希望新版本能够执行。 由于您处于调试模式、因此您只需退出即可。 您可以在运行时不进行调试吗?

    A3:您需要编译 OTA 库和 FreeRTOS 库、在编译云 OTA 二进制文件之前、请转到链接器并更改 OTA 库、以包含刚从工作区编译的库(而不是预编译的库)。 您应该在工作区的调试/发布目录下(在云 OTA 工程下)看到一个二进制文件。 只需在 Uniflash 中将这个用作 mcuflashimg 并将其编程到器件即可。

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shlomi:
    现在、我能够独立运行 OTA 工程(也就是说、我可以创建 SLI 映像、并让其在没有调试器的情况下独立运行)。
    事实证明、出现了两种情况:
    在 cloud_ota 工程中、OTA 库中的 OTA.A 文件未正确链接
    2.我必须重新配置 CC3220SF_LAUNCHXL.c 和 CC3220SF_LAUNCHXL.h 文件中的一些硬件引脚、以匹配我的硬件、cloud_OTA 工程的引脚与我的目标硬件不同-这就是为什么我看不到 LED 亮起或正在打印调试消息的原因。 底层项目(我的原始"Flash LED"项目)对这些引脚进行了更正、因此在其顶部(通过调试)运行一个图像、所有"看起来"正常工作。
    因此、我返回到 OTA 演示实验中的任务3、我能够连接到 GitHub 网站、并下载并对上面的.tar 映像进行编程。
    唯一的问题是、我下载的.tar 文件中的引脚设置(用于 LED 和调试打印)可能与我的硬件不兼容-因此、它可能已经成功下载、但当它重置为运行新映像时、它似乎已失效。

    现在、我的新问题是:
    问题1. 提供的 GitHub 站点、此演示是否连接到由 TI 或其他来源创建/维护的站点?

    问题2. 在 OTA 代码(otauser.h)中、定义了以下项目:
    #define OTA_VENDOR_DIR   "SEC_OTA_CC3220SF"      
    #define            OTA_VENDOR_ROOT_DIR"/repos/SimpleLink/CC3X20
    #define OTA_VENDOR_TOKEN"              SimpleLink"
    提供的 GitHub 网站上存在 OTA_VENDOR_DIR 和 OTA_VENDOR_ROOT_DIR 目录是否正确?
    问题3. 提供的 gitHub 站点上.tar 文件的目录结构是否如下所示:
    选项 A:/repos/SimpleLink/CC3X20 / SEC_OTA_CC3220SF / xxx.tar

    选项 b:sec_ota_CC3220SF/repos/SimpleLink/CC3X20 / xxx.tar
    问题4. 是否从提供的 GitHub 网站创建或引用了 OTA_VENDOR_TOKEN?
    问题5. 适用于此提供的 GitHub 网站的"digcert_high_assurance_ev_root_ca.der"文件是否适用于其他 GitHub 网站? 或者、我是否需要一个全新的设备来连接到不同的 GitHub 网站?
    问题6. 我想将我自己的.tar 文件上载到个人 GitHub 网站、并能够验证我是否按预期下载并重新编程-我该怎么做? (注意:在实验任务5中对 otauser.h 进行必要的更改后、我尝试连接到我的分接盒帐户、但没有成功-因此、如果可以、我想继续使用 GitHub)。

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

    您好!

    问题1. 提供的 GitHub 站点、此演示是否连接到由 TI 或其他来源创建/维护的站点?
    A1:不、它由 GitHub 维护、仅作为示例提供。 您可以选择任何其他云存储库。

    问题2. 在 OTA 代码(otauser.h)中、定义了以下项目:
    #define OTA_VENDOR_DIR   "SEC_OTA_CC3220SF"       
    #define            OTA_VENDOR_ROOT_DIR"/repos/SimpleLink/CC3X20
    #define OTA_VENDOR_TOKEN"              SimpleLink"
    提供的 GitHub 网站上存在 OTA_VENDOR_DIR 和 OTA_VENDOR_ROOT_DIR 目录是否正确?
    A2:如果不存在,则应创建这些目录。
    通常,在创建默认帐户时,根目录为/repos/ 。 除此之外的任何内容都是手动创建的。
    问题3. 提供的 gitHub 站点上.tar 文件的目录结构是否如下所示:  
    选项 A:/repos/SimpleLink/CC3X20 / SEC_OTA_CC3220SF / xxx.tar

    选项 b:sec_ota_CC3220SF/repos/SimpleLink/CC3X20 / xxx.tar
    [A3]选项#1。
    问题4. 是否从提供的 GitHub 网站创建或引用了 OTA_VENDOR_TOKEN?
    A4:GitHub 示例中的 OTA_VENDOOR_TOKEN 与您的用户名相同。
    问题5. 适用于此提供的 GitHub 网站的"digcert_high_assurance_ev_root_ca.der"文件是否适用于其他 GitHub 网站? 或者、我是否需要一个全新的设备来连接到不同的 GitHub 网站?
    A5:每个站点都有自己的根 CA 证书。 这与从 PC 上的浏览器进行连接非常相似。 区别在于您的 PC 已在其"受信任根 CA"下存储了许多根 CA 证书、并且使用 SL、您需要根据要连接到的站点存储相关根 CA。
    问题6. 我想将我自己的.tar 文件上载到个人 GitHub 网站、并能够验证我是否按预期下载并重新编程-我该怎么做? (注意:在实验任务5中对 otauser.h 进行必要的更改后、我尝试连接到我的分接盒帐户、但没有成功-因此、如果可以、我想继续使用 GitHub)。
    A6:您提到您可以进行 OTA、不能吗?

    此致、

    Shlomi

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

    Shlomi:

    很抱歉耽误您的时间(为了做其他事情而被拔下)

    但是、我现在可以运行 OTA、这不是问题! 我已经设置了个人 GitHub 网站、将.tar 文件上传到该网站并执行 OTA 下载演示!

    现在、我只需要从演示代码中获取数据、然后在这里下载项目以进行 OTA 下载-希望下周初能实现这一目标。

    感谢您的所有帮助!

    我真的很感激!

    Dave。。