1

M3からM7に移行します。M3 は STM32F103VE を使用し、64 KB の SRAM を搭載しています。M7 は STM32F746ZG で、240KB の SRAM を搭載しています。M3 コードのほとんどを M7 に移動しました。M7 のイーサネット機能には、追加の LWIP が使用されています。しかし、ヒープメモリが不足していて、以下のように増加していることがわかりました。

#define configTOTAL_HEAP_SIZE ( ( size_t ) (42 * 1024 ) )

M3 を使用する場合、次のヒープ サイズが使用されました。

#define configTOTAL_HEAP_SIZE ( ( size_t ) (15 * 1024 ) )

M3 のヒープ サイズを使用すると、ヒープ メモリが不足するため問題が発生します。また、ヒープ サイズを 45*1024 に設定すると、イーサネット機能が機能せず、ヒープ メモリが増加しません。ヒープを増やすとスタックが減少することはわかっています。ただし、M3 と比較して Heap を約 3 倍に増やしたとはいえ、MALLOC 関数を使用することはまだあまりありません。

M7 は M3 の約 4 倍のメモリを搭載していますが、なぜこれほど多くのメモリが失われるのかわかりません。このような経験をしたことがある方、良いアドバイスをお願いします。STM32 には FreeRTOS、LWIP、HAL を使用しています。Malloc関数を十分に使いたい。

4

2 に答える 2

1

malloc ではなく、内部メモリ マネージャーを使用するように LWIP を構成できます (そして構成する必要があります)。たとえば、http://www.nongnu.org/lwip/2_1_x/mem_8c.htmlを参照してください。

于 2019-06-25T14:48:07.873 に答える