2021-11-16 03:24 AM
With STM32CubeIDE and freeRTOS for STM32F429 chips, the IDE generate code using freeRTOS V10.3.1. I could setup heap5 with SDRAM enabled and won't be affected by later regenerating code when changing .ioc file. The cmsis_os2.c file works fine. Both the IDE and the compiler could detect configAPPLICATION_ALLOCATED_HEAP defined in FreeRTOSConfig.h
But with STM32F103 chips, STM32CubeIDE with freeRTOS support generates V10.0.1 code. The cmsis_os2.c is using wrong code for heap5. I have to change the code manually to make heap5 work but I lost the change after regenerating code.
The IDE could not detect configAPPLICATION_ALLOCATED_HEAP defined in FreeRTOSConfig.h but the compiler does. Declare a value ucHeap in main.c solved linking problem.
This code segment generated is not correct for heap5. The segment is the same using heap4 and heap5. I can't get rid of this by defining things in .ioc file.
static HeapRegion_t xHeapRegions[] = {
{ ucHeap, configTOTAL_HEAP_SIZE },
{ NULL, 0 }
};