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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Настройки FreeRTOS
Jenya7
сообщение Jul 25 2018, 09:28
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Создаю таски
Код
FRTOS1_xTaskCreate((TaskFunction_t)operation_task, (signed char*) "tx", 1024, NULL, 1, NULL);  
FRTOS1_xTaskCreate((TaskFunction_t)log_managment_task, (signed char*) "rx", 512, NULL, 1, NULL);
Все работает.Но если увеличиваю размер стэка
Код
FRTOS1_xTaskCreate((TaskFunction_t)operation_task, (signed char*) "tx", 1024, NULL, 1, NULL);  
FRTOS1_xTaskCreate((TaskFunction_t)log_managment_task, (signed char*) "rx", 1024, NULL, 1, NULL);
Заходит в исключение FRTOS1_vApplicationMallocFailedHook.
А где увеличить стэк?
В FreeRTOSConfig.h есть #define configMINIMAL_STACK_SIZE (200) /* stack size in addressable stack units */ - это для каждого таска или общий размер?

Сообщение отредактировал Jenya7 - Jul 25 2018, 09:28
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Jul 25 2018, 09:46
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(Jenya7 @ Jul 25 2018, 13:28) *
В FreeRTOSConfig.h есть #define configMINIMAL_STACK_SIZE (200) /* stack size in addressable stack units */ - это для каждого таска или общий размер?


HeapSize


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Jul 25 2018, 09:51
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Jenya7 @ Jul 25 2018, 14:28) *
В FreeRTOSConfig.h есть #define configMINIMAL_STACK_SIZE (200) /* stack size in addressable stack units */ - это для каждого таска или общий размер?
так мануалов полно в инете....

configMINIMAL_STACK_SIZE - это размер стека ТОЛЬКО для IDLE таска.
общий размер, который ртос отьест для всех задач, семафоров, очередей и т.п, задается параметром configTOTAL_HEAP_SIZE
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 25 2018, 11:18
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



тогда я ничего не понимаю - у меня - #define configTOTAL_HEAP_SIZE (24576) /* size of heap in bytes */
Go to the top of the page
 
+Quote Post
juvf
сообщение Jul 25 2018, 11:33
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



а что дает xPortGetFreeHeapSize() до xTaskCreate()?
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 25 2018, 11:37
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(Jenya7 @ Jul 25 2018, 15:18) *
тогда я ничего не понимаю - у меня - #define configTOTAL_HEAP_SIZE (24576) /* size of heap in bytes */

Ну дык может это говорит о том, что имеет смысл увеличивать? Создали семафор - заняли heap, создали задачу - заняли heap и т.д.
Ваши 2 задачи уже 8кБ памяти будут отжирать сразу.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 25 2018, 11:55
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(juvf @ Jul 25 2018, 17:33) *
а что дает xPortGetFreeHeapSize() до xTaskCreate()?


меня такого не - xPortGetFreeHeapSize()падает тут
Код
       StackType_t *pxStack;

       /* Allocate space for the stack used by the task being created. */
       pxStack = ( StackType_t * ) pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) );



Цитата(Arlleex @ Jul 25 2018, 17:37) *
Ну дык может это говорит о том, что имеет смысл увеличивать? Создали семафор - заняли heap, создали задачу - заняли heap и т.д.
Ваши 2 задачи уже 8кБ памяти будут отжирать сразу.


увеличил до 32кило - он не заходит в FRTOS1_vApplicationMallocFailedHook но где то бродит по функциям FreeRTOS. Иногда попадает в функции тасков но программа не работает.

ой. заработало. спасибо.

Сообщение отредактировал Jenya7 - Jul 25 2018, 12:00
Go to the top of the page
 
+Quote Post
juvf
сообщение Jul 25 2018, 11:57
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



какой хип? heap_1.c, heap_2.c...or heap_4.c?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 25 2018, 12:02
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(juvf @ Jul 25 2018, 17:57) *
какой хип? heap_1.c, heap_2.c...or heap_4.c?


#define configUSE_HEAP_SCHEME 4 /* either 1 (only alloc), 2 (alloc/free), 3 (malloc), 4 (coalesc blocks), 5 (multiple blocks), 6 (newlib) */

а какой лучше?

Сообщение отредактировал Jenya7 - Jul 25 2018, 12:04
Go to the top of the page
 
+Quote Post
x893
сообщение Jul 25 2018, 12:04
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Отладчиком религия не позволяет пользоваться ?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 25 2018, 12:06
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(x893 @ Jul 25 2018, 18:04) *
Отладчиком религия не позволяет пользоваться ?


отладчик плохо работает с фриартосом. нужно ставить плагин.
Go to the top of the page
 
+Quote Post
Grigorij
сообщение Jul 25 2018, 12:06
Сообщение #12


Участник
*

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



Чтобы бездумно не увеличивать размер стека под задачи и, соответственно, размер кучи, посмотрите столько реально каждая задача у вас сейчас потребляет. На хабре есть очень интересная статья по этому поводу - ссылка на статью
Go to the top of the page
 
+Quote Post
juvf
сообщение Jul 25 2018, 12:14
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



какая-то кастомная FreeRTOS. Добавлена какая-то configUSE_HEAP_SCHEME , нет xPortGetFreeHeapSize()....

Цитата
а какой лучше?
лучше та, которая вам нужна. Я обычно использую heap_1.c, мне не нужно динамически задачи создавать и удалять. не будет фрагментации. почитайте про схемы, выберете себе подходящую.

Вот тут про память, кучи, стеки разжованно. Если после запуска планировщика не создаете/удаляете задачи/симафоры/очереди, то heap_1.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 25 2018, 12:19
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Grigorij @ Jul 25 2018, 18:06) *
Чтобы бездумно не увеличивать размер стека под задачи и, соответственно, размер кучи, посмотрите столько реально каждая задача у вас сейчас потребляет. На хабре есть очень интересная статья по этому поводу - ссылка на статью


спасибо. интересная статья.

Цитата(juvf @ Jul 25 2018, 18:14) *
какая-то кастомная FreeRTOS. Добавлена какая-то configUSE_HEAP_SCHEME , нет xPortGetFreeHeapSize()....

лучше та, которая вам нужна. Я обычно использую heap_1.c, мне не нужно динамически задачи создавать и удалять. не будет фрагментации. почитайте про схемы, выберете себе подходящую.

Вот тут про память, кучи, стеки разжованно. Если после запуска планировщика не создаете/удаляете задачи/симафоры/очереди, то heap_1.


спасибо. у меня были сомнения - не люблю динамическую алокацию. попробую heap_1.
Go to the top of the page
 
+Quote Post
x893
сообщение Jul 25 2018, 12:54
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Цитата(Jenya7 @ Jul 25 2018, 15:06) *
отладчик плохо работает с фриартосом. нужно ставить плагин.

Даже не знаю, что и сказать на это замечание.

Наверное так - отладчику наплевать на FreeRTOS.
Как и всё остальное. Что скажешь, то и делает.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th April 2024 - 00:01
Рейтинг@Mail.ru


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