Généralités jc/md/lp-01/06 Généralités A-102 CE4.2 généralités_V2.0.ppt
Objectif du chapitre Présentation de notions de base CE4.2 Objectif du chapitre Présentation de notions de base Système temps réel Système embarqué Configurations de base Process, thread, tâche Operating System (OS) Architecture mémoire jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Système PC et système embarqué PC ou station de travail Prix élevé Processeur très puissant Mémoire de grande taille OS adapté à de nombreuses applications Système embarqué Contrainte de prix Processeurs de consommation minimale Mémoire limitée OS dédié à l’application souhaitée Le terme « embedded system » peut se traduire par système embarqué ou encore système enfoui. Il s’agit d’un noyau complété par des applications préparées à l’avance et figées. L’ensemble est rassemblé dans une image qui est placée en ROM, ou en mémoire FLASH, lorsqu’on projette de faire des mises à jour. Le noyau utilisé est plus ou moins complexe, depuis le simple automate du livre qui parle quand on l’ouvre, jusqu’à des systèmes très sophistiqués, temps réel ou non, comme la commande de l’injection électronique d’une automobile moderne, un téléphone portable ou un appareil photographique numérique. Même le BIOS d’un PC est assimilable à un système embarqué. L’acquisition d’information peut être pratiquement inexistante, limitée au possibilités offertes par des menus déroulants ou spécialisée comme par exemple la capture de mesures ou d’images, la saisie de caractères manuscrits etc. Ce genre de système ne dispose pas des outils qui permettent de développer in situ de nouvelles applications ; seuls les systèmes prévus avec des téléchargements permettent d’introduire de nouvelles fonctionnalités. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Système embarqué Embedded system Système enfoui Image en ROM ou en FLASH Exemples Injection électronique Téléphone portable Appareil photo numérique … Système éventuellement modifiable par téléchargement jc/md/lp-01/06 Généralités
A-102 CE4.2 TEMPS RÉEL Système qui doit faire un ensemble d’actions dans un temps imparti Temps réel critique : résultat catastrophique si le temps imparti est dépassé Temps réel mou : résultat non catastrophique et cependant encore utile malgré le non respect des contraintes de temps Le temps imparti n’est pas nécessairement très court, cela dépend de l’application ! La saisie de caractères simultanément sur plusieurs claviers fonctionne très bien avec un temps de réponse de l’ordre de quelques millisecondes. La notion de temps réel critique est assez intuitive et l’on imagine bien que dans des applications du style conduite de vol, freinage ABS, suivi de trajectoire de missiles, etc. les contraintes de temps soient impératives Pour le temps réel « mou », les approches sont effectivement très élastiques . Il est évident qu’un système qui ne respecte pas systématiquement les contraintes temporelles n’est pas un système temps réel : c’est un système mal fait. Par contre, le non respect occasionnel des contraintes est tout à fait acceptable quand on peut répéter l’opération en cause, par exemple message perdu avec un protocole qui prévoit une réémission, ou lorsque le résultat est sans conséquence pratique, par exemple un affichage de l’heure qui serait retardé d’une fraction de seconde. En fait, la plupart des systèmes temps réel sont plutôt de la catégorie temps réel mou. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Objectifs de CE 4.x OS entièrement réécrit « from scratch » (CE 3.X) OS compact et modulaire Construit à partir d’un catalogue de composants OS temps réel mou Peut couvrir 90% des besoins temps réel actuels Nombreuses possibilités de communication Réseaux filaires et sans fils (Bluetooth, WiFi) Orienté multimédia et multilingue Grand nombre de codecs audio et vidéo Nombreux langages (chinois, coréen, japonais…) Codec est une abréviation pour les mots anglais « coder/decoder ». Il s’agit d’un élément physique et/ou d’un programme qui peut convertir un flot analogique d’informations en un flot digital (« coder ») ou au contraire reconstruire un signal analogique à partir d’une source numérique (« decoder »). Il y a de nombreuses variantes suivant les lois de codage, les protocoles de transmission utilisés et les applications visées : audio ou video. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Outils de développement A-102 CE4.2 Outils de développement Platform Builder Construction de l’OS : Kernel + BSP Construction d’applications simples Téléchargement et debug sur émulateur et cible Embedded Visual C++ Applications C++ natives complexes Visual Studio.net Applications en : C++, C#, VB.net, etc. Nécessite le Compact FrameWork Téléchargement et debug sur émulateur Platform Builder : nom donné à un ensemble de logiciels proposés par Microsoft pour fournir aux développeurs les moyens d’implémenter commodément sur un hardware donné une application opérationnelle comprenant un système, les pilotes de périphériques , les couches d’adaptation, les programmes d’application, etc. BSP : Board Support Package. Le BSP est l’ensemble des logiciels prévus par un constructeur pour offrir toutes les facilités de travail autour d’une carte standard de développement (Standard Development Board ou SDB) proposée dans le commerce pour une architecture donnée ; cela comprend notamment les couches d’adaptation entre un matériel et un système particuliers. Nous utiliserons deux BSPs prévus par Microsoft pour le développement d’applications Windows CE sur une architecture x86. L’un, CEPC, correspond à une carte construite autour d’un composant ST-PC « tout en un » déjà mentionné, l’autre, Emulator, permet d’utiliser un PC pour émuler une carte électronique qui serait construite autour d’un x86 avec des caractéristiques dérivées de celles d’un PC. Version standard et version debug. Le système de développement permet de construire les plates-formes et les applications soit en version d’exploitation, « release », soit en version de débogage « debug ». Dans ce dernier cas, la mise au point est facilitée et accélérée grâce à des outils encore plus riches permettant d’avoir accès aux variables, aux fonctions, au code source, etc. Compact FrameWork : nom donné à un autre environnement de développement qui permet de réaliser des applications utilisant plusieurs langages différents qui peuvent coopérer. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Processeurs supportés Processor Family CPU SDB BSP Name ARM Intel SA1110 Intel SA111x Assabet SDB SA11X0BD ARM920 ARM Integrator AP SDB ARMINTEGRATOR ARM1020 Intel Xscale Intel Lubbock SDB TBD MIPS NEC Vr4122 NEC DDB-Vr4122 Eagle SDB EAGLE NEC Vr5432 NEC DDB-Vrc5476 Boston SDB DDB5476 SHx SH4-7750 Hitachi SH4 Aspen SDB ASPEN SH3-7729 Hitachi SH3 Keywest SDB KEYWEST x86 P5/P4/PIII/PII/ CelK6x/Athlon CEPC NS Geode National Geode Reference Platform GEODE jc/md/lp-01/06 Généralités
Création de l’OS Construction à partir du catalogue de composants CE4.2 Création de l’OS Construction à partir du catalogue de composants On met dans le noyau un à un tous les composants désirés Utilisation de configurations préétablies, orientées pour cibler des applications En fonction du projet à réaliser choisir une configuration proche des besoins comprenant un ensemble de composants de base Retirer les composants inutiles Ajouter les composants manquants Exemples de composants : ppp : support du protocole de communication point-à-point. pcmcia : pilote de bus périphériques pcmcia (ISA ou PCI) nk : noyau Etc. Les composants sont extrêmement nombreux et riches et leur liste ne fait que s’allonger. Configurations préétablies : pour accélérer et faciliter les développements, Microsoft propose des configurations conçues à partir d’un noyau plus ou moins standard complété par des composants spécialement développés pour adresser les applications les plus importantes du marché industriel. Le développement est bien plus rapide quand on utilise ces configurations déjà opérationnelles avec quelques modifications mais il faut pour finaliser l’application faire la chasse aux composants inutiles. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Configurations de base (1) Digital Media Receiver Appareils légers gérant l’audio et/ou la vidéo Enterprise Terminal Points de vente, caisses enregistreuses, bornes libre service Enterprise Web Pad Client internet sans fil avec interface tactile Gateway Partage de connexions internet sur de petits réseaux privés Industrial Controller Applications industrielles avec ou sans interface homme-machine Internet Appliance (Borne Internet avec écran et clavier) jc/md/lp-01/06 Généralités
Configurations de base (2) IP Phone Voix sur IP avec ou sans graphisme Mobile Handheld Assistants personnels de poche (PDA) Mobile Phone (téléphonie mobile) Set Top Box Appareils connectables à la télé (internet, décodeurs…) Tiny Kernel (Noyau minimal) Windows Thin Client Petite configuration permettant la prise de contrôle à distance d’un poste de travail ou d’un serveur en utilisant le protocole RDP (Remote Desktop Protocol) jc/md/lp-01/06 Généralités
ARCHITECTURE APPLICATION NOYAU STANDARD ADAPTATION HARDWARE CE4.2 ARCHITECTURE APPLICATION NOYAU STANDARD ADAPTATION HARDWARE jc/md/lp-01/06 Généralités généralités_V2.0.ppt
BOARD SUPPORT PACKAGE (BSP) CE4.2 BOARD SUPPORT PACKAGE (BSP) La couche d’adaptation est à la charge du concepteur du hardware Elle comprend des fonctions d’adaptation au hardware OAL (OEM Adaptation Layer, OEM:Original Equipment Manufacturer) un certain nombre de drivers (pilotes de périphériques) Le Boot Loader L’ensemble de cette couche est appelé BSP Des BSP existent pour des cartes industrielles de référence OEM : Original Equipment Manufacturer Ce terme correspondait, au début, à un équimentier qui développait un produit nouveau mais qui ne le commercialisait pas lui-même ; le produit était inséré pour être revendu dans un ensemble commercialisé par d’autres ; ce fût le cas pour de nombreux accessoires, lecteur de disquette, lecteur de CD, moteur d’imprimante laser, etc. Aujourd’hui, il arrive que l’OEM commercialise lui-même son produit, avec bien souvent des conditions commerciales alléchantes mais qui ne sont pas toujours un bon choix. Par exemple, un disque Wincheter acheté en OEM risque fort d’être livré dans un simple plastique, sans emballage de protection, sans documentation, sans les cavaliers nécessaires pour fixer les options, et souvent avec des difficultés pour faire jouer la garantie, etc. Le boot loader est un logiciel indispensable qui permet d’initialiser un équipement en lui transférant par diverses voies (liaison série ou liaison éthernet le plus souvent) un premier code exécutable, dont le rôle est d’initialiser des registres internes puis de télécharger et initialiser un ensemble de programmes plus conséquents qui vont permettre d’initialiser et réellement travailler avec le BSP. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
A-102 CE4.2 PROCESS (CE4.2) Un process ou processus est une instance d’application en cours ou en attente d’exécution Allocation de ressources au niveau du process 32 MB d’adressage virtuel par process Un process démarre avec un seul thread (Primary Thread) mais il peut créer d’autres threads Plusieurs threads peuvent s’exécuter simultanément Un process peut aussi créer d’autres process Windows CE peut gérer jusqu’à 32 process simultanément Process : le mot français processus est une bonne traduction de process, mais process se trouve très généralement employé ; nous prendrons l’une ou l’autre forme. Par contre, au pluriel, nous utiliserons processus ou encore process, car la forme plurielle anglaise processes est difficile à conserver ; ce faisant, nous appliquons une règle identique à celle utilisée pour le mot francisé « mess ». Thread : le programme qui compose le process est organisé sous forme de séquences indépendantes qui peuvent s’exécuter simultanément dans un ou plusieurs processeurs (accélération du traitement, répartition de charge entre CPU). Les threads utilisent, et donc partagent, les ressources allouées au process : espace mémoire, fichiers, sémaphores, etc. et certaines ressources privées (registres). Problème de la synchronisation entre threads… Ce mécanisme est particulièrement intéressant lorsque le processeur peut exécuter simultanément plusieurs threads ; c’est le cas notamment de certains Pentium récents. Adressage virtuel : il s’agit d’une notion fondamentale sur laquelle nous reviendrons ultérieurement. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
PROCESS (CE6.0) 2 GB d’adressage virtuel par process CE6.0 peut gérer jusqu’à 32000 process simultanément jc/md/lp-01/06 Généralités
THREAD La plus petite unité d’exécution CE4.2 THREAD La plus petite unité d’exécution Plusieurs threads peuvent s’exécuter simultanément Les threads ont accès à l’ensemble des ressources du process Ordonnancé (schédulé) par le noyau Quantum de temps configurable (100ms) Préemptif 256 niveaux de priorités Priorité tournante pour des threads de même priorité Scheduler (ordonnanceur) : il s’agit du logiciel du système qui gère l’exécution des threads éligibles à un instant donné. Lorsqu’un thread est créé on lui attribue ou il hérite d’un niveau de priorité, qu’il conservera excepté dans quelques circonstances particulières. Lorsque tous les threads des niveaux plus prioritaires ont rendu la main, le scheduler rend actif le thread s’il est seul sur ce niveau, ou bien choisit par un algorithme le thread à réveiller ; dans Windows CE la priorité sur un même niveau est gérée par priorité tournante Priorité tournante (Round Robin) : quand plusieurs threads ont la même priorité, le système alloue les quanta de temps de façon circulaire pour éviter qu’un même thread soit réélu sans que d’autres threads de même niveau de priorité aient pu bénéficier de quanta de temps. Ce schéma s’oppose à la priorité fixe ; il a l’avantage d’éviter la monopolisation de la ressource temps par un thread, par contre cela réagit sur le fonctionnement déterministe du système. Préemptif : ceci correspond à une caractéristique très importante d’un système. En simplifiant, cela indique qu’à tout instant où le système reprend la main, son scheduler peut prévoir le bon enchaînement des exécutions des threads dans le respect des contraintes de temps définies par les priorités. Cela exclut qu’une tâche monopolise tous les quanta disponibles pendant une durée indéfinie ; le système aura forcément repris la main au moment de l’allocation d’un quantum et pourra agir en ayant une vision complète des threads en attente. jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Synchronisation des tâches Il est bien évident puisque les threads peuvent s’exécuter simultanément qu’il faut coordonner les exécutions pour obtenir un résultat valide dès que plusieurs threads sont en jeu Une situation désespérée se présente lorsque une tâche est bloquée en attente d’un résultat d’une autre tâche (voire sur elle-même) et réciproquement Nous consacrerons un chapitre à ce sujet Dans certains cas, l’inversion de priorité suffit jc/md/lp-01/06 Généralités
Inversion de priorité Si un thread A de haute priorité est en attente d’une ressource bloquée par un thread B de moindre priorité, la priorité de B est alignée temporairement sur celle de A pour permettre la libération de la ressource bloquante Ce mécanisme qui peut perturber le fonctionnement déterministe d’un système, est à éviter dans la mesure du possible jc/md/lp-01/06 Généralités
Système de base NOYAU (1) Principaux blocs constitutifs KERNEL GWES DEVICE MANAGER FILESYS DEVICE DRIVERS OAL jc/md/lp-01/06 Généralités
A-102 CE4.2 NOYAU (2) KERNEL OS minimal ; il gère les process, les threads, la mémoire, les interruptions, etc. GWES (Graphics Windowig Events Subsystem) Gère l’interface graphique et les entrées-sorties (I/O) des utilisateurs DEVICE DRIVERS Native Drivers : interface utilisateur de base sauf clavier, écran et souris qui sont gérés par GWES et chargés lors du boot Stream Drivers : gérés par le Device Manager jc/md/lp-01/06 Généralités généralités_V2.0.ppt
NOYAU (3) DEVICE MANAGER FILESYS Gère les Stream Drivers : charge lors du boot ceux qui sont listés dans la Registry Gère de manière dynamique les drivers chargeables à la demande FILESYS Gère le système de fichiers, la registry et la Property Data Base (base de donnée non hiérarchisée pour stocker des adresses, des mails et des informations) jc/md/lp-01/06 Généralités
PROCESS SYSTÈME Windows CE utilise 4 des 32 process disponibles NK.EXE et COREDLL.DLL FILESYS.EXE DEVICE.EXE GWES.EXE jc/md/lp-01/06 Généralités
Architecture mémoire 32 slots pour les process (numéros 1 à 32) Espace virtuel de 4 GB Partage mémoire Adresses de 0 à 2GB : user mode (process) Adresses de 2GB à 4GB : kernel mode (system) Mémoire user mode ou mode application 33 slots de 32MB 32 slots pour les process (numéros 1 à 32) 1 slot pour le process en cours (numéro 0) Le reste (1GB moins 32MB) est partagé entre tous les process jc/md/lp-01/06 Généralités
Gestion mémoire Mémoire gérée par le mécanisme de pages à la demande CE4.2 Gestion mémoire Mémoire gérée par le mécanisme de pages à la demande Page de 4KB ou de 1KB suivant les versions de CE et les processeurs cibles Possibilité de réserver des régions de 64KB Les process s’exécutant dans des slots distincts il y aura un problème de communication entre process Références à consulter : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemain4/html/_wcesdk_virtual_memory.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemain4/html/_wcesdk_windows_ce_memory_architecture.asp jc/md/lp-01/06 Généralités généralités_V2.0.ppt
Conclusion Survol de quelques notions de base des systèmes d’exploitation appliquées à nos développements avec Windows CE jc/md/lp-01/06 Généralités