реклама на сайте
подробности

 
 
> Физический смысл configMINIMAL_STACK_SIZE configTOTAL_HEAP_SIZE, При изменении данных дефайнов система зависает
SashaBe
сообщение Jun 13 2011, 08:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 7-10-07
Пользователь №: 31 138



Здравствуйте.
Использую в своём проекте порт FreeRTOS для LPC1343.

Заявленные в топике дефайны
configMINIMAL_STACK_SIZE
configTOTAL_HEAP_SIZE

1. Не понятны с точки зрения физики: как выделяется память для каждой задачи, куда деваются после этого остатки?

2. Что будет, если общий объем стеков задач в сумме с configTOTAL_HEAP_SIZE превысит объем памяти?

3. Что происходит, когда размеры локальных переменных в таске превышают объём configMINIMAL_STACK_SIZE.

4. Как можно объяснить такое наблюдение:
configMININAL_STACK_SIZE 300
configTOTAL_HEAP_SIZE 6*1024

В одной из 3х созданных задач есть структура объемом 216 байт и ещё кое-что по-мелочи. Но самое главное, код работает.

Меняем просто
configTOTAL_HEAP_SIZE 5*1024 - и всё умирает.

Впрочем, программа умирает также, когда из трех тасков в двух размер стека задается configMININAL_STACK_SIZE. а в третьей - самой прожорливой configMININAL_STACK_SIZE*2.

Верно ли использование этого дефайна в качестве задаваемого размера стека при создании таска или он может быть и поменьше, а для каждой задачи происходит какая-то проверка, не пытаешься ли ты создать задачу со стеком меньше минимального?

5. Наверное уже набившая оскомину тема с выделением и освобождением памяти внутри тасков: чем отличается использование malloc() и free() от специальных функций pvPortMalloc() и vPortFree().

Буду благодарен за ответы по существу и за ссылки на подробные объяснения в других местах.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 04:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016