RenesasのRX62NでMicriumのμC/OS-III RTOSを使用しています。
データを動的に割り当てて解放する必要があるシステムを構築しました。関数malloc()およびfree()が RTOS でうまく機能しないことがわかりました。ただし、RTOS にはこのためのカスタム関数があります。Mem_HeapAlloc ()関数。この関数は、RTOS で作成された'heap' の一部のメモリを割り当てます。問題は、おそらくすべてがヒーププールに入るために、無料の機能がないことです。
RTOSではプールを作ることも可能です。このプールの問題は、含まれているすべてのブロックが同じサイズである必要があることです。さまざまなサイズを割り当てて解放しているため、これは良い解決策ではありません。
メモリ RTOS 機能について説明しているドキュメントを見つけました。ここでは、 第 4 章で機能について説明しています。
この問題を解決する方法を知っている人はいますか?
私たちがすでに持っていたいくつかの解決策
- すべてのブロック サイズを最大の割り当てと同じにします。 最小割り当てと最大割り当てが大きく異なるため、多くのオーバーヘッドがあります。
- フリーはしないでください。 これは解決策ではありません。メモリ リークが発生します。
誰かが私たちを助けてくれることを願っています。何か不明な点があれば、私に聞いてください
前もって感謝します