20
FPGA comme co-processeur de Xenomai/Linux temps-r´ eel G. Goavec-M´ erou Bases OS temps-partag´ e OS temps-r´ eel Au dela des processeurs FPGA Conclusion sur les OS Environnement mat´ eriel Mise en œuvre RTOS FPGA comme co-processeur de Xenomai/Linux temps-r´ eel Gwenha¨ el Goavec-M´ erou, J.-M Friedt 30 d´ ecembre 2016 1 / 20

FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

  • Upload
    lecong

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 2: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 3: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 4: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 5: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 6: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 7: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 8: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 9: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 10: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 11: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 12: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 13: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 14: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 15: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 16: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 17: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 18: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 19: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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

Page 20: FPGA comme co-processeur de Xenomai/Linux temps-réeljmfriedt.free.fr/xenomai_rtos.pdf · satellites : utilisation d’un syst eme embarqu e, GNU/Linux Magazine France, Hors S erie

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