0

新しいソフトウェアを開始し、MPU を使用することを考えます。新しいソフトウェアは FreeRTOS (MPU ポート付き) に基づいています。

MPU とのタスク間通信に関するすべてのセグメンテーションを正しく理解しています。私たちが問題を抱えているのは、動的割り当て保護をどうするかということです。デフォルトでは、すべての RAM がユーザー モードで保護されている必要があります。動的割り当ての処理方法を説明するオンラインのドキュメントはありますか?

コンパイル済みコードが 500K を超える大きなソフトウェアを設計するので、できるだけメモリを保護したいと考えています。

よろしく

ジョナサン

4

1 に答える 1

0

heap_1.c基本的に、FreeRTOS は、ディレクトリ内の, heap_2.c... ファイルに実装された 4 つの異なるメモリ割り当て戦略を提供しますportable/MemMang

heap_1.cシンプルな alloc のみの実装
heap_2.cを提供 シンプルな alloc/free の実装を提供

他の 2 つは、割り当て/解放のより高度な戦略を実装します。FreeRTOS は、独自のリソース割り当て (タスク、ミューテックス、セマフォなど) を行うためにこのインターフェイスを必要とするため、少なくともそれらの 1 つを選択する必要があります。メモリ保護ユニットを提供する MCU については、FreeRTOS も適切にサポートされています。

MPU を使用すると、最小チャンク サイズ (1KB など) を使用してメモリを割り当てる必要があることに注意してください。多くの小さなオブジェクトを割り当てる必要がある場合 (たとえば、std::list<int>またはstd::map<int,int>多くの要素を使用する場合)、これは非常にコストがかかる可能性があります。このような場合には、独自の専用アロケータを提供することを検討してください。

于 2013-11-12T13:25:26.370 に答える