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.

[参考译文] CC3200:OTA 成功、映像大小大于 Uniflash 设置的最大大小

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

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1025667/cc3200-ota-succeed-while-image-size-larger-is-than-max-size-set-from-uniflash

器件型号:CC3200

我可以在文档 CC3200 SimpleLinkTM Wi-FiRegistered和物联网解决方案(单芯片无线 MCU )中找到应用程序映像的3个用户映像:/sys/mcuimg1.bin (我认为此映像来自刷写芯片)、/sys/mcuimg2.bin 和/sys/mcuimg3.bin (其中最后两个映像在 OTA 期间发生更改)。 如果我的理解有误、请纠正我的问题。

现在、如果我执行以下步骤、我会问有关允许的图像大小的问题

  1. 将 CC3200闪存为 80kB 的映像、同时将最大大小设置为100kB
  2. 使用大小为102KB 的新映像执行 OTA、这在查找时有效、尽管最大大小为100KB
  3. 使用大小为102KB 的映像执行新的 OTA、在这里停止、OTA 失败。

问题是、为什么第一个 OTA 工作正常、但最大大小设置为100KB? 只要闪存中存储的两个映像小于2 *最大大小(在本例中为200KB)、是否可以使用大于最大大小的映像?

谢谢!

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

        创建每个文件时、最大大小限制分别适用于每个文件(I、E、/sys/mcuimg1.bin、/sys/mcuimg2.bin、/sys/mcuimg3.bin)。

    mcuimg1.bin 在编程映像中进行配置(在首次引导时由引导加载程序创建)。 最大长度实际上不会产生任何影响。

    mcuimg2.bin 的最大大小取自 OTA 映像。 这些文件在 FLC 库中创建(请参阅 sl_extlib_FlcOpenFile)。

    FLC 使用双缓冲机制、新映像将写入非操作文件(例如、mcuimg3.bin 中的 mcuimg2.bin 可正常工作等)。  

    文件 是在 FLC 首次使用时创建的。

    根据您的描述、我认为这两个器件都应该配置为102k、因此可能是最新的一个(失败)被设置为稍大一点的大小。

    无论如何、您可以在  sl_extlib_FlcOpenFile 中设置断点、并在每个文件打开时检查其实际大小(并非 OTA 库会使用名为"/sys/mcubinA.bin 的文件调用此方法、而是将"A"替换为2或3)。

    您可以做的一件事是更新 FLC 代码、以便在文件创建时保留额外的存储器。

    BR、

    Kobi