36

22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

Embed Size (px)

Citation preview

Page 1: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris
Page 2: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

22

Temps réel avecWindows Embedded CE 6.009/02/2010Yannick Balère – TheorisThierry Joubert – MVP @ Theoris

Page 3: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry 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

Page 4: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 5: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 6: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 7: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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 !!

Page 8: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 9: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

99

Architecture CE

I/OObjec

tStore

Kernel

GWESCE

Shell

OAL & Pilotes

API système

ApplicationThread Thread Thread

Page 10: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 11: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

1111

Synchronisation

Synchronisation Win32MutexSémaphoreEvénement

Optimisation intra-processusSection critique

Dépendant du hardwareInterlocked

Page 11

Page 12: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 13: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 14: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 15: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

1515

Mesure Windows CE - 2

Semaphore

Course au Sémaphore

Mutex

Course au Mutex

Page 16: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

1616

Mesure Windows CE - 3

Wait+Release+CSW 18 µs

Semaphore

Page 17: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 18: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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)

Page 19: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

1919

Gestion des interruptions

Kernel

OAL

API système

Interrupt Service Routine

Interrupt

ServiceThread

Page 20: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

2020 Page 20

Chemin de prise en compte d’IT

Page 21: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 22: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 23: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

2323

L’engin

Page 24: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

2424

Aucun composant actif !

PortParallèle

Capteurs IR

Soufflerie

ETX®-DC• Intel® Atom™ N270• 1.6 GHz - 512ko L2 cache• DDR2 SODIMM 521Mo

Page 25: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 26: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

2626

Pilote

Aucun composant actif !

PortParallèle

Capteurs IR

Soufflerie

ThreadTemps

réel

Application .NET

API système

IOControl

I/O

PWM

Page 27: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

2727

Démo…

Page 28: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 29: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 30: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

3030

Projet industriel robotique

Input device

Temps réelIHM

Page 31: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

3131

Architecture du logiciel

Tem

ps ré

el

Interface robot

CAN I/O Etc.

source

pcode

display

SRL generator SRL compiler

SRR engine

Page 32: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

3232

Processus & Threads

watchdog

Callack

Panelinput

Drivers

Windowsmessages

Automaton

CANNVRAM UI panel

Application

Page 33: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 34: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 35: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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

Page 36: 22 Temps réel avec Windows Embedded CE 6.0 09/02/2010 Yannick Balère – Theoris Thierry Joubert – MVP @ Theoris

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 ^^