1

長いイントロで申し訳ありませんが、質問のコンテキストを説明するのに役立ちます。

私は、github に投稿された arduino のようなコードを読んで、スマート ウォッチがカスタム ファームウェアを作成するためにどのように機能するかを理解しようとしています。すべての例のloop()関数に次のコードがあることに気付きました。

if(digitalRead(BUTTON)) standardShutdown();

この行は電源ボタンを監視しているようで、押された場合は時計をシャットダウンします。ただし、これには懸念があります。これまでに理解したブート チェーンは次のとおりです。時計の電源を入れると、アドレス 0x08000000 でブートローダー コードの実行が開始されます。USB が接続され、ユーザーが 1 秒以内にボタンを押すと、dfu モードに入り、新しいファームウェアをダウンロードできます。それ以外の場合は、0x08040000 にあるユーザー コードが実行されます。

では、プログラマーのミスにより、コードが無限ループに入り、電源ボタンもシャットダウンもチェックしない場合はどうなるでしょうか? 時計を強制的にリセットする方法はありますか (電源ボタンを 5 秒間押し続ける、ボタンを押したまま USB ケーブルを接続する、またはそのような組み合わせ)、ブートローダーを再度実行し、新しいファームウェアをダウンロードしますか? そうでない場合、無限ループの原因となるミスにより、時計が永久に機能しなくなりますか?

通常、私は何が起こるかを試してみますが、時計をブロックしたくありません。そのため、ここで質問しています.

4

1 に答える 1