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.

[参考译文] LAUNCHCC3220MODASF:OTA 后回滚固件

Guru**** 2589280 points
Other Parts Discussed in Thread: CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/779805/launchcc3220modasf-rollback-of-firmware-after-ota

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

您好!

在对 cc3220modasf 执行 OTA 更新时、自动回滚出现问题。  

我正在写入文件 /sys/mcuflashimg.bin (使用标志 SL_FS_WRITE_MUST_COMMIT 打开)、调用 Power_SHUTDOWN 并测试新固件。 如果成功,我将调用 sl_FsCtl (sl_FS_CTL_commit,...)。

如果文件 在首次启动期间未通过 sl_FsCtl (sl_FS_CTL_commit)验证、我希望该文件会自动恢复为上一个文件。 但我所了解 的是、器件会在新文件上重新启动、无法连接到 http 服务器、并通过 Power_shutdown 返回休眠状态、然后始终在未经验证的文件上重新启动。

正如预期 的那样、提交后的 SlFsFileInfo_t.Flags 为0x250、提交挂起时为0x254、并且这也是在每次连续启动后发生的。

我的问题:

  1. 如果没有提交、是否应自动恢复文件?
  2. 如果是、有什么可以阻止它?

我使用的是最新的 SDK 和服务包。

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

    您好、Cedric、

    正确、如果未提交、则应恢复文件。 我们不会期望这种行为。

    需要检查的几件事:
    1.您使用的是默认 OTA 库吗? 您是否进行过任何更改?
    2.您是否使用 OTA 示例看到此行为? 如果不是、您能否分享您的实现方式有何不同?
    3.在 ImageCreator 中为 mcuflashimg.bin 设置了哪些标志?
    4.要进行验证、您是否是指 SDK 版本2.40.02.00和 CC3x20服务包 sp_3.10.0.5_2.0.0.0_2.2.0.6? 我将看到我是否可以复制它。

    此致、
    Sarah

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

    您好、Sarah、

    感谢您的回复!

    1+2:不、我不使用 OTA 库。 我将重复使用我们为 cc3200实施的机制、在该机制中、我们使用 http 请求在服务器上下载新的二进制文件、写入文件 /sys/mcuflashimg.bin (使用标志 SL_FS_WRITE_MUST_COMMIT 打开)、调用 Power_SHUTDOWN 并测试新固件。 如果成功,我将调用 sl_FsCtl (sl_FS_CTL_commit,...)。  

    如果可能、我希望保留此内容、因为它比整个 OTA 库简单/轻得多。

    引导加载程序是否仅自动回滚在捆绑包模式下打开的文件?

    3:失效防护、安全、公开写入

    4:确实有用的验证... 我只查看了此链接、它未显示最新 的 http://www.ti.com/tool/SIMPLELINK-CC32XX-SDK

    我现在正在下载最新版本:http://www.ti.com/tool/download/simplelink-cc32xx-sdk 、并将确认它是否有用。  

    (是否有方法在新 SDK 发布时获得通知?)

    此致、

    C é dric

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

    我确认 SDK 2.40.02.00和 CC3x20服务包 sp_3.10.0.5_2.0.0.0_2.2.0.6也会发生同样的情况

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

    如果绑定 MCU 映像、您是否看到自动回滚按预期发生? NWP 编程人员指南确实讨论了如何将主机应用程序作为捆绑包进行更新、但我在内部说明、如果我们还希望/sys/mcuflashimg.bin 在不属于捆绑包时自动回滚。

    工具文件夹页面上的"通知我"按钮应在有新版本可用时通知您。 2.40版本之间的次要更新可能错过了该更新、但这些更改不会影响您看到的行为。

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

    我尝试使用一些组合的标志打开该文件、但找不到一个可以正常工作的标志。

    使用 sl_FsOpen (FW_FILE_NAME、(sl_FS_WRITE_MUST_COMMIT | SL_FS_WRITE | SL_FS_CREATE_MAX_SIZE (FW_MAX_FILE_SIZE))、0);
    如果没有提交、文件在重新启动时不会回滚。

    仅添加 SL_FS_WRITE_BUNDLE_FILE 时、我会遇到错误的标志组合错误。

    您能告诉我应该使用哪种组合吗?

    感谢您提供有关"通知我"的提示、我错过了该提示。

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

    我终于找到了所有问题。

    使用以下标志、这是可以的。
    uint32_t 标志= sl_FS_OVERRITE;
    flags |= sl_FS_create;
    flags |= sl_fs_create_failsafe;
    flags |= sl_fs_write_bundle_file;
    flags |= sl_FS_create_MAX_SIZE (FW_MAX_FILE_SIZE);
    flags |= sl_fs_create_secure;
    flags |= sl_fs_create_public_write;

    它最初不起作用、因为我在重新启动之前没有调用 sl_stop。

    感谢你的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您发布您的解决方案、C é dric! 我很高兴您能正常工作。

    此致、
    Sarah