質問: マイクロコントローラブートローダの目的は何ですか? 私の理解から、一般的なマイクロコントローラ(例えばAVR、PIC)については、そのフラッシュメモリをプログラムする一般的に2つの方法がある。 1. プログラマを使う:インサーキットシリアルプログラミング(またはその変形)? 2. 何らかの形のブートローダ。外部デバイスが通信し、最終的にマイクロコントローラがそれ自身のメモリをフラッシュすることを可能にします。 確かにブートローダを使う非常に良い理由があるに違いありません、さもなければ、現在の広く使われている用途は非常に奇妙でしょう。まだ完全に把握していないようです。 プログラマーは高価ですか?しかし、それでは、プログラマとして機能できる Arduinos(ATmegaマイクロコントローラ)があります。ブートローダの使用を保証するのに十分な追加のIC 1個のコスト私が誤解していなければ、最新のArduinosはFTDIチップを完全に取り除き、USBからシリアルへのインターフェースを行うATmegaプロセッサに置き換えます。たとえば、このICにプログラマの機能を統合することは可能でしょうか。 または、たとえばPICマイクロコントローラを取ります。 JDMプログラマーという名前のものがあります。このようなもので、実質的にアクティブなコンポーネントがなくても、PICをプログラムできます。 1. なぜブートローダを使うのですか? 2. 比較的堅牢な PICkit の目的は何ですか(堅牢性は別として)。デバッグ機能?
回答: ブートローダの主な目的は、デフォルトのハードウェアインタフェース以外のインタフェースを介してファームウェアを更新できるようにすることです。たとえば、これにより、アプリケーションが独自の目的で使用する通信チャネルを介した更新が可能になります。つまり、リモートサイトで物理的な介入を必要とせずにシステム内でリモート更新を実行できます。 この機能を使用すると、追加のハードウェアが不要になるため、繰り返し費用が最も少なくなり、Arduinoなどの趣味のよいシステムで使用されるようになります。 AVRチップをすでにブートローダにプログラムされた状態で購入する必要があるため、これは少量のマーケティングロックインも提供します。