Est-il possible d'utiliser un logiciel en temps réel?


60

Je sais qu'il fonctionne sous Linux et que des correctifs en temps réel sont disponibles pour Linux. Est-ce que ces patchs fonctionnent?

Quelqu'un a-t-il essayé un autre système d'exploitation en temps réel sur le Raspberry Pi?

L'idée est d'utiliser le tableau pour la régulation et le contrôle des tâches critiques.


2
Je pense que la seule raison unique qui me vienne à l’esprit n’aurait pu être envisagée si la solution GPU fermée venait à gêner. À condition que vous puissiez décider d’ignorer le GPU alors que dans vos tâches en temps réel, je penserais que les extensions en temps réel pourraient fonctionner.
Chris Stratton

7
Le système entier de framboise pi n'est pas ouvert pour que vous puissiez le modifier; la question serait de savoir si la partie qui ne fait pas partie (le GPU) serait disposée à rester à l'écart pendant l'exécution de vos tâches en temps réel, ou si cela va inévitablement exiger soit des cycles de bus pour accéder à la RAM, soit même une "attention" "du noyau ARM d'une manière qui contrecarrerait les objectifs de timing difficiles.
Chris Stratton

4
Apparemment, RISCOS est assez bien adapté à certaines applications en temps réel et son port Raspberry Pi se porte bien. * 8 ')
Mark Booth

4
RISCOS n'est pas un OS en temps réel (selon votre lien Wikipedia), alors comment pourrait-il vous aider?
Lars Pötter

4
Le correctif CONFIG_PREEMPT_RT a été présenté sur plusieurs processeurs ARM exécutant Linux. Il peut y avoir des problèmes de latence, mais ceux-ci doivent être mesurables en quelques microsecondes.
Percée

Réponses:


16

Vous pouvez être intéressé par l'exécution de Xenomai sur RaspberryPi. Ici vous pouvez trouver un tutoriel sur la façon de procéder. En un mot, Xenomai est un projet qui a créé un noyau Linux personnalisé (ils fournissent des correctifs devant être appliqués aux sources du noyau) lui permettant d’exécuter un autre noyau (noyau Xenomai) en temps réel. Cela permet d’exécuter des applications Xenomai sur une large gamme de matériels sans avoir à écrire de pilotes (car Linux fonctionne sur une très large gamme de matériels). Cela permet d’écrire des applications d’espace utilisateur RT à l’aide de plusieurs API RT disponibles.


1
Quelle est la fréquence maximale que je peux obtenir avec cet outil? Je suis intéressé par le contrôle d'un moteur à courant continu à une vitesse arrondie à 1 kHz
Nicolás Arias

19

Dans le noyau Linux, l'activation PREEMPT_RTfournira des latences limitées et des API en temps réel. Outre la configuration PREEMPT_RT, les stratégies SCHED_FIFOet SCHED_RRdoivent également être sélectionnées. Et les applications doivent définir des paramètres en temps réel en appelant les API appropriées ou en utilisant les utilitaires appropriés.

Selon une formation sur les électrons libres: Realtime in Embedded Linux , PREEMPT_RT était un projet intégrant des fonctionnalités temps réel dans le noyau. Il est complètement intégré aux flux de noyau 2.6.33 et 3.0. Voir le document, vous trouverez tout.

Il existe essentiellement deux approches pour apporter une fonctionnalité temps réel au noyau Linux:

  • Modifier à l'intérieur du noyau, c'est-à-dire PREEMPT_RTprojet.
  • Exécutez le côte à côte une partie en temps réel avec un noyau normal et en dessous du noyau normal, il y a eu trois générations: RTLinux, RTAIet Xenomai. ( Aedoscomme Aviomentionné ci-dessous?)

Modifier:


2
Bienvenue sur Raspberry Pi, bonne réponse! Le RT PREEMPT patchpar Ingo Molnar utilisé conjointement avec High Resolution Timers(HRT) soutien, permettent le noyau d'atteindre dur en temps réel des capacités. Actuellement, son support atteint les noyaux 3.4.11 , et la "bonne nouvelle" est que le correctif "est en train de rétrécir". Il semble donc que la majeure partie de celui-ci est incluse dans les sources principales du noyau. Vous pouvez trouver un excellent tutoriel pour savoir comment appliquer et l'utiliser ici .
Avio

1
Euh, et n'oubliez pas de citer Adeos parmi les alternatives pour fournir un support en temps réel difficile sous Linux.
Avio

2
Je dois mentionner que faire fonctionner PREEMPT_RT avec le noyau Raspberry Pi n’est pas une mince affaire, l’application du correctif produit un noyau qui ne fonctionne pas. En outre, le noyau de Raspberry Pi contient de nombreux nouveaux pilotes, qui n'ont pas été testés avec PREEMPT_RT et n'ont pas non plus été supprimés des périodes de blocage excessif. C'est vraiment un travail en cours, c'est-à-dire.
Nakedible

2
Des mises à jour sur celui-ci? Les pilotes sont-ils maintenant suffisamment stables pour utiliser ce correctif de noyau? J'aimerais un tutoriel de travail pour les personnes qui n'ont pas encore compilé de noyau.
Fabb

@fabb: Même après de nombreuses années, il y aura toujours des pilotes qui rencontreront des problèmes techniques par rapport à leur exigence. Vous ne le saurez qu'en l'exécutant. En passant, récemment, je constate un problème informatique inattendu qui a mis en évidence les priorités de certaines applications d’espace utilisateur. Bien que toutes ces situations soient très spécifiques à la configuration et aux applications.
mardi

6

Wyolum possède l’aLaMode (je l’appelle Almond Pi) pour s’adapter sur le Pi de manière empilable. Il a une horloge en temps réel, utilise un aTiny 328, est alimenté par le GPIO Real UART / power et est flashable de différentes manières. C'est formidable parce que le Pi peut faire ce que vous voulez, serveur Web / base de données, tandis que l'Arduino fonctionne en interruption en temps réel.

entrez la description de l'image ici


1
Cela pourrait sembler un peu peu pratique de faire fonctionner deux microcontrôleurs, mais d'un autre côté, cela garantit un fonctionnement en temps réel si les autres approches ne sont pas assez rapides.
Fabb

1
Des indices sur la manière dont le RPi communiquerait proprement avec l'autre µC sans ralentir sa boucle de contrôle?
Fabb

1
Oui, mais le µC devrait interroger l'UART, je suppose, pour ne pas laisser les interruptions UART retarder l'interruption du minuteur de la boucle de contrôle. Puis-je alors interroger l'UART au début de la boucle de contrôle et m'assurer de ne pas lire trop d'octets pour ne pas prendre trop de temps? Ou bien les tampons UART pourraient-ils déborder trop facilement de cette façon? Ou bien la fréquence de la boucle de contrôle serait-elle tellement supérieure à la vitesse UART qu'une lecture d'un octet par boucle, si elle était disponible, serait plus que suffisante?
Fabb

1
Bonne suggestion. BTW Raspberry Pi Alamode est déjà un jeu de mots. En mode Ala, vous mettez de la glace sur une tarte.
Dan

1
Vraiment ? Héhé. Je me demandais ce que cela voulait dire. Cela a du sens maintenant :)
Piotr Kula

2

La meilleure solution que j'ai vue est la carte de contrôle en temps réel X10i pour Raspberry Pi de Heber.

Le X10i est un contrôleur temps réel universel, puissant et sécurisé qui permet de contrôler plusieurs entrées / sorties, via USB, à partir de n'importe quel système PC. Heber propose désormais une assistance dans de nombreux langages de programmation, ce qui permet aux programmeurs, aux inventeurs et aux développeurs de se connecter encore plus facilement au monde extérieur à partir de leur PC.

Le lien ci-dessus fournit une documentation excellente et complète. Ils essayent de maintenir les pilotes à jour avec la dernière version de Debian for Pi.


Vous avez donc besoin d’un connecteur ruban du Pi pour cela? Impossible de trouver une photo des employés mais cela semble vraiment encombrant. Il y a beaucoup d'exemples, donc c'est bien, je suppose. +1
Piotr Kula

Je ne peux pas dire que je l'ai utilisé, mais je m'y attendrais bien qu'il me semble me souvenir du type utilisant une interface USB dans la démo. C'est assez encombrant mais oui.
Jivings

1

5
Salut. En règle générale, nous déconseillons les réponses qui ne sont que des liens au cas où la page liée se déplace. Pourriez-vous résumer les informations sur cette page dans votre réponse? Vous pouvez ensuite inclure le lien en tant que référence. Merci!
Jivings

1

RODOS est encore une autre option. Il s'agit d'un projet Open Source développé par le centre aérospatial allemand et l'équipe et les étudiants de l'université du professeur Montenegro.

Il utilise C ++, est complètement écrit de manière orientée objet et supporte ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Raspberry Pi :), ...

Il est actuellement utilisé dans les satellites TET et dans les machines LoTTo si je ne me trompe pas.

Bien sûr, je préférerais l'exécuter au-dessus de Linux (ce qui est possible) pour avoir le meilleur des deux mondes - mais les questions en temps réel demeurent, car je ne suis pas sûr qu'il soit possible que Linux puisse fournir la bonne API.

Pour obtenir RODOS, il faut écrire un message au professeur Sergio Montenegro ou au DLR (Centre aérospatial allemand).


1

En plus de Linux, il existe des systèmes d'exploitation en temps réel. ChibiOS / RT est très populaire parmi les logiciels libres:

est un système d'exploitation temps réel complet, portable, open source, compact et extrêmement rapide

une brève introduction est disponible à l' adresse http://chibios.org/dokuwiki/doku.php?id=chibios:documents:introduction . être différent de linux, vous pourriez aussi aimer les lectures de

Certains choix de conception doivent être expliqués et contribuer à faire de ChibiOS / RT un modèle particulier. Rien de vraiment nouveau en soi mais l'ensemble est intéressant.

ou pas. si vous aimez ça - expérimenter sur le pi pourrait valoir l'expérience sur https://github.com/steve-bate/ChibiOS-RPi :

Fourche ChibiOS pour l'expérimentation Raspberry PI.

l'auteur ajoute un bon guide à

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

Personnellement, en ce qui concerne les RTO, pour moi, Linux, c'est comme transporter un équipement alpin pour répondre aux besoins de la plaine. vous pourriez ne pas en avoir besoin. même un pi peut être trop. consultez http://forum.arduino.cc/index.php?topic=144715.0 pour encore moins de poids :)


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.