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

Preview:

Citation preview

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

Recommended