ArduinoがAVRを使用しているのはなぜですか?それらは公式のプロセッサであることは理解していますが、コスト以外のコードをARMやフリースケールアーキテクチャに移植できない理由はありませんか?オンボードメモリがある限り、これらの部分に簡単に移行できると考えました。
業界には多くのARMが存在し(すべてのベンダーが設計に取り組んでいるようです)、Arduino開発者の世界にこれほど受け入れられないのはなぜだろうと思っていました。
ArduinoがAVRを使用しているのはなぜですか?それらは公式のプロセッサであることは理解していますが、コスト以外のコードをARMやフリースケールアーキテクチャに移植できない理由はありませんか?オンボードメモリがある限り、これらの部分に簡単に移行できると考えました。
業界には多くのARMが存在し(すべてのベンダーが設計に取り組んでいるようです)、Arduino開発者の世界にこれほど受け入れられないのはなぜだろうと思っていました。
回答:
誰もあなたが開発しているものを気にしますか?
はいといいえ。私は特定のプロジェクト向けにAVR32で開発を行ってきましたが、開発環境(特にコンパイル/プログラム/デバッグサイクル)は、たとえばPIC32と比較してすさまじいものです。
顧客は、コストとメンテナンスを除いて気にしません。そして、arduinoのようなシステムの場合、arduino環境と開発サイクルは現在のAVR32セットアップよりも飛躍的に優れているため、プログラマは気にしません。
ArduinoファミリのAVRには非常に強力な条件があるので、私はただ疑問に思います。それらは公式のプロセッサであることは理解していますが、コスト以外のコードをARMやフリースケールアーキテクチャに移植できない理由はありませんか?オンボードメモリがある限り、これらの部分に簡単に移行できると考えました。
別のプロセッサを使用できなかった理由はありませんが、ARM、MIPS、PowerPCなどのデバイスではなくローエンドの8ビットデバイスを選択した非常に良い理由があります。使いやすさ。
ローエンドアームのセットアップを見た場合、8ビットプロセッサよりもはるかに複雑です(メモリマッピング、キャッシュなど)。さらに重要なのは、当時はDIPアームプロセッサがなく、これらは必ずしも48ピンのTQFPでさえ快適だと感じる電子技術者やエンジニアではなく、アーティストやハッカーによって使用され、構築されることを意図したものでした。
AVRがPICよりも選ばれた理由は、とりわけPICには広く使用されているオープンソースの無料Cコンパイラーがないことです(SDCCポートは成熟していません)。
業界には多くのARMが存在し(すべてのベンダーが設計に取り組んでいるようです)、Arduino開発者の世界にこれほど受け入れられないのはなぜだろうと思っていました。考え?
これは主に、使いやすさ、複雑さ、はんだ付けの容易さ、コスト、およびそれほど必要ではないという事実によるものです。開発者は多くのパワーを持っているという考えを好みますが、必要なのはサーボを動かし、ローエンドのFFTでいくつかのライトをフラッシュするだけでよいので、8ビットプロセッサで十分です。
28ピンパッケージで出てくるローエンドの皮質ARMSでも、DIPではなくSOICです。
そのため、AVRにはすべての適切な機能がありました。
大部分はこれはまだ真実です-ディップ形式のARMを知らないので、アダプターによりAVRよりもかなり高価になります。ほとんどの場合、メーカーは、DIPパッケージの32ビットプロセッサが非常に有益になるとは考えていません。
アームの開発が近づいています-以下のプロジェクトをご覧ください。
そして今、DIPパッケージのARM。
あなたは意見を求めているように見えるので、ここに私の$ .02があります。ARMで作業しているかAVRで作業しているかは重要です(したがって、私は気にします)。AVRが理にかなっているユースケースがあり、ARMがそうする場合があります。一般に、たとえばAVRとPICの間にはトレードオフがあります。
まず最初に、私はおそらくこれを言うのに苦労するでしょうが、「Arduinoファミリーの強力なコンティンジェント」はボーカルマイノリティのようなものです。私が出会ったほとんどのarduinoの人々(ユーザー)は、多くの場合、彼らよりも複雑な複雑さの理解の低いレベルで、何か面白いことをするためにPythonスクリプトを作成するのと同じようにハードウェアを扱う人です彼らが "numpy import fooから"するときに持っているでしょう。Arduinoのやり方にはいくつかのメリットがありますが、批判の余地もたくさんあります。
Arduinoエコシステムとは別に、AVRを見る価値があると思います。Arduinoの部隊は、AVRを趣味の事物の事実上の標準にした理由からも大きな恩恵を受けました-arduinoが登場する前からPICからますます引き継いでいるマントル。AVRの直接の競争相手はPICであり、ある程度はMSP430であり、これは主にTIの強力なマーケティングプッシュとその補助金ツールのおかげで勢いを増しています。
他の回答で述べたように、AVRは、無料ツールを使用してゼロからハローワールドに到達するためのクリーンで標準化された方法を持つ1つのファミリです。avr-gccポート、winavrツールチェーンを構成する要素、さまざまな複雑さと機能を備えた多数のプログラマ回路図ですが、それでもavrdudeによってサポートされていることから派生した権限にバインドされているため、ツールチェーンを機能させるよりもはるかに簡単です。
PICのエコシステムは悪夢であり、任意の数のコンパイラ、プログラミングツール、アセンブラなどがあります。それらの多くは互いに互換性がありません。それらのほとんどは支払われます。すべてが良いわけではありません。さらに重要なことは、デファクトスタンダードがないことです。フリー/オープンソースの代替案(たとえば、SDCC)には多くの要望が残されていますが、それ以上に、avr-gccやcompany haveのような事実上の標準のステータスを獲得できていません。ソフトウェアツールチェーンがうまく機能したとしても、少なくとも何らかのプログラマーに投資する必要があります。PICkitの価格は20ドル程度ですが、オンラインでの購入方法(クレジットカード、国際配送、外国為替の手間)を把握する必要がある場合、愛好家にとってブレイクブレークになる可能性があります。良くない
MSP430の方がわずかに優れていますが、その主な理由は、その新しい(人気の点で少なくとも)-競合するノイズがはるかに少ないためです。TIは、ICサンプルを効率的に出荷しています。mspgccは正常な状態にあり、オープンソースのデバッグソフトウェアでさえ、見つけることもセットアップすることも難しくありません。ただし、問題は、AVRほど愛好家ではないということです。あなたはまだプログラマの問題を抱えています。それはあなたがPICのために買う必要があるよりも高価です。3.3vの電源供給操作は、5v Logicに慣れている人々に認識されている障壁を立てます。また、DIPではスケーリングしません-ローエンドのものは利用可能ですが、より肉付きの良いチップに到達した後ではありません。
DIP対SMDは、しばしば信じられているよりも重要な違いだと思います。DIP ICは、ブレッドボード、汎用ボードなど、どこに住んでいるとしても使用できます。SMD ICには、製造の実行、または必要なサイズまたは形状で入手するのが必ずしも容易ではないアダプターボードの購入が必ず必要です。
データシートの品質、アプリケーションノート、およびそれらの可読性も違いを生みます。Atmelはその点でわずかに良い仕事をしているようです。もちろん、それは非常に主観的な評価です。
AVRは内部RCを使用できますが、PICは多くの場合使用しません。彼らは必要と信頼の不足と組み合わせたとき、それは少しdiceyなり結晶を、。
また、AVRは数年前のPICと比較してインシステムプログラミングに適しているように見えましたが、私は非常に簡単に間違っている可能性があります。
ただし、質問はAVR対ARMに関係していました。冒頭で述べたように、AVRとARMはスペクトルの異なるスペースを占有します。AVRでできることがあるのに、なぜARMでそれをしたいのですか?ARMはより高価で、より多くの部品数を必要とし、より多くのエネルギーを消費し、より複雑なコードを作成し、より高価な製造プロセスを必要とします。100ピンTQFPのはんだ付けは、コストの測定方法によっては、40ピンDIP / SOICのはんだ付けよりも高価です。大量に生産し、それに適した生産技術を使用している場合、これは当てはまらない可能性がありますが、それを行う場合、価格差はより安価なソリューションを採用することでさらに魅力的になります。
家の周りの一般的なハッキングやあなたが持っているもののための頼りになるコントローラーとして、私はAVRが使いやすいと言います:-趣味の観点からより標準化され、あまり多くないのでインターネットからより多くのコードを再利用できますコンパイラのバリエーション、およびファミリメンバー間のレジスタ名とAPIのバリエーション。(LPC ARMコードをATMEL ARMハードウェアに移植してみてください。意味がわかります)-コードは本質的に複雑になります(実際にそうなります)。-ツールチェーンは、セットアップに追加の作業が必要です。-インターフェースをわずかに簡単にします。通常、ARMを使用すると、3v3または1v8ロジックにドロップダウンし、他のおもちゃとのインターフェイスが若干問題になります。-安い-地元のハードウェアストアでARMチップを入手することは、私が住んでいる場所では選択肢ではなく、AVRを入手することです。
Arduinoに対するコミュニティの大きな関心の理由の一部は、物理的な標準化です。物理的なレイアウトと同じくらい厄介なことですが、標準化された拡張オプションを含めることにより、Arduino開発者は人々が独自のソリューションを思い付くことができました。ベースのArduinoボードを、別のマイクロコントローラーを使用する別のボードに交換する場合は、可能です。IIRC、誰かがすでにArduinoフォームファクタを使用するPICベースのボードを構築しています。(PIC Ardunioボードには同じフォームファクターはありませんが、その他の点では類似しています。)
Arduinoが成功したもう1つの理由は、その開放性にあります。ほとんどのPICベースのマイクロコントローラーは閉じられていました。独自のハードウェア実装を使用していたため、特定のスペースにより適合するようにボードを再設計したい場合、運が悪かった。カスタムファームウェアと独自の開発ツールを使用していたため、バグがあったり機能を拡張したい場合は運が悪かったのです。Arduinoを使用すると、パズルのすべてのピースが開かれます。パーツをどこでも購入し、必要に応じて再配置し、ファームウェアと開発ツールを改善または変更できます。Arduino IDEを使用して簡単に開始できますが、必要なときにいつでもCまたはアセンブリに移行できます。
個人的に、私はArduinoが好きなのは、それが「ちょうどいい」多くのものを手に入れるからです:高価すぎず、独自のツールに縛られず、簡単に始められ、多くの機能を持ち、大きなユーザーコミュニティを持っています、拡張を続け、きちんとしたことを行います。
ATmel uCの主な利点は、Linux、PC、およびMacで利用できる無料のコンパイラがあることです。それにシンプルなクロスプラットフォームGUIを追加すれば、すべてのプラットフォームで実行できる無料の開発システムが手に入ります。
コストは、趣味のボードにとって大きな要因です。スターター価格を30ドルの範囲にしたいので、数ドル以下のuCコストが必要です。
ARMは、ハイエンドボードの優れた候補者です。多くの企業がARMコアのライセンスを取得し、周辺機器を追加しています。Linux、PC、およびMAC用の無料のコンパイラがあると思います。
私は、ハイエンドボード用のFreescale Coldfireが本当に好きです。5206eを使用するテスト機器用のボードで作業しました。いくつかのDRAMと高精度のA / DおよびD / Aコンバーターを追加しました。費用対効果の高いソリューションでした。私は最近、ColdfireをさまざまなARMと比較していません。
8ビットのFreescale uCの一部は優れていますが、無料のツールがあるかどうかはわかりません。
私はディップパッケージに同意し、アームの設定が難しいことに同意しません、lpcsはそうですが、アームブロック上の唯一の子供ではありません(その点についてはatmel自体)。私が覚えて経験したことから、Atmelは以前よりも開発者にとって使いやすいものでした。AVRバタフライは、より多くのユーザーを既に十分なサイズで満足のいくユーザーベースに導くために大いに役立ちました。PICは多くの点で苦痛でした。avrツールがあり、プログラミングは簡単で、いくつかのワイヤとラジオ小屋からのコネクタよりも多くの費用はかかりませんでした。ツールは無料でありますが、腕と親指のソリューションを見つけるメインラインgccほど簡単ではありません。arduinoが登場するずっと前から、AVRは趣味のプロジェクトに最適なチップでした。
現在、ARMと競合できるものはありません。1日のうちに触れる他のプロセッサでは、少なくともいくつかのARMに触れます。あなたが触れるほとんどすべてのものはARMを使用しています。8ビットキラーとしては自然にフィットし、同じサイズ、価格などで8ビットよりもはるかに優れたパフォーマンスを得ることができます。ツールははるかに優れており、命令セットは競合他社のほとんどよりもきれいであるため、同じコードが実行されます誰でも、兄弟がARMを埋め込むことができ、pic、avr、msp430などの会社に固定されていないため、多種多様なソリューションがあり、マイクロコントローラROM / RAM混合物を扱うさまざまな方法があります。割り込みベクターテーブル。悲しいことに、より一般的なソリューションが最も苦痛です。sam7またはそのようなものまたはステラリスをお試しください。
問題となるのは常にプロセッサではなく、一部のチップには既知の問題があり、一部のチップには他の既知の問題があります。弱いプルアップを備えたオープンコレクタioピンを提供しないものもあれば、何かのインターフェイスとなるハードウェアをチップの外側に配置しなければならない場合もあります。低消費電力が必要な場合にmsp430を簡単に使用できるように、さまざまな企業やソリューションを試してフィールドをサンプリングすることをお勧めします。他の人は、可能であれば、arduinoに基づいてガレージを構築します。
しかし、あなたの質問の一番下の行は、あなたのアプリケーションとそれをどのように書くか、そしてあなたが興味を持っているパフォーマンスとリソースに本当に依存しているということです。さまざまなマイクロコントローラーで実行するCアプリケーションを作成する... IF...マイクロコントローラー固有の抽象化レイヤーがあり、それにはコストがかかります。マイクロコントローラに十分な機能があり、必要な機能を備えている場合、事前に計画してそれらを組み込みます。次のプラットフォームに十分なメモリ/リソースがある場合。パフォーマンスなどよりも移植性に関心があります。おそらく、事前にこれを計画する必要があります。または、少なくともAからBへの最初のスイッチでソフトウェアを再設計します。BからCへの3番目のスイッチがある場合、または痛みがない場合です。
他のコメントで取り上げられていないいくつかの小さな点:
Arduinoは小規模なI / Oプロジェクトを対象としており、回路に少量のインテリジェンスを追加します。通常、これらはシングルスレッドのリアルタイムデバイスであり、ARMは非常に無駄になります。もちろん、ARMボードには多くのオプションがありますが、ユースケースは通常異なります。通常、フルスケールのオペレーティングシステムで起動します。
この小規模なユースケースを対象とすることで、ピンカウント、サポートコンポーネント、電力消費など、他のすべてが簡単になります。
とは言っても、Arduinoのターゲットユースケースでは、それをスラム化するようなものではありません。16MHzのプロセッサは、統合されたLEDチェイサー(または何でも)を備えた目覚まし時計にはうんざりです
2回目の試行(+3年前の元の投稿タイトルと質問は、元の回答以降に変更されました):
ニワトリと卵ですが、特にここ数年(2007 ARMがCortex-Mアーキテクチャを開始)で、32ビットMCUの人気が高まり、ベンダーは8を超える設計でEEコミュニティにより速く簡単にアクセスできるようになりました。ビットマイクロ(より良いswツール、無料ツール、その他の例...)。
Atmelは、他の100個とともにCortex-Mデバイスも提供し、AVRからARMへのサポートに加えてツールチェーンをアップグレードし、さらに長年の関係を維持しているため、Arduinoのアップグレードパスが提供されます(?)。しかし、選択肢がポップアップし、「趣味」ケーキのシェアを獲得するための代替の試みを含むように見えます。 。
最初の質問から3年後の最終的な考え:すべてのベンダーが32ビットCortex-Mコアを提供するとき-Arduinoは実際に非Atmelになる可能性がありますか?
元の回答:Atmel AVRの共同設立者の1人であるAlf-Egil Bogenは、ビデオブログhttp://blog.energymicroで、8ビットから32ビットARMコアへの業界の移行の背景について調べています。 COM / 2013/4月24日/ avr2arm /。