マイクロコントローラブートローダの目的は何ですか?

私の理解から、一般的なマイクロコントローラ(例えばAVR、PIC)については、そのフラッシュメモリをプログラムする一般的に2つの方法がある。

  1. プログラマを使う:インサーキットシリアルプログラミング(またはその変形)?
  2. 何らかの形のブートローダ。外部デバイスが通信し、最終的にマイクロコントローラがそれ自身のメモリをフラッシュすることを可能にします。

確かにブートローダを使う非常に良い理由があるに違いありません、さもなければ、現在の広く使われている用途は非常に奇妙でしょう。まだ完全に把握していないようです。

プログラマーは高価ですか?しかし、それでは、プログラマとして機能できる Arduinos(ATmegaマイクロコントローラ)があります。ブートローダの使用を保証するのに十分な追加のIC 1個のコスト私が誤解していなければ、最新のArduinosはFTDIチップを完全に取り除き、USBからシリアルへのインターフェースを行うATmegaプロセッサに置き換えます。たとえば、このICにプログラマの機能を統合することは可能でしょうか。

または、たとえばPICマイクロコントローラを取ります。 JDMプログラマーという名前のものがあります。このようなもので、実質的にアクティブなコンポーネントがなくても、PICをプログラムできます。

  1. なぜブートローダを使うのですか?
  2. 比較的堅牢な PICkit の目的は何ですか(堅牢性は別として)。デバッグ機能?
10
いくつかのMCU(AVR、STM8/32、...)については、プログラマーは安いです。あなたは15ドル以下でAVRプログラマーを得ることができます。ただし、他のMCUファミリ(Kinetisなど)の場合、プログラマは100ドル以上、多くのARMファミリをプログラムできるプログラマ/デバッガは500ドル以上になる可能性があります。しかし他の人が言っているように、それは主に便利さ、遠隔更新、そして外部ハードウェアの排除についてです。
追加された 著者 Tachyons,
arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader 答えはほとんど「便利」です
追加された 著者 jdv,
ハードウェアを初期化したり、外部ソースから内部ストレージにコードをロードするため
追加された 著者 Alex,

6 答え

ブートローダの主な目的は、デフォルトのハードウェアインタフェース以外のインタフェースを介してファームウェアを更新できるようにすることです。たとえば、これにより、アプリケーションが独自の目的で使用する通信チャネルを介した更新が可能になります。つまり、リモートサイトで物理的な介入を必要とせずにシステム内でリモート更新を実行できます。

この機能を使用すると、追加のハードウェアが不要になるため、繰り返し費用が最も少なくなり、Arduinoなどの趣味のよいシステムで使用されるようになります。 AVRチップをすでにブートローダにプログラムされた状態で購入する必要があるため、これは少量のマーケティングロックインも提供します。

16
追加された

ブートローダが多くの価値を追加しないいくつかのシナリオがあります。あなたがボードを2、3持っているならあなたは正しいですあなたは確かにプログラマーを接続してコードを再びフラッシュすることができます。あなたが2、3のボードを持っている趣味者であるか、あなたがたとえ小さい生産さえ持っているならば、あなたはこの方法でそれをすることができます。

ブートローダは、プログラマを物理的に接続することが現実的ではないシナリオではより意味があります。たとえばすでに展開されている完成品は、これらのシナリオの1つです。

一般的に電子製品をお持ちの場合は、「デバッグ」ポートや「プログラミング」ポートを公開しないでください。あなたの製品にはイーサネット、シリアル、RS485、CAN、ワイヤレスしかありません。

また、数十から数百のものがすでに販売/導入されていて、ファームウェアのアップデートがある場合はどうしますか。

エンクロージャを開いたり、プログラマーを接続したり、プログラミングしたり、製品ケースを閉じたりするのではなく、現在の製品の既存のインターフェースの1つを使用してプログラムすることができます。

あなたが "イーサネット"や他の種類のワイヤレスなどで "接続された"デバイスを持っているとき、それはさらに良いです。あなたの製品が何であれ無線モジュールを入れてコードを更新するためにブートローダとその無線通信を使うことができれば、このようにあなたは同時にそしてそれらに触れることなくいくつかの装置を更新することができます。

そして、あなたのデバイスがインターネットに接続されているなら、それは夢のような機能になります。そのようにしてあなたの携帯電話はその更新を取得するので、あなたはワンクリックですべてのファームウェアを更新することができます。

趣味人にとっては、ブートローダを使う意味があまりないのかもしれませんが、実際にデバイスを販売しているビジネスの観点からすると、時間が節約されるので非常に便利ですファームウェアのアップデートのためだけにプログラマを販売する必要はありません(そうでなければプログラマに購入させる)。そして、あなたのデバイスが機能的には同じで異なるマイクロコントローラを持っているとしたらどうでしょうか?正しいプログラマーを送ったり売ったりするために誰が何を持っているかを決定しなければならないでしょう、それは悪夢になります!

Instead of this you just put a USB port on it and everything gets hidden from the user, everybody knows how to connect a USB to the PC, copy one file to it and attach it to another device, but no normal user knows what the heck is a P&E debugger, a PICKit or a Segger J-Link.

これが少し混乱しているならば申し訳ありません、英語は私の言語ではないかもしれませんそして多分墨塗りは混乱です、しかし、私はあなたが考えを得ることを望みます。

乾杯!!

9
追加された
良い答え、多少冗長かもしれません。あなたの英語は大丈夫です(少なくとも私のネイティブスピーカー以外の観点から)。
追加された 著者 Rev1.0,
英語は、世界貿易のためのデフォルト言語であり、おそらくネイティブよりもネイティブではない話者が多いという意味で奇妙です。そのため、「正しい」英語を定義するのはそれほど難しくなります。米国のカンザスシティ出身のネイティブスピーカーとして、私はあなたを理解するのに問題はありませんでした。
追加された 著者 AaronD,

ブートローダの主な目的は、

  • ストレージ/ネットワークからプログラムを取得してロードします。

処理装置の近くにはごく限られた量の高速ストレージがある可能性があり、実行したいプログラムはボードごとに異なる場合もあれば、ボード上のプログラムを変更したい場合もあります。ブートローダは、カスタムソフトウェアが格納されている場所からカスタムソフトウェアをロードしてそれを処理装置に送信する方法を知っている一般的なプログラムです。

高度なブートローダーができること:

  • セルフテスト
  • ネットワーク起動
  • 追加のファームウェアを読み込む
  • ...
1
追加された
OPは特にフラッシュベースのマイクロコントローラに見られるブートローダについて尋ねています。より一般的な意味でブートローダに関連していますが、この答えは少し話題を逸脱しています。
追加された 著者 GSerg,

他のすべての素晴らしい答えとは別に、少なくとも商用製品にはもう1つの理由があります。プロダクションプログラミングの後、ほとんどのチップにはデータの読み取りから保護するためのオプションがあります。

MCUによっては、この読み出し保護オプションによって実際にハードウェアプログラマ接続が無効になることがあります(SWDやJTAGなど)。ブートローダを実行していないと、デバイスを再プログラムできません。

そして、あなたは市場にバグのあるソフトウェアを搭載した10kユニットになってしまいます、それは本質的に数ヶ月のコーディングであるものを超える大きな損失を被ります。

1
追加された

それはプログラマーの費用ではありません。売上高は趣味者から来ていません。それは要因ですが要因ではありません、大量に購入する人々は確かにプログラマを買う余裕があります。いくつかの選択肢があります。

  1. 部品供給業者、仲買人、または製造会社のいずれかで部品を事前にプログラムしてから、ボードに載せます。

  2. ボード上に配置された後のある種のインサーキットプログラミング

2番目のカテゴリには、ハードロジックソリューション( SPI またはAVRチップ上のSPI風のもの)があります。 )とソフトソリューション(ブートローダ、その部分を使用してその部分で実行されているプログラム)。両方を持っている人もいます。

あなたが正しい設計をしなければならないなら、あなたはそれを十分に早くそれをつかまえなければならない、あるいはあなたの製品はあなたが捨てなければならない無駄な部品の束です。ポストシリコンでさえソフトウェアソリューションを変更することができます。在庫を取り、それを実行して再プログラムすることもできます。だからあなたの製品のバグを修正したり作成したりするのが簡単ならばその贅沢がある。ソフトな解決策はまた、ユーザにとってより幅広い種類の選択肢を可能にし得る。 SPIとI²CそしてUSBとシリアルそしてもしあればどんなハードウェアソリューションでも。いくつかのケースではソフトな解決策は、ユーザーが自分の理由でブートローダを自分のものと交換できることです。

すべてのマイクロコントローラがそれ自身のフラッシュをプログラムできるソフトウェアを持つことができるわけではありませんが、チップベンダーが提供するものがあれば、ユーザは提供するチップベンダーとは関係なく独自のブートローダを作成できます。

ARM Cortex-M および SWD 状況が変わりつつあります。いくつかのチップはSWDのみであり、工場オプションの他のチップはありません。 Atmel SAM D21 を入手しました。彼らはもはや SAM-BA ブートローダを持っていないので、彼らはあなたにソースを提供しますユーザーフラッシュの先頭にあなた自身のものを追加することができ、それを保護するためのいくつかのレジスタがありますが、消去するのは簡単です。それだけではありません。あなただけのものを作るか、SWDを使うこともできます。

Arduino/AVRの世界、愛好家を見てください。それらには独自のブートローダがあり、それは無料で提供されるので、それが主要なインタフェースです。あなたはISPプログラマーを数ドル(または数十ダース)のドルで買うことができます。しかし、それまでのところ人気のあるブートローダーではなく、USBベースのプロトコルを使用しているAVRボードが他にもいくつかあることに注意してください。これらのUSBプロトコルの中には、ベンダ間で使用されているものもあります。

一日の終わりに、あなたの顧客がそれを欲しがっているならば、そして/またはあなたのマーケティング部門は彼らのものから私たちの製品を区別するためにそれを使うことができます。何故なの?勝ちます。

この質問に対する正しい答えは誰にもありません。それはすべて意見に基づいています。あなたはそれぞれのチップベンダーに連絡して尋ねることができますが、答えている人々は彼らの意見を述べようとしています、彼らはおそらくその機能を追加した人々を知らなかったり話したりしませんでした。この質問に対する答えはありません。

0
追加された

趣味の視点もあげるために:

ハードウェアの追加や低レベルの知識を必要としないため、作業がはるかに楽になります。私が使った極端な例の1つは粒子フォト(所属なし)です。これはクラウド上でフラッシュされる可能性があります。このチップをフラッシュするのに必要な唯一のものは以下のとおりです。

  • 電力供給
  • WLAN
  • インターネット接続
  • ソフトウェアを書くための他の1台のコンピューター

それはプロセスをかなり安価にし、実際には非プロの観点からは非常に単純です。

0
追加された