22 Temps réel avec Windows Embedded CE /02/2010 Yannick Balère – Theoris Thierry Joubert – Theoris
33 But de la session: Comprendre pourquoi et comment l’OS Windows Embedded CE 6.0 peut être utilisé sur des systèmes temps réel Expliquer à partir des mécanismes internes de l’OS Illustrer sur des exemples et démos
44 Origines du problème Besoin = Entrées & Sorties à des instants strictement connus (intervalle d’erreur prédéfini) Etat des lieux des CPU Automate Séquentiel & Programmable Pas de gestion interne du temps Temps d’accès à la mémoire & aux périphériques Complexité croissante des besoins !! Quelques mythes Un système temps réel est rapide Le matériel répond à tous les besoins
55 Gestion du déterminisme Au niveau matériel Utilisation des Interruptions Intégration d’un circuit horloge Garantie des temps d’accès à la mémoire Contrôleurs de périphériques et de bus Au niveau logiciel Maîtrise des chemins d’exécution Connaissance des situations de « pire cas » temporel Dans les tâches applicatives Dans le système (Runtimes – Noyau - Pilotes)
66 OS et déterminisme - 1 Ce qui est de la responsabilité de l’OS Temps de réponse sur interruption Précision du TICK (Timers & Watchdogs) Stabilité des mécanismes internes (KCall, TLB) Stabilité des fonctions exposées (CSW, Synchronisation) Stabilité de la planification des tâches Ce qui est de la responsabilité de l’OS Temps de réponse sur interruption Précision du TICK (Timers & Watchdogs) Stabilité des mécanismes internes (KCall, TLB) Stabilité des fonctions exposées (CSW, Synchronisation) Stabilité de la planification des tâches
77 OS et déterminisme - 2 Ce qui n’est pas de la responsabilité de l’OS Contention des interruptions Contention d’accès aux BUS Comportement interne des pilotes de périphériques Ainsi que TOUT le logiciel applicatif !! Ce qui n’est pas de la responsabilité de l’OS Contention des interruptions Contention d’accès aux BUS Comportement interne des pilotes de périphériques Ainsi que TOUT le logiciel applicatif !!
88 CE & Déterminisme Stabilité de la planification des tâches Précision du TICK Stabilité des mécanismes internes Temps de réponse sur interruption
99 Architecture CE I/OI/OObjectStoreObjectStoreKernelKernelGWESGWESCEShellCEShell OAL & Pilotes API système Application Thread
10 Ordonnancement Modèle Multi-Thread Préemptif à 256 niveaux Priorités fixes Round-robin à la demande Quantum paramétrable par thread Gestion de l’inversion de priorité Page 10
11 Synchronisation Synchronisation Win32 Mutex Sémaphore Evénement Optimisation intra-processus Section critique Dépendant du hardware Interlocked Page 11
12 États d’un thread Release Wait ENATTENTEENATTENTE Resume PRÊTPRÊT COURANTCOURANT Élection Préemption ACTIF Suspend Un seul thread à la fois !! SUSPENDUSUSPENDU EN ATTENTE +SUSPENDU +SUSPENDU Resume Suspend
13 Page 13 Outillage Kernel Tracker Montre l’interaction entre les processus, les threads et les interruptions Liste les Interruptions Echecs TLB Inversion de priorité Etat des threads Appels système
14 Mesure Windows CE - 1 Création de 2 threads de haute priorité SemaphoreSemaphore MutexMutex Threads haute priorité Course au Sémaphore Course au Mutex
15 Mesure Windows CE - 2 SemaphoreSemaphore Course au Sémaphore MutexMutex Course au Mutex
16 Mesure Windows CE - 3 Wait+Release+CSW 18 µs SemaphoreSemaphore
17 TICK système TICK fixé à 1ms L’interruption TICK peut causer un changement de contexte de thread (CSW) Le noyau choisit CSW ou NOP Le thread PRÊT de plus haute priorité doit tourner Le thread courant continue s’il n’y a pas de concurrence et qu’il n’a pas épuisé son quantum Sleep(N) va avoir une échéance entre N et (N+1) ms
18 Mécanismes internes Pilotes de périphériques en mode KERNEL Tous les threads du pilote en mode KERNEL Appels à KCOREDLL.DLL Accès direct aux paramètres Appel par table de vecteurs Mémoire virtuelle Page Pooler à déclenchement paramétrable Optimisation des appels non interruptible du noyau (Kcall)
19 Gestion des interruptions KernelKernel OAL API système Interrupt Service Routine Interrupt Service Thread Interrupt Service Thread
20 Page 20 Chemin de prise en compte d’IT
21 Latence d’interruption Au niveau de l’ISR IT non autorisée Temps du noyau pour appeler l’ISR Au niveau de l’IST Temps de changement de contexte Section bloquantes du Noyau (Kcall) Délai TLB
22 Contraintes temps réel Application Maîtrise des priorités de threads Maitrise de l’exécution non préemptible (run to completion) Utiliser les objets de synchronisation Gérer l’inversion de priorité Pilote Maîtrise du délai d’IT Niveau de priorité de l’IST
23 L’engin
24 Aucun composant actif ! Port Parallèle Port Parallèle Capteurs IR Soufflerie ETX ® -DC Intel ® Atom ™ N GHz - 512ko L2 cache DDR2 SODIMM 521Mo
25 Interface Port Parallèle Capteurs IR Turbine Servo-Moteur & Clapet de carburateur Architecture matérielle
26 Pilote Aucun composant actif ! Port Parallèle Port Parallèle Capteurs IR Soufflerie Thread Temps réel Thread Temps réel Application.NET API système IOControl I/OI/O PWM
27 Démo …
28 Système Gestion d’un cycle Temps Réel Application graphique en C# Driver Modèle Stream Driver Gestion centralisée du port parallèle: problématique de concurrence d’accès Contrainte d’utilisation du temps CPU: synchronisation de la commande et de la détection Points clés
29 Temps réel Performance temps réel 0,5 ms 1 ms 10 ms 5 ms 20 ms 100 ms 100 µs 1000 µs Variation Cycle
30 Projet industriel robotique InputdeviceInputdevice
31 Architecture du logiciel Temps réel Interface robot CANI/OEtc. source pcode display SRL generator SRL compiler SRR engine
32 Processus & Threads watchdogwatchdog CallackCallack PanelinputPanelinput Drivers WindowsmessagesWindowsmessages AutomatonAutomaton CAN NVRAM UI panel Application
33 Machine à affranchir Contrainte temps réel sur la cadence de traitement Mesure du pli (dimension, poids) Calcul de tarif et validation de débit Construction de l’image du timbre Commande de l’affranchissement
34 Sessions « Systèmes embarqués » LUNDI 11h-12h : MOB111 Systèmes Embarqués à la sauce Microsoft: Démos, démos, démos 13h-14h : MOB310 Silverlight pour Windows Embedded : monitoring du brassage de la bière en interfaces riches ! 16h-17h : MOB109 Serveurs pour applications embarqués : ils sont de retour… 17h30-18h30 : MOB207 Multitouch et nouvelles expériences dans les systèmes embarqués : scénarios et exemples MARDI 11h-12h : MOB306 Microsoft au calibre industriel: temps réel dur pour des applications critiques 13h-14h : MOB104 Des capteurs aux serveurs en passant par la cuisine : Windows Embedded dans la maison 16h-17h : MOB203 Construisez votre OS avec les briques de Windows 7 : l'exemple avec un système multimédia pour la maison 17h30-18h30 : MOB301.NET, Electronique et OpenSource : développement sur FPGA avec le.NET MicroFramework
35 Quelques liens pour aller plus loin… Le site Windows Embedded en Français: Le blog de Pierre Cauchois – resp. du parcours Embedded: Concours « Je vois des Windows Partout »
36 Retrouvez-nous dehors… Stand D34 – Windows Embedded Des experts pour répondre à toutes vos questions Un beau bar, de belles démos et une bonne ambiance ^^