Размер heap FreeRTOSConfig.h и в настройках IAR. В чем разница? С недавних пор решил освоить FreeRTOS, вроде все понятно, но есть пара вопросов по поводу кучи. Использую IAR и порт FreeRTOS для Cortex-M0. В настройках линкера IAR есть два поля (размер stack и heap), с этим все понятно. Но в файле FreeRTOSConfig.h снова необходимо указать размер heap. Я так понимаю, размер кучи, указываемой в настройках линкера - это для функций malloc(), а размер, указываемый в файле FreeRTOSConfig.h - это для pvPortMalloc()?
Да, вы правильно понимаете. Размер кучи, указываемой в настройках линкера IAR, относится к обычной динамической памяти, которая выделяется функциями malloc() и free(). Это память, которую вы можете использовать для выделения динамических переменных и структур данных в вашем приложении.
С другой стороны, размер кучи, указываемый в файле FreeRTOSConfig.h для pvPortMalloc(), относится к куче, управляемой FreeRTOS. FreeRTOS использует свою собственную кучу для управления памятью, выделяемой задачам, очередям и другими структурами данных внутри ядра операционной системы.
Поэтому вам необходимо указать размер кучи и в настройках линкера IAR и в файле FreeRTOSConfig.h, чтобы обеспечить корректную работу как стандартных функций работы с памятью (malloc(), free()), так и функций FreeRTOS для управления памятью в вашем приложении.
Да, вы правильно понимаете. Размер кучи, указываемой в настройках линкера IAR, относится к обычной динамической памяти, которая выделяется функциями malloc() и free(). Это память, которую вы можете использовать для выделения динамических переменных и структур данных в вашем приложении.
С другой стороны, размер кучи, указываемый в файле FreeRTOSConfig.h для pvPortMalloc(), относится к куче, управляемой FreeRTOS. FreeRTOS использует свою собственную кучу для управления памятью, выделяемой задачам, очередям и другими структурами данных внутри ядра операционной системы.
Поэтому вам необходимо указать размер кучи и в настройках линкера IAR и в файле FreeRTOSConfig.h, чтобы обеспечить корректную работу как стандартных функций работы с памятью (malloc(), free()), так и функций FreeRTOS для управления памятью в вашем приложении.