工具/软件:
尊敬的专家:
我们的闪存 API 文档中说它可以在调用闪存 API 之前禁用中断

本章提供了如何 执行操作的代码演示


由于它是汇编代码、因此客户使用 asm() 来实现它、您能帮助检查下面函数中是否有问题吗?

BRS
Shuqing
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.
工具/软件:
尊敬的专家:
我们的闪存 API 文档中说它可以在调用闪存 API 之前禁用中断

本章提供了如何 执行操作的代码演示


由于它是汇编代码、因此客户使用 asm() 来实现它、您能帮助检查下面函数中是否有问题吗?

BRS
Shuqing
Shuqing
我想了解更多关于客户用例的背景信息。 当我阅读闪存 API 指南时、我认为“步骤 9“是说客户可以选择禁用全局中断、因为闪存 API 将根据需要处理此问题、因此时间关键型代码不会受到影响。
因此、如果客户愿意、可以选择禁用中断(使用标准 DINT 命令和完成后 EINT)、但这不是必需的。
客户提到的所有功能都不需要在代码库中重新复制。
如果客户在这里有更多关于最终要求的详细信息、请告诉我、我很乐意查看。
此致、
Matthew
Shuqing
根据我们的转换回复、为了在调用闪存 API 之前禁用全局中断、客户只需在其 C 代码中使用 DINT(此宏将通过设置 INTM 位来处理禁用全局中断)、然后在闪存编程完成后使用 EINT
XNMI 部分不适用于 F2803x/02x。 之前的 Gen2 器件(如 F2833x)中存在这种情况、但在 F2802x/3x/6x 器件中删除了这种情况;因此客户无需为 XMNI 做任何事情。 此地址范围在 F2802x/3x 中保留;因此、即使 API 仍有此调用(我怀疑)、代码也不会执行任何操作。
现在、出于以下原因:

这适用于客户仍在运行时间关键型控制代码、而在进入闪存 API 之前未禁用中断的用例。 在本例中、是指 API 本身在擦除期间禁用 ISR 的时间、该时间将为 3-4ms、可能需要为 ISR 提供服务。
在这种情况下、客户仅进行引导至固件更新、因此没有时间关键型代码等
我想向客户强调的另一件事是我们在 DS 中列出的擦除时间:
最大擦除时间为每个扇区 12 秒(典型值为 2s/扇区)。 客户需要确保任何外部元件(如看门狗或其他可能 ping F2803x 的元件)由于时间的推移不会拉动 F2803x 上的 XRSn。 在系统中观察到该擦除时间延缓窗口非常重要。
如果时间过长、我们可以探索如何重新启用中断、并允许 API 的持续时间为 3-4ms、以便为任何外部监视器等提供服务
最后、
根据经验、要避免 CSM(代码安全模块问题);如果客户可以避免对扇区 A/H 进行编程、最好是出现电源故障而不影响 CSM 和锁定器件。 根据客户在开发/发布过程中的位置、这可能无法实现。 但我确实想提出这个问题、以防它对固件更新策略有帮助。 A/H 没有问题、但如果闪存编程/擦除被中断并且这些是活动扇区、那么它可能会导致 CSM 损坏、进而锁定器件。
根据我们的谈话、我不确定客户看到的是问题、而是基于 FA 的闪存出现了电气问题。 如果未观察到锁定、则可以忽略上述段落。
此致、
Matthew