您必须在硬件中实现这些。“从 NVRAM 恢复默认值”的目的是恢复所谓的“变砖”设备。
例如,如果修改了 NVRAM 设置(宇宙射线?)导致设备无法启动怎么办?在这种情况下,您提出的按钮轮询守护程序将永远不会执行。
对于一秒钟的重启,使用 RC(电阻器 + 电容器)电路来“去抖动”按钮按下。选择适合一秒延迟的 RC 时间常数。使用比较器观察 RC 电压以RESET
向 MIPS cpu 上的引脚发送信号。
对于三秒按下功能(恢复 NVRAM 默认值),您可能需要做一些更复杂的事情。
一种可能性是将微型 PIC 微控制器放入复位电路,但只使用带有熔断器(不可擦除)ROM 的微控制器,而不是 NVRAM。
一种更简单的可能性是在与 NVRAM 相同的电路和总线上拥有一个包含默认值的 ROM。AJ/K 触发器锁存器可以成为复位电路的一部分。您还需要一个三秒调谐的 RC 电路和比较器。在低于三秒的按下时,触发器应锁存0
输出,在三秒以上的按下时,第二个 RC 电路应在 3 秒后触发比较器并将 a1
提供给 J/K 锁存器,这将切换其输出。
触发器输出Q
将存储单个位,告诉您的电路此复位周期是否在三秒按下之后。如果是这样,Q
则该输出将芯片选择驱动到 NVRAM,并将Q*
芯片选择驱动到 ROM。(我假设 NVRAM 和 ROM 芯片上的片选都是负逻辑。)
然后,当您的 CPU 启动时,它将从 NVRAM 或 ROM 中获取设置,具体取决于芯片选择线。
您的引导代码可以检测到它是使用 ROM 芯片选择引导的,然后可以使用 GPIO 线重置 J/K 触发器。然后 CPU 将能够将好的值写回 NVRAM。希望能解开设备。
您想使用不可擦除或不可重复使用的 ROM。那种 ROM 对静电、电源故障和辐射的抵抗力最强。辐射比我们通常意识到的要多得多,例如,通过在客机上安装一个设备,宇宙射线通量的数量会成倍增加。