32ビット48〜96 Mhzマイクロプロセッサの利点(Arduino Dueなど)


10

そうですArduinoのため(32ビット、84 MHzの、ARMのCortex-M3-ベースSAM3X8E)が本日リリースされました。

さらに、明らかにこのカテゴリには無数のプロセッサ(32ビット/ 48〜96 Mhz / ARM)と対応するプロトタイピングボードがあります。

  • NXP LPC1768 / mBed
  • STM32 /ディスカバリー
  • PIC32 / ChipKit
  • PIC32 /パララックスプロペラ
  • LM4F120 / TI Launchpad

私は、これらの「中間」のマイクロプロセッサの魅力を理解しようとしています。これは、ローエンドのAVR / MSP430 /の間にあるように見えます。(長所:安価、低電力、省スペース)およびハイエンドのARM7 / etc(長所:1秒あたりの命令数がはるかに多い)。

32ビット/ 48〜96 Mhz / ARMベースのマイクロプロセッサはどのような状況または方法で適切な選択肢ですか?具体的には、ローエンドの8ビットマイクロコントローラーまたは非常にハイエンドのARM7プロセッサーのどちらよりも、設計時にどのアプリケーションまたはどのパラメーターが優れた選択になるか疑問に思っています。


第一に、Arduinoが処理できなかったライブビデオストリームを処理できると思います。また、高度な暗号化アルゴリズムまたはハッシュ(Arduinoよりも速くて簡単)も可能です。Arduinoが32ビットプラットフォームで登場したことに驚いていますが、それは単にあなたを示しているだけです。リレーを制御する以上のことをしたい人もいます。Arduinoにとって素晴らしい日です!
Piotr Kula

接続された特別な機能コアで実行しない限り、100 MHz未満のプロセッサで簡単なライブビデオ処理を実行することはできません。そして、特にこれらのデバイスのかなり制限されたオンボードRAMにはありません。より現実的な点は、これらのチップのコストが8ビットパーツのコストよりも実質的に高くないことです。実際には、同等のフラッシュとRAMを備えたATMEGAよりも低い場合があります。
Chris Stratton

3
私の知る限り、Parallax PropellerはPIC32とは関係のないカスタムチップです。接続のためのソースはありますか?
AndrejaKo 2013

回答:


12

これは非常に議論されるようになることができるそれらの主題の一つです。非常に多くの異なる視点があり、異なる事柄は異なる人々にとって重要です。包括的な答えを出そうと思いますが、常に反対する人がいることを理解してください。私に同意しない人は間違っていることを理解してください。(冗談だ。)

概要:

この回答は長くなるので、前もってまとめておきましょう。大多数の人々にとって、最新のARM Cortex-M0 / M3 / M4チップが最高のソリューションとコストに最適な機能を提供します。これは、これらの32ビットMCUをPICやMSP430などの8ビットおよび16ビットの祖先と比較する場合にも当てはまります。M0は1米ドル未満、M4は2米ドル未満で購入できるため、価格に非常に敏感なアプリケーションを除いて、ARMソリューションは非常に優れています。M0は非常に低い電力であり、ほとんどの人にとって十分なはずです。電力に非常に敏感な人にとっては、MSP430がより良い選択かもしれませんが、M0はこれらのアプリケーションでさえ検討する価値があります。

より詳細な分析に興味がある場合は、次に進んでください。それ以外の場合は、ここで読むのをやめてください。

次に、各領域を見て、異なるMCUを比較します。

実行速度

もちろん、32ビットMCUはより高速になります。彼らはより速いクロック速度を持つ傾向がありますが、それらのクロックのそれぞれにより多くの仕事をします。ARM Cortex-M4のようなMCUにはDSP処理命令が含まれており、ハードウェアで浮動小数点をサポートすることもできます。8ビットと16ビットのCPUは32ビットの数値で動作できますが、これを行うのは効率的ではありません。これを行うと、CPUレジスタ、CPUクロックサイクル、およびプログラムストレージ用のフラッシュメモリがすぐに消費されます。

開発のしやすさ

私の意見では、これは最新の32ビットMCUを使用する最も価値のある理由ですが、最も評価されていない理由でもあります。まず、これを8ビットPICと比較します。これは最悪のケースの比較ですが、私のポイントを説明するのにも最適です。

より小さいPICは基本的にプログラミングがアセンブリ言語で行われることを必要とします。確かに、8ビットPICでもCコンパイラを使用できますが、これらのコンパイラは無料または優れています。良質で無料のコンパイラを入手することはできません。コンパイラの無料バージョンは、その最適化が「Pro」バージョンほど良くないという点で不自由です。Proバージョンは約1,000ドルで、PICチップの1つのファミリ(8、16、または32ビットチップ)のみをサポートします。複数のファミリーを使用する場合は、別のコピーを購入して、さらにUS $ 1,000購入する必要があります。コンパイラの「標準」バージョンは、中程度の最適化を行い、チップファミリごとに約US $ 500のコストがかかります。8ビットPICは最新の標準では低速であり、適切な最適化が必要です。

比較すると、無料のARM MCU向けの優れたCコンパイラが多数あります。制限がある場合、それらの制限は通常、サポートされているフラッシュメモリの最大サイズにあります。Freescale Codewarriorツールでは、この制限は128Kバイトです。これは、このフォーラムのほとんどの人にとって十分です。

Cコンパイラを使用する利点は、CPUのメモリマップの低レベルの詳細に(それほど)煩わされる必要がないことです。PICのページングは​​特に苦痛であり、可能な限り回避するのが最善です。別の利点は、8ビットMCU(または16ビットMCUの32ビット番号)で16ビットと32ビットの番号を処理する煩わしさを気にする必要がないことです。アセンブリ言語でこれを行うのはそれほど難しいことではありませんが、後からの苦痛であり、エラーが発生しやすくなります。

正常に動作する他の非ARM Cコンパイラがあります。MSP430コンパイラは妥当な仕事をしているようです。サイプレスPSoCツール(特にPSoC1)にはバグがあります。

フラットメモリモデル

RAM /レジスタ/フラッシュをページングしているMCUは、愚かです。はい、8ビットPICについて話しています。ばか、ばか、ばか。そのため、PICをあまり気にしなかったので、PICの新しい機能を確認することすらしませんでした。(免責事項:これは、新しいPICが改善される可能性があることを意味し、私はそれを知りません。)

8ビットMCUでは、256バイトを超えるデータ構造にアクセスすることは困難です(不可能ではありません)。64 kbyteまたはkwordに増加する16ビットMCUを使用。最大4ギガバイトの32ビットMCUを搭載。

優れたCコンパイラは、これをプログラマ(別名You)から隠すことができますが、それでもプログラムのサイズと実行速度に影響を与えます。

これが問題にならないMCUアプリケーションはたくさんありますが、もちろんこれに問題がある他の多くのアプリケーションがあります。これは主に、RAMまたはフラッシュで必要なデータ(配列と構造)の量の問題です。もちろん、CPU速度が上がると、より大きなデータ構造を使用する確率も上がります!

小包のサイズ

いくつかの小さなPICと他の8ビットMCUは、本当に小さなパッケージで利用できます。6ピンと8ピン!現在、私が知っている最小のARM Cortex-M0はQFN-28です。QFN-28は、ほとんどの人にとって十分に小さいですが、すべての人にとって十分に小さいわけではありません。

費用

最も安いPICは、最も安いARM Cortex-M0の価格の約3分の1です。しかし、それは実際にUS $ 0.32対US $ 0.85です。はい、その価格差は一部にとって重要です。しかし、私はこのウェブサイトのほとんどの人がそのわずかな費用の違いを気にしていないと思います。

同様に、より多くの機能を備えたMCUをARM Cortex-M0 / M3 / M4と比較すると、通常、ARM Cortexは「ほぼ均等」または上位に出ます。他のもの(開発の容易さ、コンパイラーのコストなど)を考慮に入れると、ARMは非常に魅力的です。

2番目の要約

なぜでしょう:私は、本当の問題があると思いませ ARMのCortex-M0 / M3 / M4を使うのか?絶対的なコストが非常に重要な場合。超低消費電力が重要な場合。最小のパッケージサイズが必要な場合。速度が重要でない場合。しかし、ほとんどのアプリケーションでは、これらのどれも適用されず、ARMが現在のところ最良のソリューションです。

低コストを考えると、ARM Cortexを使用しない正当な理由がない限り、それを使用することは理にかなっています。これにより、他のほとんどのMCUよりも頭痛が少なく、設計マージンが大きくなり、開発時間を短縮して簡単にすることができます。

他にもARM以外のCortex 32ビットMCUを利用できますが、それらの利点もわかりません。標準のCPUアーキテクチャを採用することには、より優れた開発ツールやテクノロジのより迅速な革新など、多くの利点があります。

もちろん、状況は変化する可能性があり、変化します。私の言っていることは今日は有効ですが、今から1年または1か月たっても有効ではない可能性があります。宿題は自分で。


1
ARMで任意のメモリ位置にアクセスするには、最初にレジスタの4K以内のアドレスをレジスタにロードする必要があります。多くのI / Oデバイスには、4Kを超えるアドレス空間が割り当てられています。対照的に、18Fxx PICは、バンクの状態に関係なく、単一の命令でほとんどのI / Oロケーションを直接操作できます。ほとんどのRAMがバンクされる方法はやっかいですが、特定のタイプのビットバンギング(PICアーキテクチャが1970年代に設計された目的)の場合、PICアーキテクチャは非常にうまく機能します。
スーパーキャット2012年

1
ちなみに、1970年代の人気のある8ビットマイクロプロセッサは任意に配置された256バイトのデータ構造を効率的に処理でき、人気のある16ビットプロセッサは16に配置された65,536バイトのデータ構造でうまく機能することが興味深いバイト境界または任意にアラインされたデータ構造とほぼ同じ大きさの新しい8ビットおよび16ビットプロセッサでは、ページ/バンク境界にまたがる効率的なコードを書くことが困難になります。
スーパーキャット2012年

@supercat「LDR / SRT即時オフセット」命令の4Kアドレス範囲はtrueですが、多くの場合問題はありません。他のコメントには同意しません。Freescale M4のドキュメントを見ると、各ペリフェラルは4Kを超えるアドレス範囲を占有しないため、そのペリフェラル内のすべてのレジスタにアクセスするには、単一の「ベースアドレスポインタ」で十分です。また、32個の汎用レジスターがあり、そのいずれもベースアドレスポインターとして使用できます。そのため、コードの同じセクションで複数のペリフェラルにすばやくアクセスするのは比較的簡単です。

1
@supercat 2つ目のポイントは、RISCとCISCの議論全体に触れます。ARMはRISC CPUです。つまり、最も頻繁に実行されるタスクを実行するように最適化されています。整列されていないアクセスのように、頻繁ではないタスクは、より多くの作業を必要とするか、より多くの時間を要します(CPUアーチによって異なります)。私はこれをポジティブなものであり、ネガティブなものではないと考えています。そのため、古い8ビットの価格で高速の32ビットMCUを入手しています。これらの癖があっても、私はいつかこれらのCPUの1つをPICよりも優先します。

私は間違って言った。1つのベースレジスタがペリフェラル全体を処理できないことを意味するのではなく、レジスタを各ペリフェラルに対してロードする必要があることが多かった(つまり、レジスタを常にIO_BASE_ADDRに常駐させておくことはできなかった) )。一部のタイプのコードでは、最初にレジスタをプリロードする必要なしに、「bsf LATA、4」のような命令で1サイクルでI / Oビットを設定できると、非常に便利です。私はARMが好きですが、PICでの直接I / Oマッピングは非常に優れている場合があります(他のメモリアクセスが悪すぎる場合)。
スーパーキャット2012年

3

デビッドケスナーは正しいです。以下を追加したいと思います。

  1. 8ビットMCUは、取り扱いが簡単でプロトタイピングブレッドボードに貼り付けやすいPDIPパッケージですぐに利用できる唯一のMCUです。
  2. 32ビットMCUは、実際には8ビットMCUよりも少ない電力を使用できます。20 MHZ未満の8ビットMCUがCortex M4よりも消費電力が少ないことは必ずしも当てはまりません。
  3. 8ビットMCUは、通常MCUから多くを必要としない愛好家によってしばしば使用されます。多分数百行の単純なCコードです。

最近、32ビットMCUを使用しない理由はほとんどないことに同意します。私が使用するのは、2つの理由から[8ビットMCU]だけです。PDIPパッケージの使いやすさ(はんだ付けは不要)が好きです。多くの場合、8ビットMCUが提供できる以上の電力/複雑さは必要ありません。

取引ブレーカーは、実際に利用可能なツールです。


プロトタイピング用に、LQFP用のソケットがあり、かなりうまく動作します。そしてもちろん、LQFPを手ではんだ付けすることもできます。QFN、DFN、およびBGA手作業ではんだ付けすることはありませんが、市場に出回っているすべてのローエンド32ビットMCUにはLQFPが付属しています。
ランディン2013

1

私たちは、32ビット〜80Mhz対応MCUである、比較的時代遅れのFreescale MCF52259を使用しています。

選択の理由/思考プロセスは次のとおりです。

  • 32ビットのM.Coreデバイスを置き換えるため、移植は比較的簡単でした。
  • また、既存のIDE(CodeWarrior)を使用することもできました
  • 3つのステッピングモーター、4チャネルのPWM、3つのUART、およびI2CとSPIでのステップ/方向の制御が必要でした。
  • 多くのことが起こっており(最後のポイントを参照)、そのいくつかはタイムリーに発生する必要があったため、すべてを実行するのに十分なCPUサイクルがあることを確認する必要がありました。
  • レガシーコードはM.Coreの256kフラッシュサイズと32k RAMにぶつかっていたため、フラッシュとRAMを2倍にすることで、すばやく簡単に起動して実行できるようになりました。

最近では、ハードウェアの機能(ストレージ、速度、IOなど)を仕様超過/拡張する方が、スペースを節約しない限り、コードを最適化してわずかに安い/小さいMCUに絞るよりも、費用対効果(および便宜)が高い力は大きな問題です。

私たちの場合、デバイスは半分の価格でM.Coreの仕様の2倍でした。安価なMCUに移行すると、ボードあたりのペニーを節約できるだけでなく、開発時間を多く費やし、MCUを再度変更せずに将来の開発の可能性を制限します。

100万枚のボードを構築している場合、コストエンジニアリングを行って物事を整理する価値はありますが、現状では開発時間の価値はありません。

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