マイクロプロセッサが十分に強力かどうかを確認する方法


9

誰もがrasbperry piやPCの組み込みデバイスの概念実証を開発するのが簡単であることを知っていますが、製品にマイクロプロセッサーを選択することになると、その選択で概念が機能するかどうかを確認することは困難です。最適に。

私は現在、ラズベリーpiで正常に機能しているメディアストリーミングプロジェクトを持っていますが、piはエンドデバイスとして適切であるためには、大きすぎてかさばります。また、エンドデバイスはカスタムであると記載されています。使用できるプロセッサーに自信を見つけるのに苦労しています。

プロセッサがアプリケーションを実行するのに十分強力であるかどうかを確認するための良いプロセスは何ですか?

基本的に私の要件は:

  • WiFi操作用のUSBホストまたは組み込みTCP / IPスタック
  • I2S / PCMメディアプロトコル
  • 周辺機器構成用のI2C

それらの特性を持つチップを見つけることは非常に簡単です。正直に言うと、もっと簡単なことはありません。問題は、チップが十分に高速で、処理と操作の面で高速であるかどうかを判断できることです。

LPC4337をかなり調べてみましたが、開発環境でかなりの問題が発生しているのに適しているように思います。そのため、私はまだ周りを見回しているため、Texas InstrumentsのCC3200に行き着きました。ただし、そのコントローラーは80 MHzでのみ動作し、リアルタイムメディアストリーミングに十分対応できるかどうかはわかりません。

プロセッサがアプリケーションに対して十分な速度であることを確認するためのいくつかの手順は何ですか?たとえば、80 MHzプロセッサで十分か、204 MHz以上のプロセッサが必要かどうかはどうすればわかりますか。


1
電源要件も提供する必要があると思います。
kolosy 14

これはあなたの質問には答えませんが、USB 2.0ホスト、I²S、および5つのI²Cとともに、2倍のフラッシュ(2MB)と3倍のRAM(512K)を備えた新しいPIC32MZファミリのマイクロコントローラーを検討することを検討してください。LPC4337と同じ価格のモジュール。IDE(MPLAB X)とコンパイラーは無料で試用できますが、試用期間後、必要に応じて最適化されたコンパイラーの料金を支払う必要があります(最適化されていないGCCコンパイラーは無料のままです)。Microchipには、USBおよびTCP / IPスタック用のロイヤリティフリーのライブラリがあります。
tcrosley 14

2
質問の要点を逃している人もいると思います。推奨パーツを探しているのではありません。チップ上に十分なスペースがあること、または適切な周辺機器があることを確認するのは簡単です。私は、十分に強力なプロセッサを確実に選択するためのガイドとして、処理パラメータとステップを探しています。その速度のように。
Funkyguy

スペックから何が必要かわからない場合は、サンプルとプロトタイプを注文できますか?
ロジャー・ローランド2014

@RogerRowlandできましたが、それは非常に長いプロセスです。Surlyには、プログラムの最小仕様を見つける方法がいくつかあります
Funkyguy

回答:


5

それはあなたがどれくらい自信を持つ必要があるかに依存します。私は宇宙産業で働いており、これは通常、「CPU、RAM、ROMバジェット」と呼ばれるものによって達成されます。予算は、それがコストパワーマスまたはその他のものであるかどうかに関係なく、定量化してそれらをすべて合計して全体的な需要を得ることができる管理可能な項目でプロセスを分解します。次に、プロジェクトの成熟度に依存する安全率を採用し、需要の増加に対応するために時間とともに減少します。初期には、それは経験に大きく依存しており、テクノロジーが選択されるにつれて、時間とともに洗練されます。

  • ROMは比較的簡単です。スタック/ライブラリ/ドライバーがROMメモリで大まかに消費する量を知っています。作成者が指定するか、アップロードせずにコンパイルできます。コンパイラの最適化のために、コードを変更するたびにその数値は大きく変わる可能性があります。
  • RAMはかなりトリッキーです。専用の統合開発環境の一部のツールは、実行時の見積もりを提供します。これがどのように行われるかはわかりますが、GCCが提供する汎用ツールは知りません(たとえば、誰かが他に知っていますか?)。悲しいことに、コードの最大または最も割り当てられた要素(変数の有効期間を考慮に入れる)を数えることにかかっているように聞こえます。
  • CPUは、アーキテクチャ(CISCまたはRISC)に応じて、MIPS(数百万の1秒あたりの命令数、CPUクロック周波数に比例)が代表的である場合とそうでない場合があるという点で、より複雑です。コードが手元にある場合、最も重要なセクションを命令に分解し、所要時間から必要なMIPSを計算できるためです。無効化されていない割り込みは、その時点でトリガーされると見なされるべきです-マーフィーの法則など。

スレッド(コアにスレッドが手動で割り当てられている場合を除く)とオペレーティングシステムを使用するとすぐに、スケジューラーがいつ起動するかを正確に判断することは非常に困難です。シンプルなマイクロコントローラーコードで管理できるはずですが、アプリケーションにとっては価値がありますか?

これは私の参加にすぎません。私は統合システムを設計していますが、私はそれらの特定の予算(私にとっての入力です)について責任を負いません。そのことについての専門家の話を知りたいと思っています。

補遺:リアルタイムシステムでは、ワークフロー全体での情報の送信におけるレイテンシ/遅延に依存する最大サンプリング時間と、それぞれがかかる最大時間によって、タスクに対するシステムの妥当性を評価する方が通常は簡単ですタスクのサンプル。


avrdudeグローバル変数が使用するRAMの推定量を提供できますが、基本的にはアップロードツールであるため、ドライランオプションを使用して実行する必要があります。
felixphew 14

1
IMOを見積もるのが最も難しいのは、スタックとヒープの使用です。PIC32で実行されている現在の組み込みシステム(独自のOS)は、通常25を超えるタスクを実行しており、それらの多くはアクティブなときに数K以上のヒープを必要とします。あなたはそれらのいくつかに加えていくつかの重いスタックの使用を取得し、あなたはすぐにRAMを使い果たしそうになります。1週間ほど前に再帰ルーチンを作成しただけで、ローカル変数スタックの使用(配列などは使用しない)に非常に注意する必要がありました
tcrosley

興味深い、ありがとう。コード(コード分析または特定のツール)によって割り当てられたRAMの量を推定しますか、それとも実行時に測定しますか?RAMの使用法とは異なり、MIPSはコードを分析して命令に分解しないと推定できないため、MIPSの推定は少し難しいように思えます(可能な場合、簡単ではありません)。スレッドはタスクを信じられないほど難しくしますが、CPUの分析にはまだ多くのステップが必要なようです-それは一般的に問題の少ないものです。どう思いますか?
ミスターミステール2014

2

「マイクロプロセッサが十分に高速であるかどうかを確認する方法」にあなたの質問を簡略化しますか?最速の実行時間を
必要とするプロセス/手順を特定する必要があります。プロセッサーが所定の時間以内に必要な命令を実行できる場合、それは十分に高速です。
例を見てみましょう。最も速い要件は、停電割り込みを処理することです。これには、10ミリ秒で10,000命令を実行する必要があります。少なくとも1 MIPのCPUが必要です。これを「MHz」に変換するには、命令あたりのクロックサイクル数(cci)を知っている必要があります。それが10 cciだとしましょう。CPUは10 MHz以上で実行する必要があります。


0

BOMコストの削減を検討している場合は、それらの深センのメーカーが意外な提案をすることがあります。1つの例:Allwinner A10はRaspberry Piよりも計算能力と接続オプションが豊富ですが、設計で使用した場合はおそらく安くなるでしょう。Piと同じコストを検討している場合、Allwinner A31は6〜8倍強力です。

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