マイクロコントローラーに必要なフラッシュ/ RAMの量をどのように決定しますか?


24

いくつかの既知の機能を備えた組み込みプロジェクトを開始するとします。マイクロコントローラーを選択するとき、必要なRAMの量をどのように選択しますか?

開発者ボードを使用して、最初にプロジェクトをコーディングし、使用したメモリ量を確認してから、そのメモリに適合する適切なマイクロコントローラを選択しますか?

プロトタイプ用に頑丈なマイクロコントローラーを選んで、実際の製品ができたらスケールダウンしますか?

十分であると確信しているものを選んでいますか、スペースが足りない場合は、より高いメモリ密度のものにアップグレードしてください。

グッドプラクティスと見なされるものは何ですか?


情報理論的な観点から、RAMの要件をタスク仕様から1桁以内(次元の推論スタイル)に推定することは可能であるはずです。うーん...
リンドンホワイト14年

ライブラリを使用する場合、メモリフットプリントを調査できます。独自のコードでは、経験を積まなければなりません。新しいプロジェクトを古いプロジェクトと比較し、それがより大きくなるか小さくなるかを判断します。
jwsc

回答:


20

個人的に趣味のプロジェクトでは、適切なフットプリントを持つファミリーで最も強力なマイクロコントローラーを使用する傾向があります。次に、PCBを開発し、コードを作成してプロトタイプを作成します。

これには、少数のマイクロコントローラーをかなりよく知っているという利点があるため、データシート全体を読む必要なく、迅速にプロトタイプを作成できます。ブレイクアウトボードとそれらのコードテンプレートもあります。

それが機能し、私がほんの一握り以上を製造している場合、適切な周辺機器と以前にコーディングしたものに十分なメモリを備えた最も安価なマイクロコントローラを購入します。これは、内部レジスタが変更される(PICで発生する)場合、またはコードを機能させるために無効にする必要がある余分な周辺機器がいずれかのマイクロコントローラーにある場合、迷惑になる可能性があります。

ただし、生産目的では、これにより各ユニットからかなりの量を削ることができます。


私の個人的なプロジェクトでは、同様のアプローチを使用する傾向があります。私と同じ方法は、オフィスにも忍び込んでいます。それは間違っていませんが、動作しますが、より良い方法などがあります。入力を評価してください!
efox29 14年

「実際の」環境では、間違いなくより良い方法があります。他の答えを待ちましょう!
デビッド14年

絶対に。大きなサンドボックスで開発し、後で削減します。節約する時間は、開発のためにマイクロコントローラーごとに費やす余分な4ドルをカバーする以上のものです。これは趣味レベル以上のもので動作します-実際にはさらに重要です。写真1台ではなく、より大きなコントローラーへの移行を待っている人12人!
スコットサイドマン14年

13

もちろん、単一の自家製プロトタイプの場合、互換性のあるすべてのマイクロプロセッサの中で最も強力なものから始めて、その後スケールダウンすることをお勧めします。

ただし、見積もりを獲得したい場合は、何かを実装するためのお金を得る前に、顧客に価格を伝える必要があります。

したがって、プログラミングを開始する前に、何らかの仕様を書き留めておくことをお勧めします。あなたはをしたいを知っているので、あなたはそれをどうするつもりを書き留めるべきです。

この「方法」には、ソフトウェア設計について考え、次のような質問に答えることも含まれます。

  • オペレーティングシステムが必要ですか?どれ?どのリソースが必要ですか?
  • 階層化アーキテクチャが必要ですか?これには、RAMを消費する可能性のあるインターフェイスが必要です
  • すでにどのライブラリが利用可能で、目的に役立つ/必要であり、どのくらいのメモリが必要ですか(優れたライブラリドキュメントは、少なくとも1つのリファレンスビルドに基づいてこれに答えます)
  • 独自のドライバーとアプリケーションに実装する必要がある構造と変数は何ですか?

これらすべての値を合計すると、大まかな見積もりが得られます。どれだけ信頼できるかは、分析の詳細度と経験に依存します:-)
推定値の少なくとも30..50%のマージンを追加することは確かに良い考えです。

製品が完成し、使用中のRAMが80..90%になると、少なくともRAMに関しては、選択が正しいことを確信できます。


2
Re:「80..90%RAM in use」。標準的な方法は、CPUとメモリの両方で最大50%の使用率のみを使用して、将来のアップグレードとバグ修正に対応できるようにすることです。
ダンク14年

1
@Dunk:ビジネスに依存します。自動車では、SOPのすべてのリソース(CPU、RAM、フラッシュ)の80%が一般的に受け入れられています。たとえば、安価な家電製品では、さらに長くなる可能性があります。寿命がわずか2〜3年のシステムをアップグレードする可能性はどのくらいでしょうか。
マイク

@Dunk:間違っているかもしれませんが、動的メモリとそれに伴うすべての不確実性を備えたデスクトップスタイルのソフトウェアに慣れているようです。組み込みアプリケーションの大部分は、すべてを静的に割り当てます。メモリリークがないことを保証します。その後、変更しない限り、100%を正確に使用し、いつまでも問題なく使用できます。もちろん、これは、作業用RAMとは別のスタックがある場合、またはスタックが常にどのように動作するかを正確に知っている場合にのみ機能します。そのためのスペースを残すことをお勧めしますが、10〜20%で十分です。
AaronD 14年

組み込みソフトウェアの大きな問題は、不正なポインタ、バッファオーバーラン、ゼロ除算などです。一部のMCUは、割り込みと同様にハードウェアで例外をスローできますが、私が使用したすべてのものは、何も起こらなかったかのように元気に引き継がれます。何らかの結果がありますが、おそらくあなたが期待したものではないので、それを確認する必要があります。算術オーバーフロー/アンダーフローなど、いくつかのことはすぐに確認して修正できます。不正なポインタのような他のことは、何年も機能していた機能が爆発することを決定するまで、まったく気付かれることはありません。
AaronD 14年

3
目標を80%にするか50%にするかは、顧客によって異なります。修正された仕様と必要なバグ修正のみで、80%で十分です。信頼性の低い仕様、予想される機能のクリープ、およびそれを可能にするのに十分なマージンがあるため、より多くのヘッドルームの追加料金を支払うことになります。かつて、必要な数の2倍のマイクロコントローラーを購入し、必要なパフォーマンスを提供するのに十分なオーバークロックを備えたマイクロコントローラーを選択しました。
マークブース14年

3

組み込みシステムを最初にコーディングしてからハードウェアを構築することが可能であった場合のみ。それは皆の生活を楽にします。残念ながら、それはまたあなたの締め切りが窓の外であることを意味します。通常、ハードウェアの部品はリードタイムが長いため、ハードウェアはソフトウェアが完成するずっと前に設計する必要があります。

したがって、組み込みsw開発者は通常、プログラムのメモリとCPUのニーズを見積もる必要があります。最初のステップは、可能な限り最大のRAMを備えた最も強力なマイクロコントローラー/ CPUを提供するようにハードウェア担当者を説得することです。彼らが独自の要件目標を持っているため、それはめったに機能しませんが、時々あなたは幸運になります。

それがうまくいかない場合、次に行うことは高レベルのソフトウェア設計であり、モジュールを機能に分解します。次に、システム内の各モジュールの各関数のコード行を推定します。その後、式を使用して、コード行をコードメモリの概算に変換できます。また、異常なメモリ要件(大規模な配列など)を調査し、それに対応する推定値を追加します。次に、見逃したものをカバーするために、その合計の上にパーセンテージを追加します。次に、通常の50%の使用要件を満たすために、それを2倍にします。

はい、時間がかかります。はい、ハードウェアを変更した後、ハードウェアを変更するのは本当に難しいので、すべてのフープをジャンプする必要があります。


コードの行をコードメモリに変換する式はどこにありますか?
EasyOhm 14年

それは、使用する言語とコンパイラに依存します。アセンブラーを使用する場合、1行はメモリの1ワード(チップのワードサイズは何でも)にほぼ等しくなります。Cを使用する場合は、1行に約3〜5ワードであり、C ++またはさらに複雑なものを使用する場合は、さらに多くなる可能性があります。最善の方法は、その言語で記述されたいくつかのプログラムをコンパイルし、コード行をコードメモリと比較して平均を取得することです。
ダッカロン14年

2

一般に、マイクロコントローラーのベンダーは、一般的なアプリケーションに適したさまざまなメモリをデバイスに搭載しています。そのため、フットプリントの小さいデバイスで数個のI / Oピンと1つのSPIのみが必要な場合、500 kBytesのフラッシュと64 kBytesのRAMを搭載したものはほとんどありません。SoCパッケージに近い大型のデバイスでは、画像処理などの深刻な数値計算を実行する予定がない限り、最小サイズでもほぼ確実に十分な大きさです。

プロの環境では、適切なマイクロコントローラーを選択するための鍵は、履歴データを使用することです。開発した他のプロジェクトの記録があり、各機能を実装するために必要なメモリやその他のシリコンリソースがわかります。製品が何を期待されているかを知っているため、優れた機能リストがあり、マイクロコントローラーが提供する必要のあるリソースを迅速かつ正確に計算できます。(システムに関する最小の情報が利用可能なプロジェクトの開始時に開発された)事前の設計仕様からリソース要件を推測しようとすることは、最高の状態では信頼できず、包括的な経験を積んだエンジニアのみが信頼できます。独自の頭の中の履歴データのデータベースは、この方法を使用することであらゆる種類の成功を収めます。

多くの企業は、ソフトウェアと電子設計の両方に「アジャイル」アプローチを採用しています。これには、小型の機能ボード(RS-485ボード、ADCボードなど)の「ライブラリ」とマイクロコントローラをホストする汎用プラットフォームボードの構築が含まれます、開発キットとプラグインの使用と同様の方法で。製品は、機能に必要なボードのセットを選択して接続することにより、(数時間以内に)迅速にプロトタイプ化できます。ソフトウェアはライブラリモジュールから同様にアセンブルされ、迅速に移植およびテストできます。コードのハードウェア固有の部分のサイズがわかれば、通常、それを含む最小の部分を選択するだけで十分です。例外は、デバイスの機能にビッグデータまたは非常に複雑なアルゴリズムが関係する上記の例外です。この方法は、正確で、

(アジャイルアプローチのもう1つの利点は、ソフトウェアと電子開発を並行して実行できることです。elctronicsの設計は、機能ボードのセットを統合し、関連するEMCおよびその他の困難な作業を同時に行う演習です。アプリケーションソフトウェアは、プロトタイプアセンブリ上で開発されています。ポーティングと統合はまだ必要ですが、動作するソフトウェアと電子機器の両方が利用可能になったときに行われます。

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