Я работаю над кастомной платой с процессором STM32F107VCT. Я использую FreeRTOS и lwIP
Я использую библиотеку tinyxml2 и читаю / записываю в EEPROM, и у меня возникают странные проблемы с повреждением и сбои. Я подозреваю, что у меня заканчивается память. У меня довольно новая встроенная электроника и FreeRTOS, поэтому я не уверен, где мне искать.
Я создаю несколько таких потоков:
osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 512);
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
osThreadDef(RfTask, StartRfTask, osPriorityNormal, 0, 700);
RfTaskHandle = osThreadCreate(osThread(RfTask), NULL);
osThreadDef(DiscoveryTask, StartDiscoveryTask, osPriorityNormal, 0, 256);
DisoveryTaskHandle = osThreadCreate(osThread(DiscoveryTask), NULL);
Вот некоторые из моих определений, связанных с кучей / стеком
FreeRTOS.h
define configTOTAL_HEAP_SIZE ((size_t)1024*24)
Flash.id
_estack = 0x20010000; /* end of RAM */
_Min_Heap_Size = 0; /* required amount of heap */
_Min_Stack_Size = 0x200; /* required amount of stack */
Я не совсем понимаю, что такое теория кучи / стека и как она соотносится с цифрами в flash.id и FreeRTOS.h
Может ли кто-нибудь предложить мне объяснение, как все это работает, и какие-либо методы проверки количества оперативной памяти, доступной для задач и т. Д.?
При необходимости я могу поделиться своим кодом на gitlab
Большое спасибо