ArduinoでAVRが使用されるのはなぜですか?


41

ArduinoがAVRを使用しているのはなぜですか?それらは公式のプロセッサであることは理解していますが、コスト以外のコードをARMやフリースケールアーキテクチャに移植できない理由はありませんか?オンボードメモリがある限り、これらの部分に簡単に移行できると考えました。

業界には多くのARMが存在し(すべてのベンダーが設計に取り組んでいるようです)、Arduino開発者の世界にこれほど受け入れられないのはなぜだろうと思っていました。


4
あなたの市場は誰ですか?業界で大きなものを販売しようとしているなら、ARMが必要です。なぜなら、ATMが失敗しても、AVRを使用している場合は何も残っていないからです。ARMには、ドロップインに近い代替品を提供する他の多くのベンダーがあります。ARMの複雑さの増大は、基本を知らない愛好家よりも優れたエンジニアにとってはそれほど問題ではありません。あなたが愛好家に販売している場合、学習曲線はあまりにも急になり、プロセッサのパワーは使用されなくなり、SMTは想像上のレンガの壁になります。趣味の顧客や潜在的な雇用主について誰を心配していますか?Pls。明らかにする。
ケビンフェルメール

9
私は攻撃的になろうとはしていませんが、質問は尋ねられます。Atmelは25年以上の歴史を持ち、ARM以外の市場で大きな成功を収めています。AVR自体は非常に成功したプラットフォームです。そのような会社がダウンする可能性は何ですか。これは、「ウィンドウを使用しないでください。MicroSoftがダウンした場合はどうなりますか?」
Rick_2047

私はあなたの他の2つのポイントに同意します。すなわち、もしあなたが趣味市場を持っているなら、ARMのフルパワーが利用され、SMTがレンガの壁である可能性はまれです。
Rick_2047

2
SAM3XE(ARM 32ビット)uCを搭載したArduino Dueはありませんか?、私は今、私の手でものを持っているので...
Doombot

1
「最近」では、Arduino(ライブラリおよびIDE)を使用してプログラムできるARMベースのボードが実際にあることに注意してください。Teensy 3.2は、この優れた例です。sparkfun.com/products/13736
ポール

回答:


32

誰もあなたが開発しているものを気にしますか?

はいといいえ。私は特定のプロジェクト向けに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にはすべての適切な機能がありました。

  • はんだ付けが簡単
  • 世界中の通販で簡単に入手できます
  • 無料のGCC Cコンパイラ
  • プロセッサと周辺機器のセットアップと使用法を理解しやすい
  • 安いです
  • ユビキタス-AVRファミリーを取り巻く多くの人々と経験

大部分はこれはまだ真実です-ディップ形式のARMを知らないので、アダプターによりAVRよりもかなり高価になります。ほとんどの場合、メーカーは、DIPパッケージの32ビットプロセッサが非常に有益になるとは考えていません。


1つは、Parallax Propellerです。チップ上に8つの32ビットCPUがあり、DIL、QFP、およびQFNパッケージで提供されます。
レオン・ヘラー

5
これはスポットオンです。ライセンスによるPIC上のAVR、およびソフトウェアとツールチェーンのシンプルさとはんだ付け能力によるARM上のAVR。あなた自身のプロジェクトでは、これは当てはまらないかもしれません。ただし、ARM-duinoを開発する場合は、他の同様のプロジェクトをご覧ください。彼らはAVRが持っているようにキャッチしません。これは、Arduino開発環境が原因である可能性もあります。
ケビンフェルメール

使用しているAVR32ツール-私はAVR32とMSPの両方でIARを使用していますが、この環境は非常に有能であることがわかりました。コストは、プロの環境では問題になりません。1週間エンジニアを雇うコストよりも少ないです。
uɐɪ

ツールに関するこの主張は克服することができます-Arduinoは、AVR32ポートも利用可能なgccを使用します。
クリスストラットン

1
NXPには、DIPパッケージにいくつかのCortex-M0 ARMが含まれています。私はLPC11xxファミリーからだと思います。彼らのターゲット市場は、非常に安価で低品質の片面PCBであり、家電製品であると思います。
マルコ


16

あなたは意見を求めているように見えるので、ここに私の$ .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はスペクトルの異なるスペースを占有します。AVRでできることがあるのに、なぜARMでそれをしたいのですか?ARMはより高価で、より多くの部品数を必要とし、より多くのエネルギーを消費し、より複雑なコードを作成し、より高価な製造プロセスを必要とします。100ピンTQFPのはんだ付けは、コストの測定方法によっては、40ピンDIP / SOICのはんだ付けよりも高価です。大量に生産し、それに適した生産技術を使用している場合、これは当てはまらない可能性がありますが、それを行う場合、価格差はより安価なソリューションを採用することでさらに魅力的になります。

家の周りの一般的なハッキングやあなたが持っているもののための頼りになるコントローラーとして、私はAVRが使いやすいと言います:-趣味の観点からより標準化され、あまり多くないのでインターネットからより多くのコードを再利用できますコンパイラのバリエーション、およびファミリメンバー間のレジスタ名とAPIのバリエーション。(LPC ARMコードをATMEL ARMハードウェアに移植してみてください。意味がわかります)-コードは本質的に複雑になります(実際にそうなります)。-ツールチェーンは、セットアップに追加の作業が必要です。-インターフェースをわずかに簡単にします。通常、ARMを使用すると、3v3または1v8ロジックにドロップダウンし、他のおもちゃとのインターフェイスが若干問題になります。-安い-地元のハードウェアストアでARMチップを入手することは、私が住んでいる場所では選択肢ではなく、AVRを入手することです。


1
工場テストの一部としてヒューズビットが事前にプログラムされた一部のOTP部品を除き、PICを思い出しません(LP、XT、またはHSモードが機能したことを確認する唯一の方法は、そのモード用にチップを構成することでした)それには水晶が必要でした。RCモードを使用するには外部抵抗とキャップが必要なものもあり、生成する周波数についてかなり大まかな仕様がありましたが、内部または外部RCの設計オプションがないPICを思い出せません。忘れたことがありますか?
supercat

実際には、ARM / AVRのコストは、同等のリソースを使用するためのコストにかなり近いです。また、プロダクション設定で使用されるパッケージは、QFPまたはQFNのいずれかのバリアントである可能性が高いため、必ずしもそれほど違いはありません。必要なサポート回路も同様です。
クリスストラットン

@Chris:各チップが提供するリソースを考慮すると、ARMはほとんど毎回安くなると思います。とはいえ、ポイントは、実稼働環境でAVRが理にかなっている状況では、ARMがテーブルにもたらす馬力や機能を必要としないということです。利用可能なリソースの代わりに利用されたリソースで重み付けされると、AVRは安価になります。サポート回路は同等ではないと思います(4に対して1のタンタルコンデンサ、および他の同様のスパイラル)。ARMは、やりすぎになるほど高価な獣ではありません。
チンタラギリシャシャンク

@supercat:たぶん。確認する必要があります。私がそれを見た数回、それは私には決して明らかではなかった。少なくとも一部のdsPICは、正しく設定すれば内部にフォールバックできることを知っていますが、それでも少し推測し、だまして発見する必要がありました。マイクロチップ社のデータシートには、IMOのように多くの要望が残されていますが、繰り返しますが、あなたが見ている市場によって異なります。
チンタラギリシャシャンク

@ChintalagiriShashank-他の周辺機器を無視し、フラッシュとラムのサイズを見るだけで、たとえばATMEGA328pとかなり競争力のあるARM製品があります。また、バイパスキャップに気を取られないようにしてください。1つは、タンタルは供給フィルターとして理にかなっていますが、実際のバイパスキャップは、高周波スイッチングの要件に対してより低い値のローカルリザーバであるため、安価なSMTセラミックになります。また、ニーズを駆り立てるものはクロックとI / Oスイッチング周波数です。同等のクロックレートでは、ARMは推奨されるすべてのバイパスキャップを実際に必要としません。
クリスストラットン

12

Arduinoに対するコミュニティの大きな関心の理由の一部は、物理的な標準化です。物理的なレイアウトと同じくらい厄介なことですが、標準化された拡張オプションを含めることにより、Arduino開発者は人々が独自のソリューションを思い付くことができました。ベースのArduinoボードを、別のマイクロコントローラーを使用する別のボードに交換する場合は、可能です。IIRC、誰かがすでにArduinoフォームファクタを使用するPICベースのボードを構築しています。(PIC Ardunioボードには同じフォームファクターはありませんが、その他の点では類似しています。)

Arduinoが成功したもう1つの理由は、その開放性にあります。ほとんどのPICベースのマイクロコントローラーは閉じられていました。独自のハードウェア実装を使用していたため、特定のスペースにより適合するようにボードを再設計したい場合、運が悪かった。カスタムファームウェアと独自の開発ツールを使用していたため、バグがあったり機能を拡張したい場合は運が悪かったのです。Arduinoを使用すると、パズルのすべてのピースが開かれます。パーツをどこでも購入し、必要に応じて再配置し、ファームウェアと開発ツールを改善または変更できます。Arduino IDEを使用して簡単に開始できますが、必要なときにいつでもCまたはアセンブリに移行できます。

個人的に、私はArduinoが好きなのは、それが「ちょうどいい」多くのものを手に入れるからです:高価すぎず、独自のツールに縛られず、簡単に始められ、多くの機能を持ち、大きなユーザーコミュニティを持っています、拡張を続け、きちんとしたことを行います。


1
マイコン愛好家がArduinoを好む非常に良い理由を挙げましたが、質問はARM対AVRについてでした。Arduinoは、実装にAVRシリーズのMCUを選択するという決定により言及されました。あなたの投稿の下にもっと関連する答えがあると思います。たとえば、AtmelがCコンパイラでAVRシリーズをサポートしているという事実。それにもかかわらず、Arduinoに不慣れな人にとっては良い情報です。
-ozmo

7

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の一部は優れていますが、無料のツールがあるかどうかはわかりません。


4
有用なコメントをありがとう、しかし、「署名」の8行は少し極端です、これらのstackoverflowベースのサイトは、あなたの答えであなた自身のサイトを宣伝することを軽視する傾向があります。
davr

5
@jluciani、他のウェブサイトを宣伝したい場合は、回答ではなくプロフィールにリンクを入れてください。結局のところ、あなたのブログはこの質問に対する答えではありません...
クレイグトレーダー

5

私はディップパッケージに同意し、アームの設定が難しいことに同意しません、lpcsはそうですが、アームブロック上の唯一の子供ではありません(その点についてはatmel自体)。私が覚えて経験したことから、At​​melは以前よりも開発者にとって使いやすいものでした。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番目のスイッチがある場合、または痛みがない場合です。


現在、ARMと競合できるものはありません。<-業界内。趣味の世界では、AVRはまだ非常に強力であり、今後も長く続くでしょう。
ケビンフェルメール

ある世界が非常に人気があり、別の世界は偶然に私たちがタッチして使用する製品があり、お金がどこにあるか、別の世界であることに絶対に同意します。だから、自宅での楽しみのために一方を学び、あなたの仕事のために他方を学び、そして一日中、一晩中プレイするようになります。
old_timer

4

あなたが「コスト以外」と言ったことは知っていますが、それは本当に愛好家にとって最も重要なことです。安価で汎用的なプラットフォームであるために、複数のUARTや複数のSPIは必要ありません。20mhz以上の速度が必要になったら、カスタムセットアップを見てください(もちろん、ymmv)


3

他のコメントで取り上げられていないいくつかの小さな点:

  • Arduinoは小規模なI / Oプロジェクトを対象としており、回路に少量のインテリジェンスを追加します。通常、これらはシングルスレッドのリアルタイムデバイスであり、ARMは非常に無駄になります。もちろん、ARMボードには多くのオプションがありますが、ユースケースは通常異なります。通常、フルスケールのオペレーティングシステムで起動します。

  • この小規模なユースケースを対象とすることで、ピンカウント、サポートコンポーネント、電力消費など、他のすべてが簡単になります。

とは言っても、Arduinoのターゲットユースケースでは、それをスラム化するようなものではありません。16MHzのプロセッサは、統合されたLEDチェイサー(または何でも)を備えた目覚まし時計にはうんざりです


2

Arduino 他のプロセッサで利用できます。たとえば、MicrochipからChipKitをチェックしてください。PIC 32を使用します。


オーリン、申し訳ありませんが、タイトルは質問を編集しようとする私の誤った試みであり、その本文から作成されました。今はもっと正しいはずです。
クラバッキオ

1

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 /

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.