есть система, в которой реалтаймовая часть (прерывания, флаги/семафоры и т.п.) взаимодействует с некими вычислительными задачами, которые являются вычислениями и время завершения цикла неопределено и большое (ну и код соответственно большой/ветвистый и вставить в него ожидание каких-то событий типа OSSemPend трудно)
таких задач несколько, ну и также хочется, чтобы статистическая задача работала
кажется, что это можно сделать так : в uCOS эти вычислительные задачи получают приоритеты ниже самой низкоприоритетной реал-таймовой задачи, в задачу с высоким (наверно самым высоким) uCOS приоритетом вставляется "шедулер" высокоприоритетная задача (uCOS priopity=1) срабатывает по периодическому таймеру, в этой задаче суспендятся эти три вычислительные задачи и инкрементируется счетчик каждое второе срабатывание запускается более приоритетная задача, каждое четвертое со средним приоритетом ну и каждое 8 - с низким при этом приоритеты означают не приоритеты uCOS, а количество времени, которое процессор тратит на задачу (возможно равномерное распределение - каждый тик одна задачка суспендится, одна запускается, но это не нужно) остальное время выделено на статистическую+IDLE
ничего я тут не перемудрил? будет это работать (предполагается использовать OSTaskSuspend(), OSTaskResume())?
может такая фигня есть уже в uCOS? (давно не имел дело с uCOS)
|