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


60

Я знаю, що він працює під управлінням Linux і для Linux доступні патчі в реальному часі. Чи працювали б ці патчі?

Хто-небудь намагався ще одного оператора в режимі реального часу на Raspberry Pi?

Ідея полягає у використанні плати для регулювання та контролю завдань, які є критичними за часом.


2
Я думаю, що єдина унікальна причина, яка приходить в голову, чому ти не можеш бути, якщо закрите рішення GPU перешкоджає. За умови, що ви можете вирішити просто ігнорувати графічний процесор під час виконання завдань у режимі реального часу, я думаю, що розширення в режимі реального часу можуть працювати.
Кріс Страттон

7
Вся система малинових пі не відкрита для вас; питання полягає в тому, якщо частина, яка не є (GPU), буде готова залишатися поза дорогою під час виконання завдань у режимі реального часу, або якщо це неминуче вимагатиме або циклів шин для доступу до таран, або навіть "уваги" "з ядра ARM таким чином, що перешкоджало б жорстким тимчасовим цілям.
Кріс Страттон

4
Очевидно, RISCOS досить добре підходить для певних додатків у режимі реального часу, і це порт Raspberry Pi іде добре. * 8 ')
Марк Бут

4
RISCOS - це не в режимі реального часу (за вашим посиланням у Вікіпедії), так як це могло допомогти?
Lars Pötter

4
Патч CONFIG_PREEMPT_RT був продемонстрований на декількох процесорах ARM під управлінням Linux. Можуть виникнути певні проблеми із затримкою, але вони мають бути виміряні в порядку мікросекунд.
Прорив

Відповіді:


16

Можливо, вас зацікавить запуск Xenomai на RaspberryPi. Тут ви можете знайти підручник про те, як це зробити. У двох словах, Xenomai - це проект, який створив власні ядра Linux (вони надають патчі, які необхідно застосувати до джерел ядра), що дозволяє йому запускати інше ядро ​​(ядро Xenomai), яке є в реальному часі. Це дає можливість запускати програми Xenomai на широкому спектрі апаратних засобів без необхідності писати драйвери для них (оскільки Linux працює над дуже широким спектром апаратних засобів). Це дозволяє писати додатки простору користувачів RT, використовуючи пару різних доступних API API.


1
Яку максимальну частоту я можу отримати за допомогою цього інструменту? Мене цікавить управління двигуном постійного струму зі швидкістю округлення 1 кГц
Nicolás Arias

19

У ядрі Linux, включення PREEMPT_RTнадає обмежені затримки та API в режимі реального часу. Крім налаштування PREEMPT_RT, необхідно також вибрати SCHED_FIFOі SCHED_RRполітики та політики. І програмам потрібно встановити параметри реального часу, викликаючи відповідні API або використовуючи відповідні утиліти.

Згідно з навчанням з безкоштовними електронами: Realtime у вбудованому 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 , а "хорошою новиною" є те, що патч "скорочується", тому здається, що більша частина його потрапляє до основних джерел ядра. Ви можете знайти EXCELENT підручник про те , як застосовувати і використовувати його тут .
Авіо

1
Ну, і не забудьте вказати Adeos серед альтернатив, щоб забезпечити жорстку підтримку в реальному часі в Linux.
Авіо

2
Треба зазначити, що отримання PREEMPT_RT роботи з ядром Raspberry Pi не є прямим питанням, просто застосування патча створює непрацююче ядро. Крім того, у ядрі Raspberry Pi є багато нових драйверів, і ці драйвери не пройшли тестування з PREEMPT_RT, а також не були очищені від занадто довгого блокування режиму очікування. Це дуже багато незавершеної роботи, тобто.
Голий

2
Будь-які оновлення на цьому? Чи драйвери зараз досить стабільні, щоб використовувати цей патч ядра? Я хотів би працювати підручник для людей, які ще не склали ядро.
fabb

@fabb: Навіть через багато років все ще залишатимуться драйвери, які мають проблеми з вимогою rt. Ви дізнаєтесь лише запустивши його. До речі, останнім часом я бачу, що деякі проблеми в мережі колись натрапляють на пріоритети деяких програм для користувальницького простору, це несподівано. Хоча всі подібні ситуації відрізняються високою конфігурацією та додатком.
minghua

6

Wyolum маскує aLaMode (я називаю це Мигдальне Пі), щоб він змістився на вершині Pi в змозі складатись . Він має годинник у режимі реального часу, використовує aTiny 328, подає GPIO Real UART / power та є доступним для прошивки різними способами. Це чудово, тому що Pi може робити все, що завгодно, веб-сервер / базу даних, поки Arduino працює в режимі переривання в режимі реального часу.

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


1
Можливо, здається, що 2 мікроконтролери працюють, але, з іншого боку, це забезпечує роботу в режимі реального часу, якщо інші підходи недостатньо швидкі.
fabb

1
Будь-які підказки про те, як RPi чисто спілкувався з іншими µC, не уповільнюючи його цикл управління?
fabb

1
Так, але µC повинен був опитати UART, я думаю, щоб не допустити перерв UART відкласти таймер керування циклом управління. Я б тоді опитував UART на початку циклу управління і переконуюсь, що я не читаю багато байтів, щоб це не зайняло занадто багато часу? Чи могли буфери UART занадто легко переповнюватися таким чином? Або частота циклу керування буде настільки вищою за швидкість UART, що зчитування одного байта кожного циклу, якщо воно є, буде більш ніж достатньо?
fabb

1
Приємна пропозиція. BTW Raspberry Pi Alamode - вже каламбур. Режим Ala - це коли ви кладете морозиво на пиріг.
Ден

1
Дійсно? Хе-хе. Я задумався, що це означає. Має сенс зараз :)
Пьотр Кула

2

Найкраще рішення, що я бачив у цьому, - це X10i - контрольна плата в реальному часі для Raspberry Pi від Heber.

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

Посилання, наведене вище, пропонує чудову та обширну документацію, і вони намагаються підтримувати драйвери в курсі останньої версії Debian для Pi.


Так вам потрібен роз'єм стрічки від Pi до цього? Не можете знайти найману фотографію речі, але це виглядає дійсно об’ємно. У нього є багато прикладів, так що я гадаю. +1
Пьотр Кула

Я не можу сказати, що я ним користувався, але я би очікував цього, хоча, здається, пам’ятаю хлопця, що використовує USB-інтерфейс у демонстраційній версії. Це досить громіздке, хоча так.
Jivings

1

Ось стаття (переклад з французької google translate) про Raspberry Pi, що працює з Xenomai .


5
Привіт там. Зазвичай ми відмовляємо у відповідях, які є просто посиланнями на випадок, коли пов’язана сторінка рухається. Не могли б ви узагальнити інформацію на цій сторінці? Потім ви можете включити посилання в якості посилання. Дякую!
Стрітення

1

RODOS - це ще один варіант. Це проект із відкритим кодом, розроблений Німецьким аерокосмічним центром та командою та студентами університету проф. Чорногорії.

Він використовує C ++, повністю написаний об'єктно-орієнтованим способом і підтримує ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Raspberry Pi :), ...

В даний час використовується в супутниковому TET і в LoTTo машинах, якщо я не зрозумів це неправильно.

Звичайно, я вважаю за краще запустити його над Linux (що можливо), щоб мати найкращі з обох світів - але тоді питання СУЧАСНОГО ВРЕМЯ залишаються, тому що я не впевнений, чи можливо Linux може надати правильний API.

Щоб отримати RODOS, потрібно написати повідомлення професору Серхіо Чорногорі або DLR (Німецький аерокосмічний центр).


1

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

це повна, портативна, з відкритим кодом, компактна та надзвичайно швидка RTOS (операційна система в режимі реального часу)

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

Ну, є кілька варіантів дизайну, які слід пояснити та сприяти, щоб ChibiOS / RT став своєрідним дизайном. Нічого насправді нового, але все цікаве.

чи ні. якщо вам це подобається - експерименти над пі, можливо, будуть варті досвіду на https://github.com/steve-bate/ChibiOS-RPi :

ChibiOS-вилка для експериментів з малиновими 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/


1
Ласкаво просимо до Raspberry Pi! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Ghanima
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.