REAL TIME LINUX Embedded Linux Hugo Descoubes – mars 2014.

Slides:



Advertisements
Présentations similaires
Master SIR (M2) Année Développement en environnement J2EE de Web services pour l'interopérabilité du projet CASTORE ce stage de fin d’étude a.
Advertisements

Global Total Microcode Support (TMS ou GTMS) Microcode Management proactif pour System i, System p, System x et SAN.
GEF 435 Principes des systèmes d’exploitation
PC / Traitement numérique / Contrôle Environnement logiciel
GEF 435 Principes des systèmes dexploitation Les systèmes dexploitation en général (Tanenbaum 1.1 et 1.3)
Les Systèmes d’Information Financière Atelier conjoint ACBF / Banque Mondiale / AFRITAC de l’Ouest Gérer l’application dans le temps, sur les plans fonctionnel,
CRÉER UNE APPLICATION INTERNET RELIEE A UNE BASE DE DONNEES
GESTION D’IMPRISSION SOUS WINDOWS & LINUX
.NET MicroFramework Historique & état des lieux Architecture A lintérieur du MicroFramework Demo: Sumo Robot.NET MicroFramework.
La Gestion de la Configuration
SITools Présentation de l’outil (1/2)
Types des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
Chapitre I : Systèmes d’exploitation
Le Grid Computing Par Frédéric ARLHAC & Jérôme MATTERA.
Présentation de l’Architecture Windows NT
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
simulateur de réseau de machines UML connectées par WiFi mode ad-hoc
Jc/md/lp-01/05Boot Loader1 BOOT LOADER. jc/md/lp-01/05Boot Loader2 Objectif du chapitre Introduire la notion de Boot Loader Donner un aperçu de lorganisation.
Système d’exploitation pour l’embarqué
Présentation d’un design de carte vidéo
LANGAGE D’ASSEMBLAGE Architecture et Technologie des Ordinateurs
Système de stockage réseaux NAS - SAN
Bases et Principes de la Virtualisation. Votre infrastructure informatique ressemble-t-elle à cela ? 2.
Introduction aux Systèmes d’information Temps Réel
Les mesures comparatives réalisées entre VxWorks et INtime donnent un net avantage au premier. L'expérience et la volonté de Wind River de garder un RTOS.
Création, configuration et déploiement d’un OS Windows Embedded CE.
LA VIRTUALISATION Par AVIGNON, CHOMILIER, MIGNOT 1.
par Bernard Maudhuit Anne-Marie Droit
Applications Chapitre B17 et C18
ECF 5 PRESENTATION « BULLE APPLICATIVE »
DeltaPROD Suivi des interventions Gestion de configuration
Programme et Langage C++
Informatique temps réel et réseaux de terrain – ELEC365
Des outils pour le développement logiciel
Synthèse d’activités Présentation.
IFT 6800 Atelier en Technologies d’information
Windows Server Virtualization
Mise en oeuvre et exploitation
Qnx QNX est un système d'exploitation temps réel (dont l'objectif est de fonctionner dans un environnement contraint temporellement) adapté aux applications.
AFPA CRETEIL 1-1 Windows NT Environnement Windows NT Chapitre 1.
Power PC embarqués et accélérateurs matériels pour des cibles de type FPGA Julien Dubois.
La programmation système
Chapitre 5 Test de circuits séquentiels
L’Audio sur PC Comparaison Numérique vs Analogique Comparaison Audio sur PC vs Hardware dédié (DSP) Rmq: beaucoup de simulitudes avec la vidéo, mais débit.
Les systèmes d’exploitation
15/02/2008 v Socle de virtualisation des serveurs Linux version du 15/02/2008.
Logiciel libre ou commercial? Benjamin Thominet, le 31/01/2004.
NOTIONS DE BASE DES SYSTÈMES TEMPS-RÉEL Sujets Concepts de processus/thread concurrents –Windows NT et la programmation temps réel –Synchronisation et.
L’enseignement de spécialité SLAM
Poly Defense Soutenance de Projet de programmation oriEntee objet
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
The leading Workspace Performance solution
1 Démo SoftGrid. Le Séquenceur SoftGrid Utilisation d’un « packageur » SoftGrid Possibilité de “séquencer” en ligne de commande (CLI) Existence d’outils.
Les logiciels de virtualisation
1 Matthieu GUIBERT Rodolphe DELLA NEGRA 1. Introduction, Concepts de base, Boucles. TP 2. Tableaux,structures,conditions, séquences, chaînes de caractères,
BOARD SUPPORT PACKAGE Hugo Descoubes – mars 2014 Embedded Linux.
KERNEL LINUX Hugo Descoubes – Janvier 2014 Embedded Linux.
Comment choisir son MCU (ou autre DSP, FPGA …) ?
GESTION DU BUS Hugo Descoubes - Octobre 2012 Universal Serial Bus.
APPLICATION LAYER Hugo Descoubes - Octobre 2012 Universal Serial Bus.
AUTOUR DE L’USB 2.0 Hugo Descoubes - Octobre 2012 Universal Serial Bus.
1Boulogne Informatic Club PRESENTATION DE WINDOWS 10.
Système de récupération de données pour EMC Avamar.
Chapitre 12 Surveillance des ressources et des performances Module S41.
Présentation de mes compétences Angele Gary Epreuve E6 BTS SIO
Chapitre 10 Maintenance d'Active Directory
Présentation générale. Introduction Enregistreur vidéo numérique 4 canaux d’un excellent rapport qualité-prix Solution idéale pour les clients cherchant.
Transcription de la présentation:

REAL TIME LINUX Embedded Linux Hugo Descoubes – mars 2014

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Un système temps réel doit satisfaire à des contraintes temporelles et garantir un déterminisme logique et temporel à l’exécution. Attention, temps réel ne veut pas forcément dire rapide (régulation de température, régulation de procédés chimiques, applications climatiques …). Une solution technologique se voulant temps réel est le plus souvent la résultante d’une alchimie entre choix de la solution matérielle (MCU, FPGA, SoC, GPP … cache-less, out-of-order-engine CPU …) et logicielle portée (OS-less, OS, RTOS) : Processing time System failure (if hard real time processing) jitter t n.Ts (n+1).Ts (n+2).Ts (n+3).Ts (n+4).Ts (n+5).Ts (n+6).Ts deadline (Sample time)

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Rappelons les différentes hiérarchies et terminologies de temps réel cohabitant souvent dans une même application : Temps réel dur (Hard Real Time) : échéance temporelle vitale/critique à garantir (assistance au freinage, guidage de missile, pacemaker …) Temps réel ferme (Firm Real Time) : échéance temporelle à garantir mais non vitale, résultat inutile si deadline dépassée mais applicatif toujours viable (vidéo, audio …) Temps réel mou (Soft Real Time) : échéance à garantir mais réponses tardives et latences tolérées (IHM, connectivités …) Non temps réel : échéance non garantie (debug, profilage …)

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Rappelons que dans le cadre de développement d’applications pouvant être temps réel, plusieurs solutions s’offrent au développeur : Séquenceur (homemade) : Système OS-less sans OS/RTOS avec fonction ‘’main’’ implémentant un séquenceur cyclique (exemple de l’offline scheduling). Solutions peut évolutives et pouvant être difficiles à maintenir. Real Time Operating System (exécutif temps réel) : exécutifs proposant le plus souvent très peut de services (scheduling, parfois stack IP, file system … souvent sans gestion de MMU et drivers non inclus) mais offrant une empreinte mémoire faible (on-chip memory) ainsi qu’un grand déterminisme temporel avec très peu de jitter. Solutions évolutives et permettant un coût matériel global réduit. Exemple : FreeRTOS, RTX, VxWorks, uC/OS-III, SYS/BIOS …

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Standard Operating System : les systèmes d’exploitation dans le monde du PC (famille Windows, MAC OS X, distro GNU/Linux …) sont des systèmes temps réel mou. Toute application lancée aura, tôt ou tard, sa chance afin d’accéder à une ressource CPU, ceci est du à la politique d’ordonnancement (scheduling policy) de ces systèmes et à la nature non vitale/critique des applicatifs. Dans ce chapitre, nous allons nous intéresser à rendre un système GNU/Linux temps réel puis nous validerons les performances de notre système à l’aide d’outils de benchmarking.

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Observons les principaux acteurs du marché proposant une évolution vers une solutions Linux temps réel : Xenomai (http://www.xenomai.org/) : solution proposant un co-noyau temps réel (nucleus) cohabitant avec le noyau standard Linux. Xenomai est porté sur un hyperviseur (Adeos ou Adaptative Domain Environment for Operating Systems) ou nanokernel HAL (Hardware Abstraction Layer). Cet hyperviseur assure notamment le routage des interruptions des couches matérielles vers les systèmes ou domaines portés (Interrupt Pipe). Plusieurs API temps réel ou skins sont accessibles. Néanmoins, des skins maison peuvent être développées même si POSIX reste à privilégier pour des soucis de portabilité. En 2003, Xenomai fusionne avec le projet RTAI pour devenir un projet indépendant en 2005.

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Linux-rt ou patch PREEMPT-RT (https://rt.wiki.kernel.org) : branche du kernel proposant un patch pour le noyau linux standard permettant de le rendre temps réel. Le patch PREEMPT-RT influe sur la politique d’ordonnancement en rendant notamment préemptible la majeure du code du noyau et mettant par exemple en œuvre des mécanisme de d’héritage de priorité pour la gestion des sémaphores et des spinlocks (API kernel). RTAI (Real Time Application Interface) : extension temps réel du noyau travaillant également avec l’hyperviseur Adeos (cf. Xenomai). Il s’agit d’un projet universitaire initialement conçu comme une variante de RTLinux (projet maintenu puis abandonné en 2011 par Wind River).

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Avant d’installer nos premiers systèmes Linux temps réel, validons les outils de test sur un système standard. Nous utiliserons les utilitaires rt-tests et notamment l’outil Cyclictest (cf. https://rt.wiki.kernel.org/index.php/Cyclictest). Récupérer les sources des utilitaires, les cross-compiler et installer l’utilitaire Cyclictest dans le rootfs de la BBB : Côté host git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git cd rt-tests export PATH=/<cross_compiler_path>/bin/:$PATH export CC=arm-linux-gnueabihf-gcc make CROSS_COMPILE=arm-linux-gnueabihf- all cp ./cyclictest /media/rootfs/usr/bin/ Côté BBB cyclictest –help cyclictest -t1 -p 80 -n -i 10000 -l 10000

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Observons en pseudo code le travail de stress réalisé par l’utilitaire Cyclictest et analysons les informations de sortie : clock_gettime((&now)) next = now + interval while (!shutdown) { clock_nanosleep((&next)) diff = calcdiff(now, next) # update stat-> min, max, avg, now, cycles # Update the histogram } Process priority 80 10000us interval (deadline) 10000 repetitions All numbers in uS Jitter Process and cyclictest informations Min latency Current latency Average latency Max latency

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Prenons un exemple de test : 5 threads Processes priority 80 1000us interval (deadline) 1000 Repetitions (loops) All numbers in uS Jitter Processes informations Intervals repetitions Min latency Current latency Average latency Max latency

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Le patch PREMPT-RT consiste en l’application d’une série de patchs au kernel ainsi qu’en la modification du fichier de configuration du noyau. Les patchs officiels pour PREEMPT-RT sont directement accessible sur kernel.org (https://www.kernel.org/pub/linux/kernel/projects/rt/ ). Nous constaterons que cette solution est très simple et rapide à appliquer et ne nécessite aucune couche de virtualisation supplémentaire (cf. Adeos). Le système résultant est plus léger qu’avec Xenomai/RTAI. De plus, aucune API user space spécifique n’est nécessaire (API POSIX standard), cette solution ne nécessite donc aucune modification des applicatifs déjà développés en user space.

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Se rendre sur le wiki officiel de PEEMPT-RT (https://rt.wiki.kernel.org /index.php/RT_PREEMPT_HOWTO ), récupérer la dernière version stable des patchs associée à notre release de kernel (3.8.13) et les appliquer. Se placer dans le répertoire du kernel ~/elinux/work/kernel/kernel/ : Par curiosité, extraire une archive des patchs appliqués et observer le type de modifications appliquées au code kernel : cd ~/elinux/work/kernel/kernel/ wget http://www.kernel.org/pub/linux/kernel/projects/rt/3.8/stable/patch-3.8.13.13.bz2 cd kernel bzcat ../patch-3.8.13.13.bz2 | patch -p1

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Nous allons maintenant modifier le fichier de configuration du kernel avant de relancer une compilation complète. Suivre le tutoriel en ligne sur le site officiel du patch PREEMPT-RT. Attention, certaines des configurations à appliquer sont dépendantes de l’architecture cible, l’exemple donné en ligne est pour une architecture x86 (architectures les mieux supportées par le patch en 2014). Activer les services suivants (interface ncurse, recherche avec /) : PREEMPT : modèle de préemption du kernel PREEMPT_RCU (read Copy Update, mécanisme de type exclusion mutuelle), TREE_PREEMPT_RCU, RCU_BOOST, RCU_BOOST_PRIO=1, RCU_BOOST_DELAY=500,

Temps Réel – Solutions – patch PREMPT-RT – Xenomai - Benchmarking REAL TIME LINUX Il me reste à faire : Benchmark sur jitter avec et sans charge (cyclictest et hackbench) Partie Xenomai : présentation, procédure d’installation, mise en œuvre sur BBB, benchmark, API skins, dév d’une application (CAN)

Merci de votre attention !