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.

[参考译文] CC3220SF-LAUNCHXL:云 OTA Wu&'t 连接到 GitHub 服务器

Guru**** 2589300 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/654247/cc3220sf-launchxl-cloud-ota-won-t-connect-to-github-server

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

当我尝试云 OTA 演示时、控制台出现以下错误:

OtaConfig:调用 OTA_SET EXTLIB_OTA_SET_OPT_VENDOR_ID、VendorDir=OTA
SL_SOCKET_ASYNC_EVENT 套接字事件2、请重新启动
OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试

我从  http://www.ssltools.com/report/2cad954a-c856-4095-898d-82bf88811434下载了 GitHub CA 证书 、并将其放置在 uniflash 目录中。

我创建了一个免费的公共 GitHub repo ota_test、并在其中放置了一个名为 OTA 的目录、其中包含 OTA tar 文件:"cloud OTA Demo_180105161457.tar"。  我还创建了一个访问令牌、甚至授予了它所有的权限。

以下是 otauser.h 中的代码

/*
otauser.h -用户配置的头文件(CdnVendor=Dropbox/Github)
*

**版权所有(C) 2016 Texas Instruments Incorporated
*
*保留所有权利。 德州仪器(TI)公司的财产。
*通过
合同*授予使用、复制或披露此代码的受限权限。
*未经
*德州仪器公司的书面许可或根据
提供本计划的协议中规定的条款和条件*使用本计划
、*在任何情况下都不能与非 TI 连接器件一起使用。
*
/
#ifndef __ota_user_H__
#define __ota_user_H__

#ifdef __cplusplus
extern "C"{
#endif

#include 

#include 
#include 

//#define SL_ENABLE_OTA_DEBUG_TRACES //取消注释以启用内部 OTA 调试信息*/
#ifndef SL_ENABLE_OTA_DEBUG_TRACES
#define _SlOtaLibTrace (pargs)
#else

#ifdef _WIN32

#define _GitOtaLibTrace (pargs)*f parcongs

#Elif Trace_MSP432Pin













Message (pargs)#define + partinvoid 格式#define + partatf Loggs #define + partinf (partings_parf)*partings_partatf Loggs (partinf)*partinf 报告格式#define + partatf 报告#define + partatf (partatf)*partatf 报告格式#partinf 报告# 1
#define OTA_SERVER_Dropbox V2 2
#define OTA_SERVER_CUSTOM 99

/*用户应在此处定义要使用的云*/*
--------------- */
#define OTA_SERVER_TYPE OTA_SERVER_GITHUB
//#define OTA_SERVER_TYPE OTA_SERVER_Drop_V2

/* OTA 服务器信息*/
/*--- //

#ifdef _WIN32
#define OTA_VENDOR_DIR "OTA_CC3120"
#Elif __MSP432P401R__
#define OTA_VENDOR_DIR "OTA_CC3120"
#else
//#define OTA_VENDON_DIR"OTA_CC3220SF"
#define OTA_SERVER_FILE_SERVER_NAME=#define OTA_SERVER_NOT_NAME*




#define OTA_NOT_OTA_SERVER_NOT_NAME=#define OTA_NOT_OTA_NAME*
"api.github.com
#define OTA_SERVER_IP_ADDRESS 0x00000000
#define OTA_SERVER_SECURE_ 1

/* Github 供应商信息*/
#define OTA_VENDOR_ROOT_DIR "/repos/xxxxxxx/ota_test
#define OTA_VENDOR_TOKEN "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#ifndef OTA_VENDOOR_TOKEN
#ERROR "请在 OTA_VENDOOR_TOKEN 中定义您的个人云帐户令牌"
#endif

#define OTA_SERVER_ROOT_CA_CERT "DigiCert SHA2高保证服务器 CA.der"
//#define OTA_SERVER_ROOT_CA_CERT "
#define OTA_SERVER_AUTH_IGNORE_DATA_TIME_ERROR
#define OTA_SERVER_AUTH_DISABLE_CERT_STORE

#Elif OTA_SERVER_TYPE = OTA_SERVER_Dropbox V2

/* Dropbox V2 server info */
#define OTA_SERVER_NAME "api.dropboxapi.com
#define OTA_SERVER_IP_ADDRESS 0x00000000
#define OTA_SERVER_SECURE_ 1

/* Dropbox V2供应商信息*/
#define OTA_VENDOR_TOKEN " "
#ifndef OTA_VENDOOR_TOKEN
#ERROR "请在上文 OTA_VENDOOR_TOKEN 中定义您的个人云帐户令牌"
#endif

#define OTA_SERVER_ROOT_CA_CERT "DigCert_High_Assurance_CA.der"
#define OTA_SERVER_AUTH_IGNORE_DATA_TIME_ERROR
#define OTA_SERVER_AUTH_DISABLE_CERT_STORE

#Elif OTA_SERVER_TYPE =OTA_SERVER_CUSTOM_*

在此添加您的客户服务器标头*/
#include ""/*

Github server info */
#define OTA_SERVER_NAME ""
#define OTA_SERVER_IP_ADDRESS 0x00000000
#define OTA_SERVER_SECURE_ 1

/*供应商信息*/
#define OTA_VENDOR_TOKEN "用户定义的令牌"

#define CdnVendor_SendReqDir
#define CdnVendor_ParseRespDir
#define CdnVendor_SendReqFileUrl
#define CdnVendor_ParseRespFileUrl
#define CdnVendor_SendReqFileContent

#endif


#ifdef __cplusplus
}
#endif //_cplusplus */

#endif //*_ota_user_H_*

我不知道从这里做什么...  它必须是一个简单的东西、我将丢失它。

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

    首先验证您是否遵循了 SDK 中包含的指南中概述的每个说明:docs\simplelink_mcu_sdk\Over_The_Air_Update_Guide.html

    如果是、您能告诉我正在使用哪个 SDK 版本吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用的是1.50.00.06、并且一直遵循以下指南:  http://dev.ti.com/tirex/content/simplelink_cc32xx_sdk_1_50_00_06/docs/simplelink_mcu_sdk/Over_The_Air_Update_Guide.html#updating-ota-definitions

    它不会为我提供有关可能发生的错误的大量信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为我有错误的证书 我使用此方法来获取 DigiCert 高保证 EV 根 CA

    按“Start (开始)”按钮
    在“Search (搜索)”框中键入 certmgr.msc,然后按 Enter 键。
    双击“受信任的根证书颁发机构”
    双击"证书"
    查找"DigiCert 高保证 EV 根 CA "
    双击它。 它将打开证书。
    选择详细信息选项卡
    单击“Copy to File”(复制到文件)按钮并将证书导出为.der 格式


    我的行为略有不同、但仍然失败:

    HandlePingComplete:OTA 命令已到达
    OtaInit:统计数据= 0、0、0
    OtaInit:调用 Ota_init
    OtaConfig:调用 OTA_SET EXTLIB_OTA_SET_OPT_SERVER_INFO、ServerName=api.github.com
    OtaConfig:调用 OTA_SET EXTLIB_OTA_SET_OPT_VENDOR_ID、VendorDir=OTA
    OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试

    OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试

    OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试

    OtaRunStep:警告 Ota_run、Status=20006、继续进行下一次 OTA 重试


    OtaRunStep:Ota_run -21003的致命错误!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    测试失败:状态= 6、事件= 17
    事件处理程序失败..!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    奥斯汀

    我启用了调试跟踪、这里是我得到的结果。  正如我说过的、我非常确定我已根据指令配置了所有内容、但我不知道如何处理此错误。

    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=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

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

    在等待回复时、我偶然发现了 MSP430 OTA 文档 (dev.ti.com/.../msp432_ota_wifi_updates.html)。  此处清楚地指出、GitHub 的令牌是 repo 帐户用户名。  这不是 CC3220 OTA 更新指南中的任何位置!   我现在有一个新错误、我开始质疑指令的完整性。  首先、不清楚是否需要对 OTA 元文件进行签名。  似乎我没有这样做、因为当我单击"创建 OTA"按钮时、Uniflash 不会提示我输入密钥。  我甚至不确定下面的错误是否与此相关。  请 TI 的人员发表评论。  谢谢

     

    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=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:警告套接字连接,status=-468,已忽略...
    OTA_RUN:CdnClient_ReqOtaDir、VendorDir=OTA
    CdnGithub_SendReqDir:UI=/repos/user/ota_test/contents
    居放马位:579人
    recvAppend pRespBuf 之后为:TTP://api.github.com/repos/user/ota_test/git/blobs/be9b167d66ac65626feac86bd70f4fbb01b8cbca、"download_URL":"raw.githubusercontent.com/.../20180104151750.tar
    整个 JSON pRespBuf 为:[{"名称":"2018010415175.tar"、"路径":"OTA/2018010415175.tar"、"SHA":"be9b167d66ac65626feac86bd70f4f01bbb8cbcbca"、"大小:153600、"URL":https://api.github.com/repos/user/ota_test/contents/ota/20180104151750.tar?ref=master","html_url":"https://github.com/user/ota_test/blob/master/ota/20180104151750.tar","git_url":"https://api.github.com/repos/user/ota_test/git/blobs/be9b167d66ac65626feac86bd70f4fbb01b8cbca","download_url":"https://raw.githubusercontent.com/user/ota_test/master/ota/20180104151750.tar","type":"file","_links":{"self":"https://api.github.com/repos/user/ota_test/contents/ota/20180104151750.tar?ref=master","git":"https://api.github.com/repos/user/ota_test/git/blobs/be9b167d66ac65626feac86bd70f4fbb01b8cbca","html":"https://github.com/user/ota_test/blob/master/ota/20180104151750.tar"}}]
    [OtaJson_getMetadataFileName]错误:-101,无法获取数据
    OTA_RUN:错误 CdnClient_ReqOtaDir、状态=-101

     

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

    尊敬的 Andrew:

    我想确保您解决了这些问题、而其他找到此主题的人则获得了他们所寻找的答案-

    根据您在按"Create OTA"时未看到密钥提示、您可能正在使用较旧版本的 UniFlash。 此外、这与您在下面看到的错误无关。 这表示为 OTA 库中的元数据文件名分配的缓冲区大小不够大。 尝试将 OtaJson.c 中的 MAX_metadata_filename 增大到(120)、如 SimpleLink Academy 中 OTA 示例所示。

    http://dev.ti.com/tirex/#/?link=Software%2FSimpleLink%20CC3220%20SDK%2FSimpleLink%20Academy%2FLabs%2FWi-Fi%2FWi-Fi%20OTA

    最棒的

    本·M