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:安全但非失效防护文件的行为异常

Guru**** 2393725 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1050545/cc3235s-weird-behavior-with-secured-but-non-failsafe-files

器件型号:CC3235S

我有以下问题:在 OTA 期间、负载直接存储在 sfs 上的文件中。 该文件是使用创建的  
SL_FS_CREASE_SECURE | SL_FS_CREASE_STATICE_TOKEN | SL_FS_CREASE_VENDOORY_TOKEN 标志。 在有效载荷的最末尾有一个哈希和。 如果哈希不匹配、我需要以某种方式关闭文件。 我对全新回滚不感兴趣(这就是不使用 SL_FS_CREATE _FAILSAFE 的原因)、但我需要保留串行闪存上的空间。 观察到的行为:如果我尝试中止文件(调用签名='A'的 sl_FsClose)、则返回0。 然后、sl_FsGetInfo 看不到该文件(返回 SL_ERROR_FS_FILE_NOT_EXISTS)、但散射块仍会消耗、因此在多次尝试后、sl_FsOpen 返回了 SL_FS_ERR_NO_USE_BLOAD_BLOTS。
我的问题是、如果 OTA 下载可能会意外中断、并且通常我没有有效签名来正确关闭文件、如何避免出现空间泄漏。

P.S. 我使用最新的 Service Pack (4.11.0.0)

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

    这看起来肯定像是一个错误、

    您是否尝试在中止后重置 NWP 以查看存储器是否已释放?

    我将尝试重现此问题、并报告内部错误。  

    作为一种权变措施、您可以(当然)使用失效防护功能(我了解闪存空间问题)。

    您可以尝试的另一项操作是以不安全的方式打开文件(您可以在  发现错误时关闭并删除文件)、并且  仅在收到并验证整个内容时才将内容复制到安全文件 (然后删除不安全的文件)。

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

    感谢您的努力。 NWP 重新启动没有帮助。 我没有注意到两种情形之间有很大差异:
    *故障后整个 SOC 的冷重启(使用 IC 引脚);
    *热重启整个 SOC (将系统置于休眠模式);
    * NWP 重新启动
    *在不重新启动 SOC/NWP 的情况下重复 OTA 下载/文件写入/中止

    我恐怕很难为临时的不安全文件分配额外的空间。

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

    您是否尝试调用 sl_FsDel()来删除中止的文件?

    这似乎起作用了、

    该文件仍然显示在 SL_FsGetFileList 中-为"无有效副本"、可以将其删除以释放资源。

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

    真的很棒! 非常感谢。 我错误地认为无法按名称访问已中止的文件(它通常是如何与 close()一起工作的)。 虽然仍然存在潜在问题、例如、如果在文件写入过程中触发看门狗、则可能会导致空间泄漏、但我的当前问题已得到解决。 再次感谢:)