2

私はこれらのデバイスに慣れていないので、たとえそれらが非常に安価であっても、不必要にブリックしたくありません.

esptoolを使用して、NodeMCU ファームウェアをモジュールにフラッシュしました。その際、ファイルが書き込まれるアドレス (通常は 0x00000) を指定する必要があります。これは、ファームウェアに実際にブートローダーが含まれているということですか? それとも、フラッシュの別の領域にありますか?

ブートローダー自体がファームウェア ファイルに含まれている場合、フラッシュ プロセスが中断されると、モジュールが役に立たなくなるのではないでしょうか?

明確にしてくれてありがとう!

4

1 に答える 1

7

この方法でモジュールを損傷することはできません。おそらく 100 回のフラッシュを実行しましたが、そのうちのいくつかは失敗しました (たとえば、ボーレートが高すぎるため)。ファームウェア自体には にブートローダー含まれていますが0x000000、これは任意に交換できる第 2 段階のブートローダーです。第 1 段階のブートローダーを上書きできないはずです。を作成した人物からのrBoot引用:

ブート ローダーは SPI フラッシュの最初のセクターに書き込まれ、他のプログラムと同様に実行されます。組み込みの第 1 段階のブート ローダーは、他のプログラムではなく第 2 段階のローダーをロードしていることを知りません。

では、次に何が起こるでしょうか?第 2 段階のブート ローダーはオープン ソースではなく、盲目的に使用できるようにバイナリ BLOB として提供されています。

要するに: に意味のない書き込みを行ってモジュールを損傷することはありません0x00000。無効なオペコードが見つかる前に任意のコードを実行する可能性がありますが、それだけでは CPU が爆発したり、モジュールが損傷したりするほどではありません。破損した第 2 段階のブートローダーから回復するには、ファームウェアを再フラッシュするだけで十分です。

では、その第 1 段階のブートローダーは正確にはどこにあるのでしょうか? richard.burtons.org/2015/05/17/esp8266-boot-processのコメントから、作成者は次のように答えました。

コメンテーター: 第 1 段階のブート ローダーがプロセッサの ROM にあるのか、フラッシュにあるのかを調べています。ROMに入っていると思います。これがROMにある場合、フラッシュを台無しにしてデバイスを役に立たなくするリスクはありません. ご確認いただけますでしょうか。

リチャード: その通りです。ステージ 1 は rom にあり、それを壊すことはできません。

于 2016-11-23T10:00:05.593 に答える