工場出荷時設定へのリセットはどのように機能しますか?


18

すべての組み込みデバイスには、何かがおかしい場合にユーザーが自分のデバイスをリセットできるようにする「工場出荷時リセット」オプションが含まれています。

STM32ボードでファームウェアを開発しています。ファームウェアには、(新しいイメージを含むバイナリファイルを送信することにより)UARTを介してアプリケーションをアップグレードできるブートローダーが含まれており、別の機能を追加したい:ファクトリーリセット。ユーザーがこのオプションを選択すると、ボードは元の画像をロードします。

工場出荷時リセットとは何ですか?バイナリファイル全体をメモリに再度読み込むことですか、それともエンドユーザーによって変更された変数を再初期化する関数を呼び出すだけですか?

そうするためのベストプラクティスは何ですか?

元のFWを保存する場所は?内部または外部フラッシュにありますか?

回答:


20

一般的に言って、工場出荷時のリセット機能は、保存された変数データ情報をデフォルト値に復元します。すべての組み込みデバイスにこの機能があることは事実ではありません。一部ではありますが、すべてではありません。

デバイスが工場出荷時のデフォルトファームウェアへの復帰をサポートするようにするには、そのイメージを保存するために、設計にメモリを回路に組み込む必要があります。このための一般的なコンポーネントは、SPIフラッシュチップです。次に、シリアルポート経由でイメージを取得するのではなく、SPIフラッシュチップからファームウェアイメージを取得するモードをサポートするために、ブートローダーも変更する必要があります。デバイスがユーザーによる交換可能なファームウェアをサポートしていない場合、通常は工場出荷時のデフォルトのファームウェアに復元する手段を提供する必要はありません。


1
実際には答えではないので、コメントとして残しておきます。一部のデバイスは設定をデフォルトに戻すだけで、これは簡単です(たとえば、ユーザー設定を消去するだけです)。その他(少ないと思う)は、ファームウェアを工場出荷時のデフォルトにリセットします。既存のファームウェアを古いファームウェアに置き換える方法が必要なため、これはより困難です。
ディザマスター

11

工場出荷時のデフォルトの最も一般的な例を取り上げると、それはPCのUEFI(BIOS)です。

フラッシュチップと揮発性バッテリーバックアップSRAMメモリチップで構成されています。フラッシュチップにはプログラムが含まれ、SRAMには設定が含まれます。

上の工場出荷時設定へのリセット、揮発性SRAMの内容は消去されます。次回の起動時に、設定のチェックサムが無効であることを検出し、プログラムに含まれているデフォルトを復元します。

これは、バッテリバックアップSRAMに限定されず、FLASHまたはEEPROMでも同じことができます。ただし、マシンの電源を入れなくても、バッテリーバックアップSRAMを消去できます。


別の用語はファクトリリカバリです。これは、メインプログラムが2回含まれていることを意味します。ただし、ユーザーがアップグレードできるのは1つのコピーのみです。
デュアルBIOSはこの例です。

電話やコンピューターなどの高レベルのシステムでは、インストールファイルを使用してオペレーティングシステムを工場出荷時の状態に復元します。


10

工場出荷時設定へのリセットは、あなたが望んでいることです。これは、アプリケーションとデバイスのタイプによって異なります。

私は通常2つのことをします:

  1. ブートローダーに入るための信頼できる方法が常にあることを確認してください。そうすることで、ファームウェアの部分的/間違った更新でもデバイスをブロックできなくなります。
  2. ユーザーが何かを変更した場合にファームウェアの設定リセットする方法があります。特定の設定の組み合わせによってアプリケーションがクラッシュするなど。

どちらも、ボタン(長押し、短押し)、DIPスイッチ、または他の通信手段(UART、USBなど)で実行できます。

たとえば、1つのボタンに1つのGPIOを使用する場合、次の方法で使用できます。

  1. 電源投入+ボタンが押された=ブートローダーを呼び出す
  2. 電源オン、ボタンが押されていない=ボタンを(ウィンドウ内で)押して5秒間押したままにし、ファームウェア設定をリセットすると、3秒待機してLEDを点滅させる

2

前述のように、工場出荷時設定にリセットすると、初期工場出荷時イメージがデバイスにリロードされます。これは、ユーザーが何をしているのかわからない、または初期構成に戻りたいだけの設定ミスの場合に必要になることがあります。ソフトウェアの更新が実行された場合など、更新中に特定の障害シナリオをカバーしたい場合があります。この場合、ジャンパーを使用して選択して工場出荷時のデフォルト構成を復元できる、元の工場出荷時イメージが保存された専用のフラッシュメモリがある場合もあります。たとえば、更新が失敗してメインイメージが破損した場合に、元のBIOS設定を復元できる場合、これはコンピューターのメインボードで実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.