jenya7 0 25 июля, 2018 Опубликовано 25 июля, 2018 (изменено) · Жалоба Создаю таски 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 */ - это для каждого таска или общий размер? Изменено 25 июля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SyncLair 0 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба В FreeRTOSConfig.h есть #define configMINIMAL_STACK_SIZE (200) /* stack size in addressable stack units */ - это для каждого таска или общий размер? HeapSize Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба В FreeRTOSConfig.h есть #define configMINIMAL_STACK_SIZE (200) /* stack size in addressable stack units */ - это для каждого таска или общий размер?так мануалов полно в инете.... configMINIMAL_STACK_SIZE - это размер стека ТОЛЬКО для IDLE таска. общий размер, который ртос отьест для всех задач, семафоров, очередей и т.п, задается параметром configTOTAL_HEAP_SIZE Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба тогда я ничего не понимаю - у меня - #define configTOTAL_HEAP_SIZE (24576) /* size of heap in bytes */ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба а что дает xPortGetFreeHeapSize() до xTaskCreate()? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 129 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба тогда я ничего не понимаю - у меня - #define configTOTAL_HEAP_SIZE (24576) /* size of heap in bytes */ Ну дык может это говорит о том, что имеет смысл увеличивать? Создали семафор - заняли heap, создали задачу - заняли heap и т.д. Ваши 2 задачи уже 8кБ памяти будут отжирать сразу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 июля, 2018 Опубликовано 25 июля, 2018 (изменено) · Жалоба а что дает 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 ) ) ); Ну дык может это говорит о том, что имеет смысл увеличивать? Создали семафор - заняли heap, создали задачу - заняли heap и т.д. Ваши 2 задачи уже 8кБ памяти будут отжирать сразу. увеличил до 32кило - он не заходит в FRTOS1_vApplicationMallocFailedHook но где то бродит по функциям FreeRTOS. Иногда попадает в функции тасков но программа не работает. ой. заработало. спасибо. Изменено 25 июля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба какой хип? heap_1.c, heap_2.c...or heap_4.c? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 июля, 2018 Опубликовано 25 июля, 2018 (изменено) · Жалоба какой хип? 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) */ а какой лучше? Изменено 25 июля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 32 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Отладчиком религия не позволяет пользоваться ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Отладчиком религия не позволяет пользоваться ? отладчик плохо работает с фриартосом. нужно ставить плагин. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grigorij 0 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Чтобы бездумно не увеличивать размер стека под задачи и, соответственно, размер кучи, посмотрите столько реально каждая задача у вас сейчас потребляет. На хабре есть очень интересная статья по этому поводу - ссылка на статью Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 9 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба какая-то кастомная FreeRTOS. Добавлена какая-то configUSE_HEAP_SCHEME , нет xPortGetFreeHeapSize().... а какой лучше? лучше та, которая вам нужна. Я обычно использую heap_1.c, мне не нужно динамически задачи создавать и удалять. не будет фрагментации. почитайте про схемы, выберете себе подходящую. Вот тут про память, кучи, стеки разжованно. Если после запуска планировщика не создаете/удаляете задачи/симафоры/очереди, то heap_1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Чтобы бездумно не увеличивать размер стека под задачи и, соответственно, размер кучи, посмотрите столько реально каждая задача у вас сейчас потребляет. На хабре есть очень интересная статья по этому поводу - ссылка на статью спасибо. интересная статья. какая-то кастомная FreeRTOS. Добавлена какая-то configUSE_HEAP_SCHEME , нет xPortGetFreeHeapSize().... лучше та, которая вам нужна. Я обычно использую heap_1.c, мне не нужно динамически задачи создавать и удалять. не будет фрагментации. почитайте про схемы, выберете себе подходящую. Вот тут про память, кучи, стеки разжованно. Если после запуска планировщика не создаете/удаляете задачи/симафоры/очереди, то heap_1. спасибо. у меня были сомнения - не люблю динамическую алокацию. попробую heap_1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 32 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба отладчик плохо работает с фриартосом. нужно ставить плагин. Даже не знаю, что и сказать на это замечание. Наверное так - отладчику наплевать на FreeRTOS. Как и всё остальное. Что скажешь, то и делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться