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.

[参考译文] CC3220S-LAUNCHXL:OTA.CMD 解析错误

Guru**** 2559770 points
Other Parts Discussed in Thread: CC3200, CC3220S

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/673944/cc3220s-launchxl-ota-cmd-parsing-error

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

您好!

OTA 更新过程中出现以下错误(以下为完整日志、结尾为错误):

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.dropboxapi.com
OtaConfig:调用 OTA_SET EXTLIB_OTA_SET_OPT_VENDOR_ID、VendorDir=OTA_Sight MCU
OTA_RUN:调用 CdnClient_ConnectServer OTA server=api.dropboxapi.com
CdnClient_ConnectServer:HttpClient_Connect api.dropboxapi.com
HttpClient_Connect:IP_ADDR=xxx.x.x
HttpClient_Connect:警告套接字连接,status=-468,已忽略...
OTA_RUN:CdnClient_ReqOtaDir、VendorDir=OTA_Sight MCU
CdnDropbox_SendReqDir:UI=/2/files/list_folder
回答为647,处理大小为642
整个 JSON pRespBuf 为:OtaDir file=/ota_sight MCU/20180218220000.tar、FileSize=430080
OTA_RUN:CdnClient_ReqOtaDir、NumDirFiles=1
OTA_RUN:CdnClient_GetNextDirFile
OTA_RUN:CdnClient_GetNextDirFile:file=/ota_sight MCU/20180218220000.tar、size=430080
OtaArchive_Init:OTA 存档版本= OTA_archive_2.0.0.4
OtaArchive_CheckVersion:当前版本 str = 20170928123328、十进制= 1761701312
OtaArchive_CheckVersion:新版本 str = 20180220021800、十进制数=-1833103904
OtaArchive_CheckVersion:更新版本- 20180220021800
OtaRunStep:来自 Ota_run 的状态:ota_run_status_check_news_version、接受并继续
OtaRunStep:CurrentVersion=20170928123328,NewVersion=20180218220000,开始下载...
OTA_RUN:调用 CdnClient_ReqFileUrl、fileName =/OTA_Sight MCU/20180218220000.tar
CdnDropbox_SendReqFileUrl:Uri=/2/files/get_Temporary 链接
HTTP 请求为:
发布/2/files/get_Temporary _link HTTP/1.1
主机:api.dropboxapi.com
授权:bearxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
内容类型:应用/JSON
内容长度:45

{"path":"/ota_sight mcu/20180218220000.tar"}



OTA_RUN:调用 CdnClient_ConnectFileServer、URL = dl.dropboxusercontent.com/.../somepath
HttpClient_Connect:IP_ADDR=xxx.x.x
HttpClient_Connect:警告套接字连接,status=-468,已忽略...
OTA_RUN:调用 CdnClient_REqFileContent、URL = dl.dropboxusercontent.com/.../somepath
CdnDropbox_SendReqFileContent:file=/apitl/1/somepath
OtaArchive_RunParse:设置 state=archive_State_parse_hdr
OtaArchive_RunParseTar:解析存档文件头
OtaArchive_RunParseTar:filetype=5、directory=20180218221854_CC3200_pro_dev2/
OtaArchive_RunParseTar:解析存档文件头
OtaArchive_RunParseTar:filetype=5、directory=20180218221854_CC3200_pro_dev2/0/
OtaArchive_RunParseTar:解析存档文件头
OtaArchive_RunParseTar:filetype=5、directory=20180218221854_CC3200_pro_dev2/1/
OtaArchive_RunParseTar:解析存档文件头
OtaArchive_RunParseTar:filetype=5、directory=20180218221854_CC3200_pro_dev2/2/
OtaArchive_RunParseTar:解析存档文件头
OtaArchive_RunParseTar:FileType=0、fileName=ota.cmd、FileSize=3100
OtaArchive_RunParseTar:_BundleCmdFile_Parse 中出现错误、Status=-1
OTA_RUN:错误 OtaArchive_RunParse、Status=-1

_OtaCheckConfuriveErrors:ConfuriveOtaErrors=1/5、仅返回警告
OtaRunStep:警告 Ota_run、Status=20009、继续进行下一次 OTA 重试

看起来好像它在读取 OTA 命令文件时卡住了。 请在下面找到.tar archieve 中 ota.cmd 文件的内容:

[

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"dummy-trusted-ca-cert"、
"signature_base64":"xxxxxxx some signature== xxxxxxxxxxxxxxxx"、
"安全":1、
"捆绑包":1、
"文件名":"/sys/mcuimg.bin
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"/www/css/style.css
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"/www/index.html
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"/www/js/jquery.min.js
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"/www/js/scripts.js
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"DigiCert 高保证 EV 根目录 ca.der"
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"dummy-root-ca-cert"
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"dummy-trusted-ca-cert"
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":""、
"安全":0、
"捆绑包":1、
"文件名":"dummy_ota_vendor_cert.der"
}、

"摘要":"xxxxxxx 部分代码 xxxxxxxx"、
"证书":"、
"signature_base64":"xxxxxx Some signature xxxxxxx=="、
"安全":1、
"捆绑包":1、
"文件名":"/sys/servicepack.ucf

]

您能否告知 OTA.cmd 文件有什么问题? 还是解析器?

谢谢、

David

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

    尊敬的 David:

    ota.cmd 看起来有效。

    您使用的是示例应用程序(来自 SDK)还是代码中的 OTA 库?

    您使用的是哪个 SP 和 SDK?

    BR、

    Kobi

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

    我正在使用 cloud_ota_CC3220S_LAUNCHXL_tirtos_ccs 示例。

    SP - sp_3.6.0.3_2.0.0.0_2.2.0.6.bin
    SDK - simplelink_cc32xx_sdk_1_60_00_04

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

    我尝试在 ota.h 中修改 NET_BUF_SIZE 并更新 json.c 文件以解决最近的错误、但它没有帮助。

    以下是 json.c 文件中的更改:

    int16_t JSON_drepryTemplate (句柄模板手柄)

    /*验证模板句柄*/
    if ((templateHandle!= 0)&&(((jsonTemplateInternal_t *) templateHandle)->validNum = validation_number))

    jsonTemplateInternal_t * pInternalTemplate =(jsonTemplateInternal_t *)模板 Handle;
    // pInternalTemplate->pData = NULL;//由 David 修改,下移
    pInternalTemplate->len = 0;
    /*将幻数初始化为0 */
    pInternalTemplate->validNum = 0;
    FREE(pInternalTemplate->pData);
    pInternalTemplate->pData = NULL;// David 根据以下 TT 移动了注释行: e2e.ti.com/.../669135
    免费(pInternalTemplate);
    返回 JSON_RC__OK;

    返回 JSON_RC_INVALID_TEMPLE_Handle;


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

    您好、Kobi、

    是否有问题的更新?

    谢谢、

    David

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

    我不熟悉此类问题、无法重现此问题、因此我需要您的帮助来进行调试。

    请在所有可能返回-1值的位置(包括对 OtaJson 方法的所有调用都是 retval<0)中的"_BundleCmdFile_parse"中放置一个断点,或者只是逐步执行代码。

    或者、如果您无法设置断点、请在函数中添加一些调试消息、以便我们可以专注于根本原因、因为现有日志不够。

    BR、
    Kobi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "_BundleCmdFile_pars"位于 OTA_archive.c 内的 OTA 库中(这意味着您需要重建 OTA 库、然后重建应用程序)。

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

    您好、Kobi、

    感谢您的帮助、我添加了测试点、证书失败、摘录如下:

    /*获取当前文件的证书*/
    RetVal = OtaJson_getCertificate (&CurrBundleFile);
    如果(RetVal < 0)

    /*解析证书失败,返回错误*/
    UART_PRINT ("状态7 \n\r");
    返回 RetVal;

    可能出什么问题了? 在我看来、我已经下载了正确的证书。

    谢谢、

    David

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

    问题似乎在以下行中:
    uint16_t 证书 Len = MAX_CERTIFICATE_LENGTH;

    右侧的参数设置为20。 但是、证书的长度更长。 我进行了以下更改:

    uint16_t CertificateLen = 40;//由 David MAX_CERTIFICE_LENGTH 关闭;

    上述更改有助于执行下一步。 我现在正在调试另一个问题。 我很快就会发布。

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

    我需要做的另一个更改是:为了适应更大的尺寸、请执行以下操作:
    #define OTA_BLOCK_SIZE 9000 //由 David 7800修改

    就是这样、现在就可以工作了! 非常感谢。

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

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

    您好!

    我有类似的问题。 发送输出:

    [_BundleCmdFile_parse] bundcmd file=/www/images/icons/menu.png、sig_len=0、sha_256_Digets=ec6173aa201099907edf035e11fd23462499f0642e8aaa967838fddad332c3be、cert=、security=0、 bundle=1
    [_bundleCmdFile_parse] bundcmd file=/www/images/icons/wireless.png、sig_len=0、sha_256_Digets=e04e33b015cf29d69124eb970d410f21c96d72776131bff908f41ed2b8f65f、cert=、secure=0、 bundle=1
    [_BundleCmdlue_parse] bundcmd file=/www/images/tilogo.gif、sig_len=0、sha_256_Digets=3e59f665ba3876aafbc0b124459df996dc85c9bc7533df63b670ba19228e2d1e、cert=、security=0、 bundle=1
    [_bundleCmdFile_parse] bundcmd file=/www/index.html、sig_len=0、sha_256_Digets=ea6b12f8aec63addb9d9239a950be642974b20d48d20b2aa31eb44296ef、cert=、security=0、 bundle=1
    [_BundleCmdFile_parse] bundcmd file=/www/js/jquery.min.js、sig_len=0、sha_256_Digets=df34524351c5fabc921a89183b5da5667aebd7b9e9a1c52c76ff722935e3、cert=、security=0、 bundle=1
    [_BundleCmdlue_parse] bundcmd file=/www/js/scripts.js、sig_len=0、sha_256_Digets=0b0c9c1d231045d639791564525626029b1a0a8f56e91f1732b38eb2a532ec、cert=、secured=0、 bundle=1
    [_BundleCmdlue_parse] bundcmd file=/www/otaa.html、sig_len=0、sha_256_Digets=ae033ae677dd4a64544cbed4d217ac3d910d4462e0aa62d8627f05843671f9eb、cert=、security=0、 bundle=1
    [_BundleCmdlue_parse] bundcmd file=/www/settings.html、sig_len=0、sha_256_Digets=b166330ae86c0cf5247dde7fe0201ee90320d13a1c117d3ffb7c1397ffde7e63、cert=、security=0、 bundle=1
    错误:-16384,无法解析接收到的 JSON 文件
    OtaArchive_RunParseTar:_BundleCmdFile_Parse 中出现错误,状态=-16384
    OTA_run:错误 OtaArchive_RunParse,状态=-16384 

    错误编号 -16384由从_BundleCmdFile_Parse 调用的 JSON_init 函数生成。  它正确地执行 JSON_Init 几次并在某个点崩溃。

    BR、

    Nikola。