インターネットへのリモート接続をサポートするモノのインターネット デバイスとして、ローカルまたはリモート OTA アップグレードもスクリプト プログラミング コントローラーの重要な機能です。これは、リレーにバグが完全にないという保証がないためです。バグの使用、OTA アップグレード インターフェイスがない場合、顧客がシリアル ポートを介してファームウェアをアップグレードできるようにするのは困難で、コントローラーは工場に戻すことしかアップグレードできず、コストが高く、大きな影響があります。 &&&]
さらに、顧客は中国語プログラミングでは実現できないいくつかのパーソナライズされた機能を備えている場合があり、これを実現するにはコントローラーのファームウェアをアップグレードする必要があります。これら 2 つの状況は、ローカルまたはリモートの OTA 機能を通じて解決する必要があります。
この機能を完成させるために少し時間を費やしましたが、次のようにまとめられています:
(1) ESP8266 のフラッシュには、user1.bin ~ user2.bin という名前の 2 つのファームウェアを保存できます。2 つのファームウェアのアドレスは、アドレス 0x0000 に保存されているブート プログラム boot.bin によって決定され、ストレージ アドレスはそれぞれ異なります。フラッシュの容量が異なります。
たとえば、フラッシュ容量が 1M バイトの ESP8266-01S では、ストレージ アドレスはそれぞれ 0x01000 と 0x81000 ですが、フラッシュ容量が 4M バイトの ESP8266-07S では、ストレージ アドレスはそれぞれ 0x01000 と 0x101000 です。
3) 公式に推奨されている方法は、http プロトコル経由でファームウェアをクラウド サーバーのメモリにダウンロードすることです。私はこのプログラムを使用しませんでした。主な理由は 2 つあります。1 つは、このプログラムが厳密に検証されているかどうか、そしてブリックへのアップグレードを回避するためにデータ検証について十分な考慮が払われているとは思えません。次に、このプログラムでは、サーバーからファームウェアをダウンロードするためにコントローラーが外部ネットワークに接続できる必要がありますが、これは簡単ではありません。
現在、delphi を使用して一連のファームウェア アップグレード ソフトウェアを開発しています。このソフトウェアは TCP クライアントとしてコントローラーに直接接続するか、クラウド サーバーの TCP ゲートウェイに接続してコントローラーに転送されます。ファームウェアをコントローラーにプッシュするためのデータ フレームに 512 バイト。
次に、この一連のロジックをサーバーに移植できます。顧客はブラウザーから Web ページを開いて、ファームウェアをコントローラーにプッシュできます。
4) データの整合性が完全に検証され、データの最初のフレームで crc32 チェックサムが実行され、ファームウェアがフラッシュに書き込まれ、次に読み出されて書き込まれた値と比較され、同時に値が計算されます。 crc32 の値と、上位コンピュータが送信する crc32 の値が読み取りデータと書き込みデータと比較して同じであり、crc の値も同じである場合、データのフレームは正常に書き込まれたと見なされます。
同時に、データの各フレームの crc32 値を調べ、さらに crc32 値を取得して合計 crc32 値を取得します。ホスト コンピューターから送信された合計 crc32 値と比較すると、関数 system_upgrade_flag_set( を呼び出す前の値は同じです)。 0x02) SDK がブート ファームウェアに切り替わるようにします。
両方のストレージ領域で同じファームウェアが使用されている場合、ESP8266 は正常に起動できません。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3