Опубликован: 24.11.2024 | Доступ: свободный | Студентов: 1 / 0 | Длительность: 03:11:00
Лекция 4:

FreeRTOS

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >

Мы начнем эту лекцию с введения в операционную систему реального времени FreeRTOS, а затем более подробно рассмотрим её особенности. Следующий шаг - понять содержание и структуру дистрибутива FreeRTOS, который мы будем использовать на протяжении всего курса.

Далее мы объясним различные компоненты FreeRTOS и то, как они работают и взаимодействуют друг с другом, чтобы обеспечить инфраструктуру для создания встраиваемых приложений. После понимания процесса создания приложений мы завершим лекцию демонстрацией запуска примера приложения в симуляторе QEMU.

Ознакомившись с этой лекцией, читатель сможет:

  • понимать, что такое FreeRTOS;
  • описать особенности FreeRTOS;
  • объяснить содержание и структуру дистрибутива FreeRTOS;
  • перечислить компоненты FreeRTOS и объяснить, как они работают;
  • создавать приложения на базе FreeRTOS;
  • запускать пример приложения на QEMU.

Презентация по лекции

Введение во FreeRTOS

Что такое FreeRTOS?

FreeRTOS - одна из наиболее часто используемых операционных систем реального времени (RTOS), распространяемая под открытой лицензией MIT. FreeRTOS - это RTOS, ориентированная на микроконтроллеры и небольшие микропроцессоры. Она включает ядро и растущий набор библиотек IoT, подходящих для использования во всех отраслях промышленности. FreeRTOS создана с акцентом на надежность и простоту использования.

В следующем разделе мы рассмотрим общие технические требования, требования к обслуживанию и эффективности при создании встраиваемых приложений с FreeRTOS. Затем мы определим некоторые стандартные возможности FreeRTOS.

Требования приложений

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

Технические требования

Модульность

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

Абстрагирование информации о времени

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

Управление питанием

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

Гибкое управление прерываниями

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

Требования к смешанной обработке

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

Управление временем простоя системы

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

Требования к обслуживанию и эффективности

Тестируемость

Одним из ключевых аспектов при разработке системы является возможность её обслуживания и быстрого и эффективного устранения любых поломок. Для обеспечения этого требования важно иметь возможность тестирования на любые потенциальные сбои во время разработки системы, а также воспроизведения любых сбоев, выявленных во время эксплуатации системы. Поэтому, когда система разрабатывается, тестируемость должна быть встроенной частью дизайна, включая определение того, что должно быть протестировано и как это должно быть протестировано.

Удобство обслуживания и расширяемость

Система должна быть разработана таким образом, чтобы её можно было легко обслуживать как в полевых условиях, так и вне их, как с точки зрения аппаратного, так и программного обеспечения. Расширяемость также является ключевым фактором; система должна быть разработана таким образом, чтобы упростить добавление функций после завершения первоначальной версии системы.

Разработка приложений в команде

Сложные приложения часто разрабатываются командами, и дизайн системы должен поддерживать возможность делать это быстро и эффективно. По этой причине система должна быть разработана по модульному принципу, чтобы несколько человек и даже несколько команд могли участвовать в разработке компонентов и модулей приложения без негативного влияния на существующие компоненты.

Повторное использование кода

При необходимости код, разработанный для одной системы, должен быть доступен для повторного использования в других системах с аналогичными требованиями к функциональности. Проектирование системы по модульному принципу будет поддерживать это требование и повысит эффективность создания новых приложений.

Эффективность кода

Наконец, код должен быть разработан таким образом, чтобы эффективно использовать память, и разработчик должен помнить об ограничениях производительности небольших контроллеров, на которых строятся встраиваемые системы.

Особенности FreeRTOS

Ниже перечислены стандартные возможности FreeRTOS (взятые из справочного руководства FreeRTOS):

  • вытесняющие или совместные операции;
  • очень гибкое назначение приоритетов задач;
  • гибкий, быстрый и легкий механизм оповещения о задачах;
  • очереди;
  • бинарные семафоры;
  • счётные семафоры;
  • мьютексы;
  • рекурсивные мьютексы;
  • программные таймеры;
  • группы событий;
  • функции перехвата, вызываемые прерыванием тика (tick hook functions);
  • функции перехвата, вызываемые задачей ожидания (idle hook functions);
  • проверка переполнения стека;
  • запись трассировки;
  • сбор статистики выполнения задач;
  • дополнительное коммерческое лицензирование и поддержка;
  • модель полной вложенности прерываний (full interrupt nesting model) для некоторых архитектур;
  • таймер без прерываний (прерывания таймера не происходят через регулярные промежутки времени, а доставляются только по мере необходимости) для приложений с чрезвычайно низким энергопотреблением;
  • программно управляемый стек прерываний, когда это необходимо (это может помочь сэкономить оперативную память).

Содержимое и структура дистрибутива FreeRTOS

FreeRTOS распространяется через Git-репозиторий в виде одного сжатого zip-файла со всем исходным кодом, поэтому пользователи могут свободно использовать его в своих приложениях, а также при необходимости вносить в код любые изменения. Дистрибутив также содержит демонстрационные приложения и демоверсии портов (ports) для различных контроллеров, поддерживаемых FreeRTOS. Эти демоверсии помогают пользователям FreeRTOS быстро адаптировать её к своим требованиям. Многие поставщики микроконтроллеров поставляют RTOS как часть своего набора инструментов, что еще больше облегчает разработку с FreeRTOS.

Структура каталогов дистрибутива FreeRTOS

Последнюю версию FreeRTOS можно загрузить с веб-сайта FreeRTOS. FreeRTOS также размещен на GitHub, и пользователи могут получить последнюю версию исходного кода из каталога Git.

  • FreeRTOS - содержит файлы, относящиеся к FreeRTOS
    • Demo - содержит демоверсии портов
    • License - содержит лицензионные файлы
    • Source - содержит исходный код FreeRTOS
    • Test - содержит тесты
  • FreeRTOS-Plus - содержит файлы FreeRTOS и расширенные библиотеки приложений
    • Demo - содержит демонстрационные версии приложений FreeRTOS-Plus
    • Source - содержит исходный код библиотек FreeRTOS-Plus
    • Test - содержит тесты приложений FreeRTOS-Plus
    • ThirdParty - содержит сторонние контрибуции (third party contributions)
Содержимое дистрибутива

Ключевая часть ядра (core of the kernel) FreeRTOS содержится в трёх файлах, которые находятся в подкаталоге FreeRTOS\FreeRTOS\Source. Это файлы tasks.c, queue.c и lists.c. Для простых приложений этих трёх файлов достаточно. Папка Source содержит подпапку include, в которой находятся файлы include, необходимые для установки.

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

Каталог Source также содержит подкаталог portable, который содержит подкаталоги с файлами, специфичными для определенных компиляторов и программных инструментов. Код, находящийся в этих папках, может быть использован в качестве отправной точки для создания портов в соответствии с требованиями пользователя.

Папка Demo содержит примеры приложений, портированных на конкретные контроллеры. Пользователи, планирующие использовать контроллер определенного типа, могут использовать один или несколько примеров, представленных в этой папке, в качестве основы для создания приложений для своего контроллера.

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >