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.

[参考译文] CC3235S:本地 OTA 状态/百分比更新

Guru**** 2392905 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1056647/cc3235s-local-ota-state-percentage-update

器件型号:CC3235S

您好!

我尝试使用本地 OTA 示例。

当我发送 Tar 文件时、我看不到任何刷新的百分比值、因为下载应该会进行。

当我查看开发人员选项时,似乎用于此的 javascript 是函数:

函数 getOtaProgress (){

   if (otaProgressInvoke=1)
   {
      otaProgresInvoke=0;
      h =新的 XMLHttpRequest();
      H.onreadystatechange =函数(h){
         return function(){
            if ((h.readyState == 4)&&((h.status == 200)||(h.status ==204)){
               clearTimeout (xmlHttpTimeout);
               var data = h.response;
               
               if (data =""){
                  
               }
               
               otaProgresInvoke=1;
               
               if (data ="fail"){
                  clearTimeout (xmlHttpTimeout);
                  clearTimeout (otaReportExec);
                  console.log ("失败");
                  $(".wrong").show (500);
               }否则{
                  xmlHttpTimeout=setTimeout (ajaxTimeout,30000);
                  
                  $("#Progress最近").text (数据);
                  $("#ProgressBar").val (data);
                  if (data ='100'){
                     clearTimeout (xmlHttpTimeout);
                     clearTimeout (otaReportExec);
                     console.log ("100%");
                     wait15andcheck();
                     //检查文件是否已成功上传
                     //$("#ProgressEnd ").show (500);
                  }
               }
            }
         }
      }(h);
      h. open("get"、"https://"+deviceIpAddr+":5432"、true");
      h.send();
   }

由于安全原因、此查询似乎被阻止。 是否与正在使用自签名证书的 https 相关?

是否有其他方法可以获取更新状态?

此致、

特奥多尔

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

    您使用的是什么浏览器?

    TAR 文件是否已成功发送?   

    如果您使用 HTTP (而不是 HTTPS)、您是否会看到进度?

    基本上、您可以更改代码和 HTML 文件以使用任何其他方法来显示进度条。

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

    您好、Theodore、

    是的、这是 SDK 5.20发行说明中本地 OTA 示例的已知问题:

    CC3X20SDK-156 在 OTA 过程中、进度条很少卡住
    CC3X20SDK-116 Windows Firefox 以及 Chrome 和 Chrome 浏览器上的进度条不会即时更新进程状态

    个人而言、我没有看到该 AJAX 代码有任何明显错误、但我没有深入探究此示例。 我个人将自己的 javascript 和后端代码用于本地 OTA。 我使用原始的 ota_archive.h/.c 代码、这对我很有用。 如需更深入的描述、请等待 TI 的回答。

    但请注意、本地 OTA 示例已从最新的 SDK 5.30中删除。 一些新的 OTA 示例似乎会在晚些时候出现。

    1月

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

    使用新 OTA 设计的示例可能会在下周推出。

    新的 OTA 实现方案对进度条使用不同的方法。

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

    您好、Kobi、

    我使用的是 Firefox。

    是的、tar 已成功发送、基本上可以正确重新启动模块(我需要弄清楚以正确提交它、但这是另一个问题)

    我还没有尝试过 HTTP 解决方案。 此问题是否与线程有关,以及用于处理 tar 的线程在执行该操作时无法处理其他 HTTP 查询?

    新的 OTA 实现是否在某个位置可用 ?

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

    您好!

    http 似乎让我看到百分比更新。

    但下一个查询"http://

    实现:443/ota?Phase =",从模块获取404错误代码。

    是否有任何更新?

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

    新的 OTA 设计(一个示例同时显示本地和云 OTA)现已在 sl_wifi 示例 git 中提供:

    https://git.ti.com/cgit/slwfat/sl_wifi_examples (请参阅 MQTT_CLIENT_w_OTA 示例)

    我不是 html 部分的专家、因此希望更新后的进度条支持能为您提供帮助。 更新了"ota.html"、报告不是基于从第二个 HTTP 连接轮询的报告。 相反、它基于 HTTP POST 中发送的字节数量的内部检查以及接收结束时的状态消息(即报告不使用第二个 HTTP 连接)。

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

    您好!

    感谢 Kobi、我将用您的示例来解决这个问题。

    此外、您能否指导我正确接受/提交待定 OTA 更新?

    我成功应用了更新、但在重新启动新程序时、似乎不会将其识别为待处理。

    此致、

    特奥多尔

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

    您 使用的是本地 OTA 示例还是自定义代码?

    下载/上传完成后、您需要在复位 MCU 之前调用 sl_Stop (200)。

    这将使器件处于挂起提交状态。

    复位后、您将能够检查状态(请参阅 local_ota_task.c 中 HandlePingComplete()中对 OtaArchive_GetPendingCommit 的调用)。 在新示例中、如果您调用 ota_if_init()、 则将通过注册的 OtaCallback 自动通知 ota_notif_image_pending_commit 事件。

    如果未将映像标识为待提交、则在映像下载或 sl_Stop 期间未正确执行任何操作。

    确定"待提交"后、应验证映像是否正常工作(例如、映像可以连接到本地网络并启用 OTA)。

    5.20示例 检查是 在 ping 成功完成后完成的,因此连接工作正常,它可以立即调用 OtaArchive_Commit()。

    在新示例中 、调用"slNetConn_getStatus (true、&status)"并检查 STATUS=SLNETCONN_STATUS_CONNECTED Internet (如果 是本地 OTA、甚至是 STATUS=SLNETCONN_STATUS_CONNECTED IP)将证明我们能够(至少)连接到本地网络以启用 OTA。  在这种情况下应调用 ota_if_commit()。  

     

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

    您好、Kobi、

    我将使用本地 OTA 示例。

    “欺骗”步骤是否是必需的,也就是说,是否需要执行新的成功连接才能使用 OT_IF_COMMIT()?

    此致、

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

    不是强制性的、只是推荐

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

    您好、Kobi、

    再次感谢您的帮助、我们成功了。 继续!

    我已将进度条设置为正常工作、并在我们的自定义程序中接受最终 OTA 更新。

    我们甚至会将另一个程序作为用户文件嵌入 tar 文件中,以便用它来刷写另一个微控制器!