それらをハードウェアに実装する必要があります。「NVRAM からデフォルトを復元」の目的は、いわゆる「ブリック」デバイスを復元することです。
たとえば、デバイスが起動できないように NVRAM 設定が変更された場合 (cosmic ray?) はどうなるでしょうか? その場合、提案されたボタン ポーリング デーモンは決して実行されません。
再起動を 1 秒間保持するには、RC (抵抗器 + コンデンサ) 回路を使用して、ボタンの押下を「デバウンス」します。1 秒の遅延に適した RC 時定数を選択します。RC 電圧を監視するコンパレータを使用しRESET
て、MIPS CPU のピンに信号を送ります。
3 秒間押す機能 (NVRAM のデフォルトを復元する) については、おそらくもっと複雑なことをしなければなりません。
1 つの可能性は、小さな PIC マイクロコントローラーをリセット回路に入れることですが、NVRAM ではなく、ヒューズ (消去不可) ROM を備えたマイクロコントローラーのみを使用します。
より簡単な方法は、NVRAM と同じ回路およびバス上にデフォルトを含む ROM を用意することです。AJ/K フリップフロップ ラッチは、リセット回路の一部になる可能性があります。また、3 秒に調整された RC 回路とコンパレータも必要です。3 秒未満のプレスでは、フリップフロップは0
出力をラッチする必要があり、3 秒以上のプレスでは、2 番目の RC 回路が 3 秒後にコンパレータをトリガー1
し、J/K ラッチに a を提示する必要があります。出力。
フリップフロップ出力Q
は、このリセット サイクルが 3 秒間のプッシュに続いたかどうかを回路に伝える単一ビットを格納します。その場合、その出力Q
はチップ セレクトを NVRAM にQ*
駆動し、チップ セレクトを ROM に駆動します。(チップセレクトは、NVRAM チップと ROM チップの両方で負論理であると想定しています。)
その後、CPU が起動すると、チップ セレクト ラインに応じて、NVRAM または ROM から設定が取得されます。
ブート コードは、ROM チップ セレクトで起動したことを検出でき、後で GPIO ラインで J/K フリップフロップをリセットできます。その後、CPU は適切な値を NVRAM に書き戻すことができます。うまくいけば、デバイスのブリックが解除されます。
消去も再利用もできないROMを使いたい。そのような ROM は、静電気、電源障害、および放射線に最も耐性があります。放射線は私たちが一般に認識しているよりもはるかに多く存在しており、宇宙線フラックスの量は、たとえば航空機に搭載されたデバイスによって増加します。