fpga comme co-processeur de xenomai/linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf ·...
TRANSCRIPT
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
RTOS
FPGA comme co-processeur deXenomai/Linux temps-reel
Gwenhael Goavec-Merou, J.-M Friedt
30 decembre 2016
1 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Pourquoi un ordonnanceur
Cas du bare-metal (sans OS).Un processeur
• n’execute qu’une instructionpar cycle d’horloge ;
• n’as qu’un seul fil detraitement ;
• presente des sauts surinterruptions.
⇒ mise en place d’une machine aetat basique pour la gestion desevenements.Mais :
• priorite statique ;
• pas d’evolution en cours defonctionnement.
v o l a t i l e c h a r c ;v o l a t i l e r e c e i v e d c h a r ;v o l a t i l e t i m e r f i r e d ;
v o i d t i m e r i s r ( ) {/∗ someth ing ∗/t i m e r f i r e d = 1 ;
}
v o i d u s a r t i s r ( ) {c = USART DR ;r e c e i v e d c h a r = 1 ;
}i n t main ( ) {
r e c e i v e d c h a r = 0 ;t i m e r f i r e d = 0 ;i n i t u s a r t ( ) ;w h i l e ( 1 ) {
i f ( r e c e i v e d c h a r ) {/∗ do someth ing ∗/r e c e i v e d c h a r = 0 ;
}i f ( t i m e r f i r e d ) {
/∗ do o t h e r t h i n g ∗/t i m e r f i r e d = 0 ;
}SLEEP MODE ;
}}
2 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Ordonnanceur
Un systeme d’exploitation est multi-tache :⇒ un seul processus peut etre execute a la foisMais de nombreux processus concurrents sont chargesdynamiquement et attendent d’obtenir la ressource CPU (commandesps aux ou htop).⇒ utilisation d’un ordonnanceur pour distribuer le temps CPU entreles processus concurrents.Processus defini par :
• une priorite (plus la priorite est haute plus la tache va s’executerrapidement/frequemment) ;
• un etat (running, runnable, sleeping)
L’ordonnanceur donne le type de politique du systeme(temps-partage, temps-reel)
3 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Principe du temps partages
Systeme GNU/Linux ⇒ ordonnancement temps-partage.But : donner l’impression a l’utilisateur que tous les processuss’executent en parallele.
• equite d’acces aux ressources CPU → tous les processusdisposent d’un timeslice (ou quantum) de temps ;
• processus decrit par une priorite dynamique.
• preemption reguliere des taches afin de rendre le systeme reactif(mais au depends des latences).
4 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Principe de preemption
Type de basculement entre taches :
task1
task2
timeslice
RUNNING
RUNNING
RUNNABLE
RUNNABLE
scheduler
timeout
Depassement de la tranche detemps allouee
task1
task2
RUNNING
RUNNING
SLEEPING
RUNNABLE
I/O access
scheduler
Acces bas niveau
task1
task2
RUNNING
RUNNINGRUNNABLE
scheduler
event
RUNNABLE
evenement externe (interruption)
Dans tous les cas, l’ordonnanceurva choisir la tache la plusprioritaire (la meme pouvantreprendre la main).
5 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Evolution de la priorite
En parallele de l’election d’un nouvelle tache, celle qui a etepreemptee voit sa priorite evoluer, selon un ensemble de criteres :
• acces IO ;
• anciennete ;
• duree du traitement ;
• ...
Limitation ⇒ comportement non predictif. Il n’est pas possible deprevoir a priori quel processus aura la main suite a un evenement.Certitude qu’une tache ne s’executera pas dans un temps borne
6 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
stabilite d’une tache periodique
Signal periodique avec sleep() (systeme noncharge. 50µs/div)
Signal periodique avec sleep() (systemecharge. 50µs/div)
Signal periodique sur timer (systeme noncharge. 10ms/div)
Signal periodique sur timer (systeme charge.10ms/div)
7 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Concepts de temps-reelIdee recue erronee : le temps reel est une question de vitesse.Une definition : un systeme informatique est soumis a des contraintestemps reel si l’instant auquel il parvient au terme d’une operationentre en consideration dans la validite du resultat de cette operationBut :
• fournir un environnement a comportement predictif ;
• garantir des latences bornees
Hierarchie des solutions :
• temps-reel materiel (FPGA)
• temps-reel dur (latences de l’ordre de quelques dizaines de µs)
• temps-reel mou (Real Time Linux 1, modif. de l’ordonnanceur)
• absence de borne (non temps-reel)
Nombreuses solutions existantes (PREEMPT RT de RTLinux, RTAI,VxWorks, ...).Nous allons etudier une solution de temps reel dur : Xenomai
1. http://www.marketwatch.com/story/
the-linux-foundation-announces-project-to-advance-real-time-linux-2015-10-058 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Xenomai : une solution cooperative
Xenomai s’exeecute en parallele de Linux.But :
• conserver les capacites d’un systeme GNU/Linux pour les tachesgeneralistes/non contraintes temporellement ;
• adjoindre la possibilite d’executer des taches temps-reels.
Principe :
• abstraction du materiel :IPipe ;
• chaque noyau est executedans un domaine disposantd’une priorite ;
• une tache temps-reel peututiliser des pilotes Linux etreciproquement
Noyau
Linux
LinuxProcess.
Xenomai
Process.temps−reel
Materiel
uti
lisa
teu
rn
oy
au
skin
s
ADEOS/I−pipe
Domaine 2Domaine 1
Basculement de domaine ⇒ changement d’ordonnanceur.
9 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Stabilite d’une tache periodique
Signal periodique avec sleep() (systeme noncharge. 50µs/div)
Signal periodique avec sleep() (systemecharge. 50µs/div)
Signal periodique sur timer (systeme noncharge. 50µs/div)
Signal periodique sur timer (systeme charge.50µs/div)
10 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Inversion de prioriteRisque de bloquage de l’ordonnanceur si une tache de faible de priorite pose un
mutex qui empeche une tache de forte priorite de continuer son execution 2
Principe :1 un thread de priorite basse prends un mutex puis se fait
preempter ;2 un thread de priorite forte est bloque sur le meme mutex ;3 un troisieme thread de priorite prends la main et ne la rends pas.
⇒ le thread de priorite moyenne bloque le thread de forte priorite.
SLEEPING
task3(10)
task2(50)
task1(99)
event
SLEEPING
RUNNABLE
RUNNING
RUNNABLE RUNNING
RUNNING
mutex_lock(m1)
mutex_lock(m1)
RUNNABLE
event
2. A. Statsenko, The First Bug on Mars (2016), ahttp://www.viva64.com/en/b/0462/, et les transparents qui y sont citehttp://www.slideshare.net/jserv/priority-inversion-30367388 11 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Le temps reel : application
Exemple de l’acquisition d’une image :sur un OS multitaches, il faut couper toutes les interruptions pendantla capture des pixels ⇒ perte du scheduler (monotache) et de lacommunication reseau.
Exemple d’une carte son implementee de facon logicielle→ exploitation de la Queued ADC (tampon) 3
3. S. Guinot, J.-M Friedt, La reception d’images meteorologiques issues desatellites : utilisation d’un systeme embarque, GNU/Linux Magazine France, HorsSerie 24 (Fevrier 2006)
12 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Au dela des processeurs ...
• Ajouter des peripheriques pour decharger les processeur :coprocesseurs dedies pour decharger le processeur de tachesspecifiques complexes (codec audio, ethernet).
• Alternative au temps reel : le materiel reconfigurable se chargedes operations rapides et decharge le processeur de tachesimmediates (UART, FIFO, ADC du coldfire par exemple).
www.armadeus.org
13 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Coprocesseur materiel dans lesmicrocontroleurs
Analog Devices ADuC7026 : quelques cellules de portes logiques
(Re)configurables depuis le firmwarePLACLK = 0 x0003 ; // Clk Source c o n f i g u r a t i o nPLAELM0 = 0 x0018 ; // output = P0 . 4 , P0 . 5PLAELM1 = 0x00CC ;PLAELM2 = 0x000A ;PLAELM3 = 0 x0058 ;PLAELM4 = 0 x0246 ;PLAELM5 = 0 x0258 ;
. . .PLADIN=0 x f f f f ;
14 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Materiel reconfigurable : le FPGA• Le FPGA permet de s’adapter a chaque nouvelle application
sans necessiter d’ajouter du materiel (theorique : mise en formedes signaux).
• Camera : le flux video impose la cadence des donnees
• Une approche CPU seul avec OS necessite de couper toutes lesinterruptions (et donc d’arreter l’OS)
• ici, le FPGA stocke l’image, puis la transfere au CPU
15 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
FPGA+CPU• le CPU est en charge des taches non-temps reel (reseau,
communication homme-machine, pre et post-traitements)• le FPGA est en charge des taches respecant un temps reel dur
(ici, remplir une FIFO de donnees d’un ADC rapide)
16 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Temps-reel materiel : FPGA
Composant naturellement parallele ⇒ tous les traitements sonteffectues en meme temps.Les traitements ne reposent pas sur un jeu d’instruction, une ALU etune unite de controle, mais sur la combinaison d’elements de logiquesimple.Comportement :
• parfaitement predictible ;
• latences connues par avance et toujours identiques ;
• traitements contraints par le temps de propagation (periode del’horloge).
17 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Conclusion
Temps-partage :
• adapte a un poste de travail. Fluidite de basculement ;
• impossible de determiner les bornes des latences.
Temps-reel :
• latences bornees ;
• comportement predictible ;
• mais temps-reel logiciel ⇒ fluctuations des latences exprimeesen dizaines de µs.
18 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Environnement materielLe materiel utilise, une carte Armadeus Systems APF27, dispose d’unprocesseur generique couple a un FPGA. Un bus de communicationrapide connecte les deux composants (fig 1).
Figure – Environnement materiel utilise : carte APF27.
La communication entre CPU et FPGA se fait en utilisant leprotocole wishbone.Methodologie egalement valable pour le bus AXI (carte Redpitaya,Zedboard a base de Zynq et de0nanoSoc ou de1Soc a base deSocFPGA).
19 / 20
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. Goavec-Merou
Bases
OStemps-partage
OS temps-reel
Au dela desprocesseurs
FPGA
Conclusion sur lesOS
Environnementmateriel
Mise en œuvre
Mise en application
• qualification du temps-partage et du temps-reel ;
• exploitation du FPGA, decouverte de la communicationCPU-FPGA, creation d’un design pour compter la periode d’unsignal connecte au composant.
• demonstration sur plateforme Armadeus Systems APF27(processeur iMX27)
• possibilite de faire fonctionner Xenomai sur OlinuxinoA13microsur un noyau ancien : procedure decrite danshttp://jmfriedt.free.fr/A13_v2.pdf (p.8) en utilisantl’archive buildroot dehttps://github.com/trabucayre/buildroot-a13-olinuxino
API Xenomai :www.xenomai.org/documentation/trunk/html/api/group__task.html
et exemplewww.xenomai.org/documentation/xenomai-2.4/html/api/trivial-periodic_
8c-example.html
20 / 20