Я перехожу с M3 на M7. M3 использует STM32F103VE и имеет 64 КБ SRAM. M7 - это STM32F746ZG, у него 240 КБ SRAM. Я переместил большую часть кода M3 в M7. Дополнительный LWIP используется для функции Ethernet в M7. Но я обнаружил, что памяти кучи не хватало, и ее увеличили, как показано ниже.
#define configTOTAL_HEAP_SIZE ( ( size_t ) (42 * 1024 ) )
При использовании M3 использовался следующий размер кучи.
#define configTOTAL_HEAP_SIZE ( ( size_t ) (15 * 1024 ) )
Если я использую размер кучи M3, возникает проблема, потому что памяти кучи недостаточно. И если я установлю размер кучи на 45 * 1024, функция Ethernet не будет работать и не увеличивает память кучи. Я знаю, что увеличение кучи уменьшает стек. Однако, хотя он увеличил кучу примерно в три раза по сравнению с M3, ему все еще не так много возможностей для использования функций MALLOC.
Несмотря на то, что у M7 примерно в четыре раза больше памяти, чем у M3, я не понимаю, почему так много памяти. Если у кого-то был подобный опыт, дайте, пожалуйста, дельный совет. Я использую FreeRTOS, LWIP и HAL для STM32. Я хочу в достаточной мере использовать функцию Malloc.