您好!
首先,我知道中断 Flash_Eras()函数可能会导致一些错误。 我只是想详细了解在我的特定情况下发生的情况。 总之、当闪存擦除被中断时、闪存中的所有寄存器返回一个0值、这将使人认为它可能与 CSM 密码的损坏有关。 因为、为什么全为零? 为什么不损坏随机值? 但是、系统行为的某一方面与这种解释不符。 详细信息如下:
在 Flash_Erase 期间、系统断电。 复位时、固件中使用的所有存储设置返回0值。 此外、使用 IQmath 库的 IQ 函数计算的变量返回零。 因此、在引导 ROM 中运行的引导加载程序期间、肯定会出现问题。
奇怪的是、一旦我们跳转到闪存、进入扇区 B 和 C 中的 MAIN_APP 并尝试写入闪存、该过程就会成功执行。 如果 CSM 密码损坏、这是怎么可能的? 第一个想法是写入是从安全存储器内部完成的。 但是、也可以从主应用程序读取扇区 D 中存储的设置!!! 那么、为什么写入有效、而不是读取有效?
那么、这里会发生什么情况?
Flash_Erase 损坏-当复位寄存器返回0值时-写入被启用。
提前感谢您!