Можно ли запускать программное обеспечение в реальном времени?

60

Я знаю, что он работает под управлением Linux, и для Linux доступны патчи в реальном времени. Будут ли эти патчи работать?

Кто-нибудь пробовал другую операционную систему реального времени на Raspberry Pi?

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

Ларс Петтер
источник
2
Я бы подумал, что единственная уникальная причина, которая приходит в голову, почему вы не могли бы быть, если бы мешало решение с закрытым графическим процессором. Если вы решите просто игнорировать графический процессор, в то время как в ваших задачах в реальном времени, я думаю, расширения реального времени могут быть сделаны для работы.
Крис Страттон
7
Вся система Raspberry Pi не может быть изменена вами; вопрос заключается в том, будет ли часть, которая не является (GPU), оставаться в стороне, пока вы выполняете свои задачи в реальном времени, или если это неизбежно потребует либо циклов шины для доступа к оперативной памяти, либо даже "внимания" «от ядра ARM таким образом, что это помешает жестким целям времени.
Крис Страттон
4
Очевидно, RISCOS достаточно хорошо подходит для определенных приложений реального времени, и порт Raspberry Pi работает хорошо. * 8 ')
Марк Бут
4
RISCOS - это не операционная система реального времени (по вашей ссылке в Википедии), так как она может помочь?
Ларс Пёттер
4
Патч CONFIG_PREEMPT_RT был продемонстрирован на нескольких процессорах ARM под управлением Linux. Могут быть некоторые проблемы с задержкой, но они должны быть измеримыми порядка микросекунд.
Прорыв

Ответы:

16

Вы можете быть заинтересованы в запуске Xenomai на RaspberryPi. Здесь вы можете найти учебник о том, как это сделать. Короче говоря, Xenomai - это проект, который создал собственное ядро ​​Linux (они предоставляют исправления, которые должны быть применены к источникам ядра), позволяя ему запускать другое ядро ​​(ядро Xenomai), которое работает в режиме реального времени. Это позволяет запускать приложения Xenomai на широком спектре аппаратного обеспечения без необходимости написания драйверов для них (поскольку Linux работает на очень широком спектре аппаратного обеспечения). Это позволяет писать приложения RT в пользовательском пространстве, используя несколько доступных API RT.

Кшиштоф Адамски
источник
1
Какую максимальную частоту я могу получить с помощью этого инструмента? Я заинтересован в управлении двигателем постоянного тока с частотой, равной 1 кГц
Николас Ариас
19

В ядре Linux включение PREEMPT_RTобеспечит ограниченные задержки и API в реальном времени. Помимо настройки PREEMPT_RT, то SCHED_FIFOи SCHED_RRполитики также должны быть выбраны. И приложения должны устанавливать параметры в реальном времени, вызывая соответствующие API или используя соответствующие утилиты.

В соответствии с тренингом по свободным электронам: в реальном времени в Embedded Linux , PREEMPT_RT был проектом, который привносит в ядро ​​возможности реального времени. Он полностью объединен с ядром 2.6.33 и 3.0. Смотрите документ, вы найдете все.

По сути, существует два подхода для обеспечения возможности ядра Linux в режиме реального времени:

  • Изменить внутри ядра, то есть PREEMPT_RTпроекта.
  • Запуск в режиме реального времени часть бок о бок с нормальным ядром и ниже нормального ядра, было три поколения: RTLinux, RTAI, и Xenomai. ( Aedosкак Avioупоминается ниже?)

Редактировать:

Минхуа
источник
2
Добро пожаловать в Raspberry Pi, хороший ответ! RT PREEMPT patchОт Инго Молнар используется вместе с High Resolution Timers(HRT) поддержки, позволяют ядру достичь жесткого реального времени возможности. В настоящее время его поддержка достигает ядер 3.4.11 , и «хорошими новостями» является то, что патч «сжимается», поэтому кажется, что большая его часть включена в основные ядра ядра. Вы можете найти отличный учебник о том, как подать заявку и использовать его здесь .
Avio
1
Ну, и не забудьте указать Adeos среди альтернатив, чтобы обеспечить жесткую поддержку в реальном времени в Linux.
Avio
2
Я должен упомянуть, что заставить PREEMPT_RT работать с ядром Raspberry Pi не так уж просто, просто применение патча приводит к неработающему ядру. Кроме того, в ядре Raspberry Pi появилось много новых драйверов, и эти драйверы не были протестированы с PREEMPT_RT и не были очищены от слишком длинных блокирующих снов. Это очень большая работа, то есть.
Nakedible
2
Какие-нибудь обновления на этом? Достаточно ли стабильны драйверы для использования этого патча для ядра? Я бы хотел рабочий учебник для людей, которые еще не скомпилировали ядро.
Fabb
@fabb: Даже спустя много лет все еще будут драйверы, у которых есть проблемы с требованием RT. Вы только узнаете, запустив его. Кстати, в последнее время я вижу сбой сети, когда-то повышаются приоритеты некоторых приложений пользовательского пространства, что является неожиданным. Хотя все эти ситуации сильно зависят от конфигурации и приложения.
Минхуа
6

Wyolum mas aLaMode (я называю его Almond Pi), чтобы разместить поверх Pi в наращиваемом виде. Он имеет часы реального времени, использует aTiny 328, питает GPIO Real UART / power и может мигать различными способами. Это здорово, потому что Pi может делать все, что угодно, веб-сервер / базу данных, в то время как Arduino работает в режиме реального времени с прерываниями.

введите описание изображения здесь

Петр Кула
источник
1
Может показаться немного непрактичным иметь 2 работающих микроконтроллера, но, с другой стороны, это обеспечивает работу в режиме реального времени, если другие подходы недостаточно быстры.
Fabb
1
Любые намеки на то, как RPi будет чисто взаимодействовать с другим микроконтроллером, не замедляя цикл управления?
Fabb
1
Да, но микроконтроллер должен был бы опросить UART, я полагаю, чтобы не позволить прерываниям UART отложить прерывание таймера контура управления. Должен ли я тогда опросить UART в начале цикла управления и убедиться, что я не читаю много байтов, чтобы это не заняло слишком много времени? Или буферы UART таким образом переполняются слишком легко? Или частота управляющего контура будет настолько выше, чем скорость UART, что чтение одного байта в каждом контуре, если оно доступно, будет более чем достаточно?
Fabb
1
Хорошее предложение. Кстати, Raspberry Pi Alamode - это уже игра слов. Аля режим, когда вы кладете мороженое на пирог.
Дан
1
В самом деле ? Хехе. Я задавался вопросом, что это значит. Имеет смысл сейчас :)
Петр Кула
2

Лучшее решение, которое я видел, это X10i - плата управления в реальном времени для Raspberry Pi от Heber.

X10i - это универсальный, мощный и безопасный контроллер реального времени, который позволяет управлять несколькими входами / выходами через USB с любой системы ПК. Теперь Heber предлагает поддержку на многих языках программирования, чтобы программистам, изобретателям и разработчикам было еще проще подключаться к внешнему миру со своего ПК.

Ссылка выше предоставляет отличную и обширную документацию, и они стараются обновлять драйверы до последней версии Debian для Pi.

Jivings
источник
ТАК ТЫ нужен ленточный соединитель от пи к этому? Не могу найти нанимавшую фотографию вещи, но она выглядит очень громоздкой. У него есть множество примеров, так что это хорошо, я полагаю. +1
Петр Кула
Я не могу сказать, что использовал это, но я ожидаю, что так, хотя я, кажется, помню парня, использующего интерфейс USB в демоверсии. Это довольно громоздко, хотя да.
Jivings
1

Вот статья (на французском языке, которую переводит google translate) о Raspberry Pi, работающей с Xenomai .

Пьер-Жан Кудерт
источник
5
Всем привет. Как правило, мы не рекомендуем ответы, которые являются просто ссылками в случае перемещения связанной страницы. Не могли бы вы обобщить информацию на этой странице в своем ответе? Затем вы можете включить ссылку в качестве ссылки. Спасибо!
Jivings
1

RODOS - это еще один вариант. Это проект с открытым исходным кодом, разработанный Немецким аэрокосмическим центром и командой и студентами Университета проф. Черногории.

Он использует C ++, полностью написан объектно-ориентированным способом и поддерживает ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Raspberry Pi :), ...

В настоящее время он используется в спутниковых TET и в машинах LoTTo, если я не ошибаюсь.

Конечно, я бы предпочел использовать его выше Linux (что возможно), чтобы иметь лучшее из обоих миров - но тогда остаются вопросы РЕАЛЬНОГО ВРЕМЕНИ, потому что я не уверен, возможно ли, что Linux может предоставить правильный API.

Чтобы получить RODOS, нужно написать сообщение профессору Sergio Montenegro или DLR (Немецкий аэрокосмический центр).

Radagast
источник
1

кроме linux существуют операционные системы реального времени. Довольно популярным среди открытых источников является ChibiOS / RT:

это полная, портативная, с открытым исходным кодом, компактная и чрезвычайно быстрая ОСРВ (операционная система реального времени)

краткое введение можно найти по адресу http://chibios.org/dokuwiki/doku.php?id=chibios:documents:introduction . В отличие от Linux, вам также могут понравиться

Ну, есть некоторые варианты дизайна, которые следует объяснить и внести свой вклад, чтобы сделать ChibiOS / RT своеобразным дизайном. Само по себе ничего нового, но все это интересно.

или нет. если вам это нравится - экспериментирование с пи может стоить опыта на https://github.com/steve-bate/ChibiOS-RPi :

Вилка ChibiOS для экспериментов с Raspberry PI.

автор добавляет хороший гид в

http://www.stevebate.net/chibios-rpi/GettingStarted.html

лично для меня, когда речь заходит о rtos, linux - это как перенос кросс-альпийского снаряжения для нужд простой страны. Вы можете просто не нуждаться в этом. даже пи может быть слишком много. проверьте http://forum.arduino.cc/index.php?topic=144715.0 для еще меньшего веса :)

дрожание
источник
0

Посмотрите эту версию Hypriot Raspbian с RT_PREEMPT_FULL:

http://www.ehu.eus/ehusfera/pablogn/2016/01/20/real-time-kernel-for-the-raspberry-sbc/

Pablo
источник
1
Добро пожаловать в Raspberry Pi! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Ганима