在我看来:软复位:从复位向量启动。硬重置:拉cpu的电平。
硬复位当然意味着整个CPU芯片及其所有外设都被复位。造成这种情况的原因可能有很多:复位引脚被外部拉动、时钟故障、片上低电压检测、看门狗、非法指令陷阱等。
软复位可能意味着返回复位向量的“脏”分支,其中复位向量恢复包括堆栈在内的所有 CPU 核心寄存器。我想说这是非常值得怀疑的做法,我不确定它会有什么好处。主要问题是,当您执行此操作时,所有 MCU 外围硬件寄存器都不会重置为默认值。对所有此类寄存器的复位状态不做出任何假设几乎是不可能的,尤其是现在平均 MCU 带有 1000 多个寄存器。因此,通过这种软且脏的重置,您很可能最终会出现如下行为:
subtle intermittent bugs <= my program <= complete haywire
更牵强的是,软重置可能意味着由软件引起的重置。在这种情况下,它可能会向看门狗寄存器写入错误的值以强制复位,或者无法刷新看门狗。或者可能是执行了非法指令。这些很可能会导致整个芯片的完全重置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)