Заявление об авторских правах:Основное содержание статьи основано на“Пекинская компания Mengtong Technology Co., Ltd.”Уполномоченные документы,Составлено компанией Chuanglong Technology. Спасибо компании «Mengtong Technology» за щедрую поддержку.,Пусть больше людей узнаютLinuxсистематический“Расширение в реальном времени”Выбирайте знания。
Споры о выборе продолжаются
Всем известно, что EtherCAT — это технология полевой шины реального времени. Когда мы разрабатываем контроллер, поддерживающий шину EtherCAT, выбор операционной системы реального времени является не только наиболее важной частью самого продукта, но также имеет огромное значение. на всем процессе разработки продукта.
Согласно статистике новых клиентов по всему миру, предоставленной поставщиком мастер-станций EtherCAT Acontis, доля клиентов, выбирающих системы Linux реального времени, увеличивалась из года в год за последние 10 лет. Доля всех новых клиентов Acontis в 2019 году, использующих реальные системы. -время Linux как операционной системы контроллера превысило 60%.
Из нашего опыта последних лет мы заметили, что у некоторых клиентов есть предубеждения и недопонимания относительно производительности в реальном времени. Кроме того, ведется много споров о выборе Linux-систем реального времени, использовать ли в основном Preempt RT или Xenomai. Мы составили эту статью на основе нашего опыта работы в предыдущих проектах и выступления эксперта по системам Linux реального времени Яна Альтенберга на конференции Embedded Linux в 2015 году. Я надеюсь, что это поможет вам разобраться в режиме реального времени и предоставит рекомендации для правильного выбора между Preempt RT и Xenomai.
Что такое «в реальном времени»
Мы заметили в нашем взаимодействии с нашими клиентами,Некоторые инженеры путают режим реального времени со скоростью выполнения или производительностью.。AltenbergОсобый акцент в выступлении был сделан:Режим реального времени не имеет ничего общего со скоростью выполнения и производительностью!
Будь то операционная система реального времени или полевая шина реального времени, смысл реального времени заключается не в том, что чем быстрее, тем лучше, а в уверенности в выполнении задачи в течение заданного времени (детерминизм и гарантии времени). Если мы определим реальное время, то реальное время — это уверенность во времени.
Важной особенностью режима реального времени является выполнение заданных задач в течение заданного периода времени. В технических обсуждениях иногда у заказчиков возникают вопросы по поводу того, что протокол EtherCAT не имеет механизма автоматической повторной передачи ошибочных данных. Очевидно, что эта особенность работы в реальном времени была проигнорирована. Принцип работы главной станции EtherCAT заключается в отправке данных в соответствии с периодами времени (периодами цикла). Данные процесса (данные процесса) в каждом цикле имеют смысл только тогда, когда они достигают ведомой станции в течение этого цикла. Таким образом, на уровне протокола EtherCAT не будет автоматически отправлять данные о сбое процесса перед повторной отправкой в последующих циклах.
Встроенный В своем выступлении на конференции по Linux Альтенберг также высказал интересную мысль. Он надеялся, что все забудут о «мягком реальном времени» (Soft Real-Time). Real Timeформулировка),Есть только реальные и нереальные.、Разница между уверенностью и недетерминизмом。Может гарантировать уверенность, то есть «жесткий режим реального времени».(Hard Real Time)。
Принцип реализации Xenomai и Preempt RT
В настоящее время основной выбор решений для Linux, работающих в режиме реального времени, лежит между Xenomai и Preempt RT. Xenomai — это двухъядерное решение, которое добавляет независимое микроядро к ядру Linux, а Preempt RT — это стандартное одноядерное решение реального времени.
Приложения реального времени Xenomai выполняются в микроядре, а система Linux используется в качестве задачи с низким приоритетом в микроядре. В отличие от RTAI, Xenomai в режиме реального времени реализуется в пользовательском пространстве. Linux увеличивает время выполнения только в том случае, если высокоприоритетные приложения реального времени не выполняются в микроядре. На рисунке ниже представлена принципиальная схема двухъядерного решения, представленного Xenomai.
AltenbergСчитается, что двухъядерное решение реального времени имеет несколько очевидных недостатков.。Во-первых, объем работ по техническому обслуживанию очень велик.потому чтоLinuxНе запускается непосредственно на оборудовании,Таким образом, Xenomai необходимо поддерживать уровень аппаратной абстракции HAL, сохраняя при этом микроядро.,Это приводит кXenomaiСкорость обновления обычно выше, чем у основной линии.Linuxна шаг позади。Во-вторых, стандартную библиотеку C использовать нельзя.XenomaiРазработка приложений реального времени требует специальных инструментов и библиотек, а также отдельныхAPI。
Основное решение Linux для работы в реальном времени — это одноядерное решение, основанное на Preempt RT, которое переводит сам Linux в режим реального времени за счет максимального увеличения вытесняемой части ядра Linux. На рисунке ниже показана одноядерная схема Premept RT.
Так как около 80% Preempt Функциональность RT интегрирована в основную ветку Linux, поэтому любой разработчик Linux может использовать Preempt. Компоненты ядра Linux для RT. Вытеснение RT не только превращает Linux в систему реального времени, но и повышает стабильность Linux. Вытеснение RT широко распространен и имеет большое сообщество, разработчикам не обязательно иметь глубокие знания Preempt. RT вместо этого используйте стандартную библиотеку C для разработки приложений реального времени. Разработчикам не нужно глубоко разбираться в Preempt. RT,Вместо этого используйте стандартныйCБиблиотека для разработки приложений реального времени。Preempt RT — это система Linux, Preempt Приложения реального времени RT также являются приложениями Linux.
Поскольку оставшиеся 20% функций постепенно интегрируются в основную ветку Linux, возможно, в будущем можно будет использовать Preempt RT напрямую, без установки патчей на Linux.
Сравнение производительности Xenomai и Preempt RT
Наиболее важным показателем производительности в реальном времени является размер задержки. В Интернете есть много широко распространенных статей, в которых говорится, что Xenomai имеет преимущества по задержке. Альтенберг не согласен с этой точкой зрения. Он считает, что причиной такого вывода является неправильная конфигурация Preempt RT.
Чтобы убедиться наверняка, их команда нашла экспертов Xenomai и Preempt RT соответственно и провела тесты на одной и той же аппаратной платформе. Объектом тестирования является производительность Xenomai и Preempt RT с точки зрения задержки и джиттера при высокой нагрузке.
Альтенберг подчеркнул два момента. Во-первых, худший результат теста имеет значение. Другой момент заключается в том, что после того, как система получает прерывание, задержка ответа приложения в пользовательском пространстве является наиболее значимой для приложения.
Результаты тестов в пользовательском пространстве показывают, что наихудшие задержки как для Xenomai, так и для Preempt RT составляют около 90-95 микросекунд. При использовании только одноядерного теста в системе Linux наихудшая задержка Preempt RT составила всего около 80 микросекунд, что лучше, чем у Xenomai.
В результатах теста задержки пространства ядра максимальная задержка Xenomai составляет 30 микросекунд, а максимальная задержка одноядерного запуска Preempt RT — 60 микросекунд. Если используется быстрое прерывание FIQ, наихудшая задержка Preempt RT может достигать 30 микросекунд, а средняя задержка может достигать даже 10 микросекунд.
Экспертное мнение
Moncom отметил: «Тестирование показывает, что с точки зрения наихудшей задержки в пользовательском пространстве, что наиболее важно для разработчиков, два решения реального времени показывают почти идентичные данные по этому показателю производительности.
Однако Preempt RT практически слился с основной веткой ядра Linux. С точки зрения разработки и обслуживания системы рабочая нагрузка Preempt RT такая же, как и у стандартного Linux. Это дает Preempt RT больше преимуществ, чем Xenomai, например, упрощение разработки для инженеров, более длительный жизненный цикл продукта и упрощенное обслуживание системы.