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 17 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 17 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба а что дает xPortGetFreeHeapSize() до xTaskCreate()? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 188 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 17 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 60 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Отладчиком религия не позволяет пользоваться ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Отладчиком религия не позволяет пользоваться ? отладчик плохо работает с фриартосом. нужно ставить плагин. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grigorij 0 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба Чтобы бездумно не увеличивать размер стека под задачи и, соответственно, размер кучи, посмотрите столько реально каждая задача у вас сейчас потребляет. На хабре есть очень интересная статья по этому поводу - ссылка на статью Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 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 60 25 июля, 2018 Опубликовано 25 июля, 2018 · Жалоба отладчик плохо работает с фриартосом. нужно ставить плагин. Даже не знаю, что и сказать на это замечание. Наверное так - отладчику наплевать на FreeRTOS. Как и всё остальное. Что скажешь, то и делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться