Realtime applications with RTAI. R.KOCIK Embedded Systems department



Documents pareils
IFT Systèmes d exploitation - TP n 1-20%

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Once the installation is complete, you can delete the temporary Zip files..

Exécutif temps réel Pierre-Yves Duval (cppm)

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Instructions Mozilla Thunderbird Page 1

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Génération de code binaire pour application multimedia : une approche au vol

WEB page builder and server for SCADA applications usable from a WEB navigator

VTP. LAN Switching and Wireless Chapitre 4

Acronymes et abréviations. Acronymes / Abbréviations. Signification

Contents Windows

Editing and managing Systems engineering processes at Snecma

Vanilla : Virtual Box

Exercices sur SQL server 2000

Guide d'installation rapide TFM-560X YO.13

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

NOM ENTREPRISE. Document : Plan Qualité Spécifique du Projet / Project Specific Quality Plan

DOCUMENTATION - FRANCAIS... 2

Windows Server Chapitre 1: Découvrir Windows Server 2008

XtremWeb-HEP Interconnecting jobs over DG. Virtualization over DG. Oleg Lodygensky Laboratoire de l Accélérateur Linéaire

USB 598. Quick Start Guide (Windows) Guide de démarrage rapide (Windows) USB Modem. Modem USB.

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

SERVEUR DÉDIÉ DOCUMENTATION

affichage en français Nom de l'employeur *: Lions Village of Greater Edmonton Society

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

Ordonnancement temps réel

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

1 Mesure de la performance d un système temps réel : la gigue

Votre premier projet Android

Linux embarqué, Linux Temps Réel : présentation

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Tutoriel de formation SurveyMonkey

REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION.

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

VMware ESX : Installation. Hervé Chaudret RSI - Délégation Centre Poitou-Charentes

Principe de TrueCrypt. Créer un volume pour TrueCrypt

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Summary / Sommaire. 1 Install DRIVER SR2 USB01 Windows seven 64 bits / Installation du DRIVER SR2 USB01 Windows seven 64 bits 2

Un serveur web léger et ouvert

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Notice Technique / Technical Manual

Practice Direction. Class Proceedings

HSCS 6.4 : mieux appréhender la gestion du stockage en environnement VMware et service de fichiers HNAS Laurent Bartoletti Product Marketing Manager

DOCUMENTATION - FRANCAIS... 2

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Chrome for Work. CRESTEL - 4 décembre 2014

Package Contents. System Requirements. Before You Begin

Modélisation des interfaces matériel/logiciel

Frequently Asked Questions

We Generate. You Lead.

INSTRUMENTS DE MESURE SOFTWARE. Management software for remote and/or local monitoring networks

Software and Hardware Datasheet / Fiche technique du logiciel et du matériel

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INFO-F-404 : Techniques avancées de systèmes d exploitation

Nouveautés printemps 2013

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE :

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

Introduction aux systèmes temps réel

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

How to Login to Career Page

Linux pour l embarqué. 1 Module E4 : Systèmes temps-réel Audrey Marchand

Dexia Guide d installation de NetWorker Server 25 juin Legato Systems, Inc.

Manuel de l Administrateur

WDpStats Procédure d installation

Project 1 Experimenting with Simple Network Management Tools. ping, traceout, and Wireshark (formerly Ethereal)

Exemple PLS avec SAS

Application Form/ Formulaire de demande

Equilibrage de charge (Load

Représenté par Eric Mamy A22 présenté par CFR & CGL Consulting

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Ordinateurs, Structure et Applications

France SMS+ MT Premium Description

Présentation par François Keller Fondateur et président de l Institut suisse de brainworking et M. Enga Luye, CEO Belair Biotech

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

Contrôle d'accès Access control. Notice technique / Technical Manual

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

Département de génie électrique. ELE784 - Ordinateurs et programmation système. Laboratoire #1

DELL E6500 : Remplacement du disque dur d origine par un disque dur chiffrant

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

I>~I.J 4j1.bJ1UlJ ~..;W:i 1U

Paris Airports - Web API Airports Path finding

Un exemple de cloud au LUPM : Stratuslab

Acce s aux applications informatiques Supply Chain Fournisseurs

POLICY: FREE MILK PROGRAM CODE: CS-4

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

Differential Synchronization

Webinaire Windows 8. Nous recommandons les logiciels Microsoft Nous recommandons les logiciels Microsoft

Guide d installation Deco Drain inc. DD200

22/09/2014 sur la base de 55,03 euros par action

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

MANAGEMENT SOFTWARE FOR STEEL CONSTRUCTION

Transcription:

Realtime applications with RTAI R.KOCIK Embedded Systems department 1

Outline I. Which RTOS to choose? II. Why not to choose Linux? III. Realtime Linux IV. Using RTAI V. RT TASK scheduling with RTAI VI. Synchronisation, Communication VII. RTAI: conclusion VIII. And other RTOS. 2

I. WHICH RTOS TO CHOOSE? 3

Specification of a RTOS Minimum to manage realtime - Interrupt management, - Time base, - Tasks declaration, creation, execution, preemption, destruction Minimum cost (speed, memory, ) 4

Additionnal Services Memory Management Communications with devices (driver) Tools for communication an synchronisation Human Machine Interface 5

Development Architecture Cross Development Source writing Cross compilation Linking : -code -RT kernel and librairies -loader Development computer Simulation Download Debug Embedded system I/O Controlled system Sometimes keyboard/screen Target computer 6

Development Architecture II Source writing Cross compilation Linking : -code -RT kernel and librairies -loader Development & target computer Simulation Debug Execution 7

II. WHY NOT TO CHOOSE LINUX? 8

LINUX Linux is an open source OS Manage I/O - Disk - IHM (keyboard, mouse, screen) - Network Multitask - Load balancing - Resource management - Average response time 9

Linux kernel and Modules API User Space Kernel space MODULE Emacs Bash Mozilla COM DRIVER KERNEL Not Allowed FILESYSTEM Hardware CPU RAM DISK NETWORK 10

The Linux KERNEL Functions - scheduling functions and priorities - processus management - Timers ans alarms, time functions - Hardware resources access - Interrupt handling - User and group management - Modules management - Debug functions (printk) - Exceptions handling - System information! The kernel is not multitask and can t be preempted 11

Linux Modules Why modules? Modularity!!! _ Avoid kernel recompilation when drivers are added _ Save memory : only needed functions or drivers can be loaded A module can use functions, variables and kernel strucutres Code is executed with administrator privileges A module is allowed to acces I/O! Exceptions in a module are usually fatal for the system 12

Modules Modules are referenced in a list updated by the kernel (lsmod to vizualise this list) A module can only use functions exported by the kernel or other modules A module can only be loaded and removed by the user root The kernel updated a list of linked between modules (it allows to know when a module can be removed) 13

Linux and Realtime Process - wake up date can t be guaranted - Round robin scheduler : load balancing - Calls to kernel functions can not be preempted Memory - Swap on Ram and process Interrupt - Regularly disabled by the kernel! _ LINUX IS NOT REAL TIME 14

III. REALTIME LINUX 15

KURT implementation Linux KURT A realtime API is added in the kernel kernel preemption is allowed Interruption disable is reduced response time 100µs! For soft realtime constraints applications 16

RT-Linux, RTAI or RTAI A micro kernel is added under linux kernel Linux is executed in background Linux and a RTOS in a same system https://www.rtai.org/ Response time < 20µs Used in hard realtime constraints applications 17

Others realtime solutions around LINUX RTLinux RTAI (variante de RTLinux) ecos... And commercial distributions - FSMLAbs (RTLinux) - MontaVista HardHat - Lineo Embedix Realtime - TimeSys Linux/RT - LynuxWorks BLueCat Linux (Lynx Real Time Systems) 18

RTAI Real time small executive New functions can be added - Multi schedulers - Communications Open source Split in sevral modules Manage flotting point unit (FPU) 19

RTAI lives with LINUX Linux is unchanged : all linux applications can still be used Clear separation between realtime (RTAI) and non realtime (Linux) behaviour : RT tasks : no linux system calls RT tasks and linux application communications - Memory sharing - Real time Fifo 20

IV. USING RTAI 21

How to build a realtime application? Modify the Linux kernel - RTAI installation, guidelines Patch Linux Compile the patched kernel Install and run the new kernel Write the realtime application in module - Executed in kernel space - Incorporates realtime tasks - 1 or more module Execute the application - Compile the application modules - Load all the needed RTAI modules - Load the application modules 22

Write a module (linux 2.4) #define MODULE #include<linux/init.h> #include <linux/module.h> #include<linux/version.h> static int output=1; int init_module(void) { printk("output= %d\n",output); return 0; } void mon_code(void) { output++; } void cleanup_module(void){ printk("adiós, Bye, Ciao, Ovuar, \n"); } 23

Write a module (linux 2.6) #define MODULE #include<linux/init.h> #include <linux/module.h> #include<linux/version.h> no more needed static int output=1; int mon_init(void) { printk("output= %d\n",output); return 0; } void mon_code(void) { output++; } void mon_cleanup(void){ printk("adiós, Bye, Ciao, Ovuar, \n"); } module_init(mon_init); module_exit(mon_cleanup); 24

Compiling and executing Compile a module : Ø Linux 2.4 : gcc -I /usr/src/linux/include/linux -O2 Wall D KERNEL -c exemple1.c Ø Linux 2.6 : kernel source and makefile needed Load a module > insmod exemple1.ko (exemple1.o with kernel 2.4) Printk output on console > dmesg tail -1 Output= 1 List modules # lsmod Module Pages Used by: exemple1 1 0 sb 6 1 25

Load steps (resumed) 1) External referenced symbol verification 2) Kernel version verification 3) Code and data memory allocation and copy of the module in the allocated space 4) Symbol table update with module symbols (output and mon_code) 5) Call of module init_module function 26

Cleaning Remove module - Will execute the cleanup_module()function # rmmod exemple1 # dmesg tail -2 Output= 1 Adiós, Bye, Ciao, Orvua, 27

Pass data to a module? # insmod exemple1.ko output=4 # dmesg tail -3 Output= 1 Adiós, Bye, Ciao, Orvua, Output= 4 28

Makefile Interpreted by the command make Set of rules Rule : define commands to build a target from source files. Also define dependancies (source files) needed by the commands rule : dépendancies command www.gnu.org/software/make/manual 29

RTAI modules rtai_hal : base functions rtai_sched : mono processor scheduler rtai_sem : semaphore functions rtai_fifos : RT modules and linux applications communications functions + application modules - I/O handling - Tasks To be loaded each time the application has to be started _ Script 30

Typical Realtime application X Windows User Process RT Fifo RT Fifo Linux kernel RT Task RT Task RTAI Screen Disk Network other peripheral 31

V. RT TASK SCHEDULING WITH RTAI 32

RTAI : task handling RTAI - Each Realtime task is a thread RT_TASK - Linux kernel = idle priority thread Task scheduling Preemptive Fixed priority (default) or EDF! Processor overload => Linux can not be executed 33

Task create #include <rtai_sched.h> MODULE_LICENSE("GPL"); static RT_TASK tache; #define STACK_SIZE 2000 iret = rt_task_init(&tache, // task pointer routine, // name of function to be execute 1, // int passed to routine STACK_SIZE, // execution stack size 1, // int priority, 0=highest priority 0, // int 0 => fpu not used // 1 => fpu is used 0 // signal (see rt_task_signal_handler) ); iret = 0 if ok, <0 either task creation is done in init_module!! rt_task_init doesn t execute the task 34

Periodic task In init_module iret = rt_task_make_periodic(&tache, start_date, nano2count(periode)); _ Periodic execution,first execution since start_date, units is count In the task loop containing task + function rt_task_wait_period (); _ suspend task execution until next period 35

Suspend and delete a task Suspend rt_task_suspend( rt_whoami() ); Re-execute rt_task_resume( &tache); _ Also allows to execute a non-periodic task Ending rt_task_delete( &tache); 36

Time Timer : 2 possible behaviour - rt_set_oneshot_mode() Recent Pentium provides CPU TSC (Time Stamp Clock) => variable time base 386,486 and old pentium don t provide CPU TSC => need to read an external timer 8254 => cost time, not efficient - rt_set_periodic_mode() Default mode Fixed period The tasks whose period is not a multiple of timer period are executed with the nearest multiple period 37

Time (2) First, the timer must be started tick_per = start_rt_timer(per); - one shot mode : per irrelevant - Periodic mode : per = period of the timer in count, tick_per = alocated period To read the timer rt_get_time(); in count unit rt_get_time_ns(); in nanosecond unit Conversions RTIME tn, tc; tc = nano2count(tn); tn = count2nano (tc); Stop the timer (cleanup_module) stop_rt_timer(); 38

RTAI scheduling Scheduling policy can be combined - EDF > fixed priority - Linux = task with the smallest priority Priority - Fixed priority : de 0 à RT_LOWEST_PRIORITY ma_prio = rt_get_prio( rt_whoami()); old = rt_change_prio(rt_whoami(), ma_prio+1); - Dynamic priority rt_task_set_resume_end_times(wakeup_date, duedate_date); rt_task_set_resume_end_times(-period,-deadline); 39

Multiprocessor scheduling SMP : Symetric Multi Processor 2 solutions - 1 scheduler handle n processors Execute the n highest priority tasks among the t ready tasks - 1 scheduler on each processor Each task is allocated to a processor 40

VI. SYNCHRONISATION, COMMUNICATION 41

Synchronisation / Communication: why? Transmit an event - fugitive, memorised, incremented - With/without value Ordering - before / after - Control the number of execution Data exchange - With synchronisation - Without synchronisation Ensure data integrity 42

RTAI : binary semaphore - mutex Rendez-vous, mutual exclusion Creation SEM mon_sem; rt_typed_sem_init(&mon_sem, // semaphore pointer 1, // initial value BIN_SEM // type ); Take a semaphore If the semaphore is présent : on prend le sémaphore et on continu Si le sémaphore est absent : on est bloqué jusqu à ce que le sémaphore soit restitué ierr = rt_sem_wait(&mon_sem); Restituer le sémaphore ierr = rt_sem_signal(&mon_sem); 43

Sémaphores (2) Problèmes : inversion de priorité, interblocage Autres types rt_typed_sem_init(&mon_sem,1,bin_sem); A compte : CNT_SEM Ressource : RES_SEM Destruction - met en place le protocole de priorité plafond - ierr = rt_sem_delete(&mon_sem); Variantes asynchrones - rt_sem_wait_if : pas de blocage si sémaphore absent - rt_sem_wait_until(&sem,date): blocage au maximum jusqu à date - rt_sem_wait_timed(&sem,durée) : blocage au maximum pendant durée 44

RTAI : Fifos X Windows Process utilisateur RT Fifo RT Fifo Noyau Linux Tâche RT Tâche RT RTAI Ecran Disques Réseau Périphériques 45

RTAI : RTFifos coté process utilisateur côté process utilisateur - périphérique spéciaux de type caractère : /dev/rtf0, /dev/rtf1 v accessibles à travers les appels : open, ioctl, read, write - communication sans structure file FIFO tampon d un nombre d octets fixé - n existe (ne peut être ouvert) que si déjà créé par tâche RT ou par appel spécifique 46

RTAI : RTFifos coté RT 2 modes d utilisation comme périphérique API spécifique RT rtf_create(unsigned int fifo, int taille); création, périphérique /dev/rtffifo existe, rtf_destroy(unsigned int fifo); destruction, mémoire réallouée rtf_put(fifo, char *tampon, int compte); rtf_get(fifo, char *tampon, int compte); retour -1, si insuffisamment de données ou de place non bloquant 47

RTAI : RTFifos côté tâche RT (2) API spécifique RT int my_handler(unsigned int fifo); rtf_create_handler(3,&my_handler); routine my_handler exécutée en mode noyau quand des données sont lues ou écrites permet de réveiller une tâche RT, via p.ex. un task_resume permet d éviter la scrutation régulière de la FIFO permet de mettre en place un schéma ASYN/SYN quelconque avec sémaphores rtf_resize => redimensionner la fifo plus d autres fonctions 48

Messages Caractéristiques - Communication point à point (tâche à tâche) - message : valeure entière - SYN/SYN - ierr = rt_send(&tache_but,valeur); //SYN - ierr = rt_receive (&tache_orig,&entier); //SYN Variantes - If : send ASYN, pas d envoi si recepteur non prêt, pas de blocage de l emetteur - timed et until : blocage limité dans le temps - rt_receive(0 : n importe quel émetteur Pas d initialisation spécifique 49

Boîtes aux lettres (Bal) Caractéristiques - Communication multi/multi point - message : taille variable - ASYN/SYN - ierr = rt_mbx_send(&bal,&msg,taille_msg); ASYN, mais blocage tant que le message entier n a pas été copié dans la Bal - ierr = rt_mbx_receive(&bal,&msg,taille_msg); Blocage tant que le message n a pas été reçu Variantes send - if : envoi ssi le message entier peut être copié dans la bal - Wp : envoi autant d octets que possible sans blocage - timed et until : blocage limité dans le temps initialisation spécifique - ierr = rt_mbx_init(&bal,taille) - ierr = rt_mbx_delete(&bal); 50

Le problème de l allocation mémoire Segmentation, Mémoire paginée pas new/delete ou malloc/free - kmalloc / kfree non temps réel solutions RT : - s allouer la mémoire de manière statique - allocation dans une table de blocs limitée utilisation de kmalloc au niveau noyau 51

RTAI : Interruptions permet réactions rapides inhibe le noyau temps réel niveau matériel et niveau logiciel gestionnaire d IT simples avec temps de réponse fixe (ou borné) - prise en compte d un événement - phase urgente, laisser une tâche dans l espace utilisateur faire le travail de fond ITs/événements peuvent être émis par : - équipement informatique (clavier, écran, disque ) - équipement industriel (capteur, actionneur, alarme ) - horloge : donne le rythme (tick = période d échantillonnage du système) 52

Interaction par Interruption requêt e encodeur priorité masquage Acq priorité IA set reset Bus données - rt_global_cli() rt_global_sti() - rt_disable_irq(), rt_enable_irq() 53

RTAI : Interruptions (2) Installation #define IT_CLAVIER 1 rt_request_global_irq(it_clavier, mon_gestionnaire); rt_free_global_irq(it_clavier); void mon_gestionnaire(void) { rt_pend_linux_irq(it_clavier); Utilisation - traitement urgent - réveiller tâche endormie 54

RTAI : communication avec le matériel par pilote de périphérique (posixio) - «fichiers» /dev/nom open/ close/ read/ write accès direct aux ports E/S #include <asm/io.h> outb(valeur, adresse) valeur = inb(adresse) taille du mot : b, w, l pause : _p : outl_p 55

Schémas classiques Chien de garde (Watchdog) Comment gérer un automate d état (machine à café, menu téléphone ) BD : lecteur rédacteur Client Serveur tableau noir 56

Exemple : machine à café ANNUL/ rendre_monnaie(); INIT FRANC ENCORE RETOUR ANNUL/ rendre_monnaie(); FRANC SERVI SERVIR/ deplacer_tasse(); PREPARATION PUSH/ preparer_cafe(); ACTIF 57

Machine à café : spcéfication fonctionelle IHM Rt_fifo Process Linux RTAI Acqui Appel Genere_transition Signal transition Calcul Automate Rendre monnaie Déplacer tasse Préparer café Afficher message 58

VII.RTAI : CONCLUSION 59

RTAI : quelques remarques évolution permanente possibilités en phase de mise au point non détaillées ici - outils de trace : LTT - exécution en mode user : LXRT Xenomaï - POSIX, VxWorks,VRTX,pSOS+,µITRON,RTAI 60

RTAI : quelques remarques évolution permanente possibilités en phase de mise au point non détaillées ici - debug - outils de trace : LTT - exécution en mode user : LXRT Xenomai 61

RTAI-LAB Spécification schémas-blocs SCILAB/SCICOS MATLAB/SIMULINK Génération code + Librairie RTAI-LAB RTAI Exécution http://www.rtai.org http://www.scicos.org/ http://www.mathworks.com/products/simulink/ 62

VIII. AND OTHER RTOS 63

Some RTOS (http://www.dspconsulting.com/rtos.html) RTOS URL Processor Licensing Tornado, VxWorks h"p://www.wrs.com x86, 68k, PPC, CPU 32, i960, SPARC, SPARCLite, SH, ColdFire, R3000, R4000, C16X, ARM, MIPS $16,500 per user + target Hard Hat Linux h"p://www.mvista.com x86, PPC, MIPS and ARM No VRTX h"p://www.mentor.com x86, 68k, PPC, i960, ARM $2,000 par user + target OS-9 V3.0 h"p://www.microware.com x86, 68k, PPC, SH3, StrongARM? + target QNX psos h"p://www.qnx.com h"p://www.isi.com AMD ÉlanSC300/ 310/ 400/ 410, AM386 DE/SE Intel386 EX, Intel486, ULP Intel486, Pricing is based on OS modules Pentium, Pentium Pro, and NatSemi used on the target system and per NS486SXF. unit shipped. 86, 68k, PPC, 683xx, CPU32(+), MIPS R3000/4000/5000, Coldfire 510x/520x, i960, ARM 7 (TDMI), SH1/2/3, M32R $17,000 per user + target RTX h"p://www.vci.com x86, P5, P6 $150/RTX licence + target US$10,000 per user LynxOS h"p://www.lynx.com x86, 68k, PPC, microsparc, microsparc II, PA-RISC Licence: US$7000 + target. + many other 64

RTOS market survey(2005) (source : http://www.embedded.com/) 65

RTOS market survey (source : http://www.embedded.com/) 66

RTOS market survey (source : http://www.embedded.com/) 67

RTOS market survey (source : http://www.embedded.com/) 68

Choice of an RTOS Performance = time to provide a service to the application, it depends on: - Hardware architecture, - What measuring? => benchmarks - Préemption duration, Task switching, semaphore, memory allocation, services Price : licence + per unit shipped Source Code, certification Tools 69