2011-12-16 20 views
1

MCUのRAMはリンカの値、グローバルスコープの変数、ヒープ、スタックを保持していて、一部は使用されていないようです。MCUは、通常、RAMの一部を使用しないようにプログラムされていますか?

その結果、エンジニアはアプリケーションが動作するのに不要なMCU RAMの未使用部分を残すファームウェアをリリースする傾向がありますか?

+1

製造元のWebページにアクセスしてクライアントサポートに電話するのは、より高速で、より良い、信頼性の高いものではありませんか?あなたの質問に対する答えはYesです。 – Ulterior

+0

あなたのアプリケーション/ソリューションが少しの失敗と見なされるRAMとフラッシュのすべてのビットを使用する場合は、メンテナンスのためにいくつかの余分なスペースを設計する必要があります。スタックの使用状況を正確に測定するために分析を行ったことは稀であり、リアルタイムでそれを追跡し、障害箇所までテストしようとするとコストがかかります。あなたはヒープが必要ではありません、mallocsは深く組み込まれたシステムには存在しません。スタックと今後のメンテナンスのためにいくつかを残すか、より大きな部分に切り替えます。 –

+2

やや奇妙な質問です。それ以外の場合はどうしますか?それを取り除くことはできませんし、小さな部分が小さすぎるかもしれません。 – Clifford

答えて

4

アプリケーションによって異なります。場合によっては、未使用のRAMを設計して、将来のパッチおよび拡張を可能にすることがあります。多くの場合、使用されていないものはすべて取り出し、ヒープやスタック、またはアプリケーション固有のバッファを拡大するために使用します。

+0

ありがとう、それは私が期待したものです。 – JaseMachine

0

これはアプリケーションとコントローラによって異なります。いくつかのコントローラは、ブートローダの作業領域やUSB/IPバッファ領域などの特定のRAM領域を予約しています。 RAMに配置されたアプリケーションセグメントもさまざまな範囲をカバーします。いくつかのコード/データは、例えば起動時にRAMにコピーまたはマップすることができます。

私のすべての埋め込みアプリケーションでは、残りのすべてのスペアスペースが(@TJDの示唆したように)ヒープに渡されます。

4

ハードウェアが選択または設計されている場合、アプリケーション、アルゴリズム、使用されるデータ構造、開発時の要件の変更、およびどのコンパイラが必要なのかを開発チームが正確に知ることはありませんコンパイラー・オプションが使用されます。

また、メモリデバイスには特定のサイズがあります。アプリケーションに28KbのRAMが必要な場合は、おそらく28Kbの部品がないため、少なくとも32Kbの部品を選択する可能性があります。

また、ソフトウェアアップデートを含むプロジェクトのメンテナンス中にRAMの要件が変更されることはないと考えているので、そのための余裕が必要です。ソフトウェアのバグ修正ができると言っても、ハードウェアを変更する必要があると言えば、エンドユーザーは感心しません。さらに、同じハードウェアを別のより大きなプロジェクトで再利用することもできます。また、ハードウェアの再利用は、ソフトウェアを再利用することによりコスト効率が向上します。

場合によっては、他の目的で割り当てられていないすべての使用可能なメモリを使用するためにリンカが自動的にヒープを割り当てる場合があります。ただし、ヒープが固定されている場合は、未使用のスペースを残しておくと便利です。メンテナンス時に、ヒープ以外のメモリ使用量が増えるたびにヒープサイズを変更する必要はありません。

関連する問題