Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Программная реализация МПС. FreeRTOS

▌Системный тик Один из таймеров микроконтроллера, самый ненужный, настраивают на генерацию системных тиков. Один тик делается, обычно, раз в 1мс, но можно и чаще или реже. В зависимости от того какая реакция и дискретность системы нам
Программная реализация МПСТема 3FreeRTOS ▌Системный тик Один из таймеров микроконтроллера, самый ненужный, настраивают на генерацию системных ▌Задача Краеугольным камнем любой RTOS является задача. Задача выглядит как функция которая Алгоритм этой программы при реализации ее средствами ОС. Связей между задачами нет, Алгоритм работы диспетчера задач. Допустимые состояния «задачи» READY Задача запущена и готова принять на себя управление. Ждет Допустимые состояния «задачи» У задачи есть такой важный параметр как приоритет. Он задается при создании API функции управления задачамиxTaskCreate — создает новую задачу, выделяя под нее память и API функции управления задачамиuxTaskPrioritySet — устанавливает приоритет задачи. Т.е. можно приоритет менять.vTaskSuspend — глушит Утилиты задач. Не используются для управления задачами, но позволяют получить из диспетчера Очереди. Обмен данными между задачами Одни задачи помещают данные в очередь, а
Слайды презентации

Слайд 2


Слайд 10 ▌Системный тик Один из таймеров микроконтроллера, самый ненужный, настраивают

▌Системный тик Один из таймеров микроконтроллера, самый ненужный, настраивают на генерацию

на генерацию системных тиков. Один тик делается, обычно, раз

в 1мс, но можно и чаще или реже. В зависимости от того какая реакция и дискретность системы нам нужна.

Каждый тик это вызов прерывания таймера, в котором вызывается диспетчер, чьими усилиями проворачиваются шестеренки ОС. Это время еще называют квантом, говоря, что задаче выделяется квант времени. 


Слайд 11 ▌Задача Краеугольным камнем любой RTOS является задача. Задача выглядит

▌Задача Краеугольным камнем любой RTOS является задача. Задача выглядит как функция

как функция которая крутит бесконечный цикл делающий какую-либо относительно

простую процедуру. 

Слайд 12 Алгоритм этой программы при реализации ее средствами ОС.

Алгоритм этой программы при реализации ее средствами ОС. Связей между задачами


Связей между задачами нет, они работают каждая сама по

себе.

Слайд 13 Алгоритм работы диспетчера задач.

Алгоритм работы диспетчера задач.

Слайд 15 Допустимые состояния «задачи»
READY Задача запущена и готова принять

Допустимые состояния «задачи» READY Задача запущена и готова принять на себя управление.

на себя управление. Ждет только момента когда на нее

обратит внимание диспетчер. Как только дойдет ее очередь так сразу же задача перейдет в режим RUN.
RUN Т.е. диспетчер переключил управление на нее, процессор прогоняет непосредственно ее код через себя в данный момент. В этот момент задача живет, потребляет процессорное время и делает полезную работу ради которой она была записана.
WAIT Задача в спячке. Т.к. ждет некого события, например, значения таймера, или пока что-нибудь в системе не случится, на что эта задача должна среагировать. При этом диспетчер не переключается на нее, процессорное время не тратится. Как только ожидаемое событие произойдет, то RTOS назначит этой задаче состояние READY.
SUSPEND Выключено. Т.е. задача не выгружена из памяти, данные ее все сохранены, но она неактивна. Ни на какие события не реагирует и сама из этого состояния не выйдет. Вывести ее из этого состояния можно только API командой ОС, вручную.


Слайд 16 Допустимые состояния «задачи»

Допустимые состояния «задачи»

Слайд 17 У задачи есть такой важный параметр как приоритет.

У задачи есть такой важный параметр как приоритет. Он задается при

Он задается при создании и его можно на лету

вручную менять через API функции RTOS .

Приоритет определяет в каком порядке будут работать задачи.  
Т.е. если есть две задачи в статусе Ready, но у одной приоритет выше другой. Задача с низким приоритетом в таком случае не получит управление до тех пор, пока высокоприоритетная задача не свалится в WAIT. Диспетчер всегда будет выбирать ту READY задачу у которой приоритет выше.

А если READY задач нет, то будет вращать IDLE цикл. В котором происходит обслуживание памяти, зачистка неиспользованной оперативки, удаление ошметков от удаленных задач и прочей служебной фигней. Ну и туда же (на IDLE) можно повесить свою callback функцию, в которой, например, контроллер будет отправляться в режим энергосбережения.

 

Приоритеты «задач»


Слайд 18 API функции управления задачами
xTaskCreate — создает новую задачу, выделяя

API функции управления задачамиxTaskCreate — создает новую задачу, выделяя под нее память

под нее память и натравливая на нее диспетчер.

vTaskDelete — удаляет

задачу. Память потом освобождает IDLE задача.

vTaskDelay(N) — эта функция вызывает диспетчер, который переводит задачу в WAIT на N системных тиков. Можно на ней лепить всякие простые задержки, вроде опроса кнопок.

vTaskDelayUntil(N) — функция аналогичная предыдущей, но считает время N не от момента ее срабатывания, а от момента прошлого пробуждения задачи.

uxTaskPriorityGet — возвращает приоритет задачи. Т.е. можно посмотреть приоритет текущей или любой другой задачи заголовок (handle) которой мы знаем.


Слайд 19 API функции управления задачами
uxTaskPrioritySet — устанавливает приоритет задачи. Т.е.

API функции управления задачамиuxTaskPrioritySet — устанавливает приоритет задачи. Т.е. можно приоритет менять.vTaskSuspend —

можно приоритет менять.

vTaskSuspend — глушит задачу, что она перестает отвечать

на события. Перестает работать, но не выгружается из памяти, а зависает в текущем состоянии.

vTaskResume — возврат задачи из SUSPEND состояния. Эту функцию нельзя выполнять из обработчика прерывания.

vTaskResumeFromISR — аналогичная команда, но ее как раз можно выполнять из обработчика прерывания, но нельзя запускать вне него. Там еще есть ряд особенностей, о которых я расскажу ниже отдельно, когда буду описывать все *FromISR функции оптом.


Слайд 20 Утилиты задач.
Не используются для управления задачами, но

Утилиты задач. Не используются для управления задачами, но позволяют получить из

позволяют получить из диспетчера некоторые сведения.
xTaskGetCurrentTaskHandle — узнать Handle

текущей задачи. Зная заголовок можно можно менять ее приоритет, запускать, удалять и так далее.

xTaskGetTickCount — выдает количество тиков с момента запуска планировщика. Это этакий глобальный таймер, отсчитывающий время с начала времен.

xTaskGetSchedulerState — выдает состояние диспетчера. Запущен, работает, выключен и так далее.

uxTaskGetNumberOfTasks — показывает количество загруженных задач. Например если надо определить хватит ли памяти. Или для отладки.


  • Имя файла: programmnaya-realizatsiya-mps-freertos.pptx
  • Количество просмотров: 111
  • Количество скачиваний: 0