22 temps réel avec windows embedded ce 6.0 09/02/2010 yannick balère – theoris thierry joubert...
TRANSCRIPT
22
Temps réel avecWindows Embedded CE 6.009/02/2010Yannick Balère – TheorisThierry Joubert – MVP @ 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 CPUAutomate Séquentiel & ProgrammablePas de gestion interne du tempsTemps d’accès à la mémoire & aux périphériquesComplexité croissante des besoins !!
Quelques mythesUn système temps réel est rapideLe matériel répond à tous les besoins
55
Gestion du déterminisme
Au niveau matérielUtilisation des InterruptionsIntégration d’un circuit horlogeGarantie des temps d’accès à la mémoireContrôleurs de périphériques et de bus
Au niveau logicielMaîtrise des chemins d’exécutionConnaissance des situations de « pire cas » temporel
Dans les tâches applicativesDans le système (Runtimes – Noyau - Pilotes)
Le déterminisme tient au design du système
66
OS et déterminisme - 1
Ce qui est de la responsabilité de l’OS Temps de réponse sur interruptionPré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’OSContention des interruptionsContention d’accès aux BUSComportement interne des pilotes de périphériquesAinsi 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/OObjec
tStore
Kernel
GWESCE
Shell
OAL & Pilotes
API système
ApplicationThread Thread Thread
1010
Ordonnancement
Modèle Multi-ThreadPréemptif à 256 niveauxPriorités fixesRound-robin à la demandeQuantum paramétrable par threadGestion de l’inversion de priorité
Page 10
1111
Synchronisation
Synchronisation Win32MutexSémaphoreEvénement
Optimisation intra-processusSection critique
Dépendant du hardwareInterlocked
Page 11
1212
États d’un thread
Release
Wait
ENATTENTE
Resume PRÊT
COURANT
Élection
Préemption
ACTIF
Suspend
Un seul thread à la fois !!
SUSPENDU
EN ATTENTE+
SUSPENDU
Resume
Suspend
1313 Page 13
Outillage
Kernel TrackerMontre l’interaction entre
les processus, les threads et les interruptionsListe les InterruptionsEchecs TLBInversion de prioritéEtat des threadsAppels système
1414
Mesure Windows CE - 1
Création de 2 threads de
haute priorité
Semaphore
Mutex
Threads haute priorité Course au
Sémaphore
Course au Mutex
1515
Mesure Windows CE - 2
Semaphore
Course au Sémaphore
Mutex
Course au Mutex
1616
Mesure Windows CE - 3
Wait+Release+CSW 18 µs
Semaphore
1717
TICK système
TICK fixé à 1msL’interruption TICK peut causer un changement de
contexte de thread (CSW) Le noyau choisit CSW ou NOPLe thread PRÊT de plus haute priorité doit tournerLe thread courant continue s’il n’y a pas de
concurrence et qu’il n’a pas épuisé son quantumSleep(N) va avoir une échéance entre N et (N+1) ms
1818
Mécanismes internes
Pilotes de périphériques en mode KERNELTous les threads du pilote en mode KERNELAppels à KCOREDLL.DLL
Accès direct aux paramètresAppel par table de vecteurs
Mémoire virtuellePage Pooler à déclenchement paramétrable
Optimisation des appels non interruptible du noyau (Kcall)
1919
Gestion des interruptions
Kernel
OAL
API système
Interrupt Service Routine
Interrupt
ServiceThread
2020 Page 20
Chemin de prise en compte d’IT
2121
Latence d’interruption
Au niveau de l’ISRIT non autoriséeTemps du noyau pour appeler l’ISR
Au niveau de l’ISTTemps de changement de contexteSection bloquantes du Noyau (Kcall)Délai TLB
2222
Contraintes temps réel
ApplicationMaîtrise des priorités de threadsMaitrise de l’exécution non préemptible (run
to completion)Utiliser les objets de synchronisationGérer l’inversion de priorité
PiloteMaîtrise du délai d’ITNiveau de priorité de l’IST
2323
L’engin
2424
Aucun composant actif !
PortParallèle
Capteurs IR
Soufflerie
ETX®-DC• Intel® Atom™ N270• 1.6 GHz - 512ko L2 cache• DDR2 SODIMM 521Mo
2525
Interface Port Parallèle
Interface Port Parallèle
Capteurs IRCapteurs IR
TurbineTurbine
Servo-Moteur & Clapet de carburateur
Servo-Moteur & Clapet de carburateur
Architecture matérielle
2626
Pilote
Aucun composant actif !
PortParallèle
Capteurs IR
Soufflerie
ThreadTemps
réel
Application .NET
API système
IOControl
I/O
PWM
2727
Démo…
2828
SystèmeGestion d’un cycle Temps Réel Application graphique en C#
DriverModèle Stream DriverGestion centralisée du port parallèle:
problématique de concurrence d’accèsContrainte d’utilisation du temps CPU:
synchronisation de la commande et de la détection
Points clés
2929
Temps réel
Performance temps réel
0,5 ms
1 ms
10 ms
5 ms
20 ms
100 ms
100 µs 1000 µs 1000 µsVariation
Cycle
3030
Projet industriel robotique
Input device
Temps réelIHM
3131
Architecture du logiciel
Tem
ps ré
el
Interface robot
CAN I/O Etc.
source
pcode
display
SRL generator SRL compiler
SRR engine
3232
Processus & Threads
watchdog
Callack
Panelinput
Drivers
Windowsmessages
Automaton
CANNVRAM UI panel
Application
3333
Machine à affranchir
Contrainte temps réel sur la cadence de traitementMesure du pli (dimension, poids)Calcul de tarif et validation de débitConstruction de l’image du timbreCommande de l’affranchissement
3434
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
MARDI11h-12h : MOB306
Microsoft au calibre industriel: temps réel dur pour des applications critiques13h-14h : MOB104
Des capteurs aux serveurs en passant par la cuisine : Windows Embedded dans la maison16h-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
3535
Quelques liens pour aller plus loin…
Le site Windows Embedded en Français:http://www.windowsembedded.fr
Le blog de Pierre Cauchois – resp. du parcours Embedded:http://blogs.msdn.com/pierreca
Concours « Je vois des Windows Partout »http://msdn.microsoft.com/fr-fr/windowsembedded/msdn.windows.partout.aspx
3636
Retrouvez-nous dehors…
Stand D34 – Windows EmbeddedDes experts pour répondre à toutes vos questionsUn beau bar, de belles démos et une bonne ambiance ^^