Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.
-
Upload
bartholomieu-gerard -
Category
Documents
-
view
120 -
download
0
Transcript of Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.
![Page 1: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/1.jpg)
Revision
![Page 2: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/2.jpg)
ARCHITECTURE
APPLICATION
ADAPTATION
NOYAU STANDARD
HARDWARE
![Page 3: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/3.jpg)
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
![Page 4: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/4.jpg)
PROCESS
• 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
![Page 5: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/5.jpg)
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é
![Page 6: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/6.jpg)
Section critique : types
• Les types « section critique » et « pointeur sur section critique » sont définis par des typedef
CRITICAL_SECTION cs;
LPCRITICAL_SECTION lpcs;
• Cela permet des contrôles par le compilateur et contribue à éviter un usage inapproprié
![Page 7: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/7.jpg)
Mutex
• Mutex : raccourci pour mutual exclusion• Objet système destiné à gérer les
synchronisations par exclusion mutuelle• Synchronisation
– Intra-processus– Inter-processus
• Alloué au plus à un thread à un instant donné
![Page 8: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/8.jpg)
Synchronisation par événement
• Autre forme de synchronisation plus souple que par les mutex
• Gestion plus riche des événements– Création– Prise de possession– Restitution– Transmission de données– Ouvertures multiples
![Page 9: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/9.jpg)
Sémaphore (1)
• Contrôle le nombre des accès à une ressource par la distribution de jetons
• Valeur maximale fixée à la création• Chaque utilisateur prend et restitue un ou
plusieurs jetons sur le sémaphore• Fonctionne entre processus indépendants• Exclusion mutuelle dans le seul cas d’un
jeton à valeur maximum de 1
![Page 10: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/10.jpg)
Sémaphore (2)
• Le nombre de jetons disponibles est égal à tout instant au nombre des utilisateurs de la ressource gérée par le sémaphore
• Chaque fois qu’un un jeton est pris, le compteur de jeton est décrémenté
• Chaque fois qu’un jeton est restitué, le compteur de jeton est incrémenté
• Lorsque le nombre de jetons disponibles est 0, la ressource n’est plus disponible
![Page 11: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/11.jpg)
Système de base NOYAU (1)
• Principaux blocs constitutifs
KERNELGWES
DEVICE DRIVERSOAL
DEVICEMANAGER
FILESYS
![Page 12: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/12.jpg)
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
![Page 13: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/13.jpg)
NOYAU (3)
• DEVICE MANAGER– 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)
![Page 14: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/14.jpg)
Fonctions d’un driver
• XXX_Init• XXX_Deinit• XXX_Open• XXX_Close• XXX_Read• XXX_Write• XXX_IoControl• XXX_Seek• XXX_PowerUp• XXX_PowerDown
![Page 15: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/15.jpg)
Fonction XXX_Init
• Fonction appelée pour démarrer le driver par le Device Manager via l’appel de ActivateDeviceEx ou de RegisterDevice
• Initialise les ressources nécessaires au fonctionnement du driver (mémoire, registres des périphériques…)
• XXX_Init crée un handle hDeviceContext passé par RegisterDevice à XXX_Open, XXX_Deinit, XXX_PowerUp et XXX_PowerDown
![Page 16: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/16.jpg)
Fonction XXX_Deinit
• BOOL XXX_Deinit(DWORD hDeviceContext);• Fonction appelée quand le Device Manager arrête
le driver via l’appel des fonctions DeactiveDeviceEx ou DeregisterDevice par l’application
• L’application devra compléter par un appel à CloseHandle pour détruire le handle associé et libèrer toutes les ressources matérielles et/ou logicielles utilisées par le driver
![Page 17: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/17.jpg)
Fonction XXX_Open
• Ouvre un driver en lecture et/ou écriture • Fonction appelée par l’application à travers la
fonction CreateFile• Alloue les ressources propres à chaque contexte
ouvert• Crée un handle hOpenContext utilisé par
XXX_Close, XXX_Read, XXX_Write, XXX_Seek XXX_IOControl
• Peut-être appelée plusieurs fois
![Page 18: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/18.jpg)
XXX_Close
BOOL XXX_Close( DWORD hOpenContext);ParametershOpenContext
[in] Handle returned by the XXX_Open function, used to identify the open context of the device.
Return ValuesTRUE indicates success. FALSE indicates failure.
• Fonction appelée par l’operating system en réponse à un appel par l’application de la fonction CloseHandle
![Page 19: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/19.jpg)
XXX_Read
DWORD XXX_Read( DWORD hOpenContext, LPVOID pBuffer, DWORD Count);• Fonction appelée par l’operating system en
réponse à la fonction ReadFile de l’application• Utilise un contexte ouvert par XXX_Open• Les caractères lus sont placés dans le buffer pointé
par pBuffer• Count indique le nombre de caractères à lire• La fonction retourne le nombre de caractères lus
![Page 20: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/20.jpg)
Fonction XXX_Read
DWORD XXX_Read( DWORD hOpenContext, LPVOID pBuffer, DWORD Count );
ParametershOpenContext
[in] Handle to the open context of the device. The XXX_Open function creates and returns this identifier.
pBuffer [out] Pointer to the buffer that stores the data read from the device. This buffer should be at least Count bytes long.
Count [in] Number of bytes to read from the device into pBuffer.
Return ValuesReturns zero to indicate end-of-file. Returns –1 to indicate an error. Returns the number of bytes read to indicate success.
![Page 21: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/21.jpg)
XXX_Write
DWORD XXX_Write( DWORD hOpenContext, LPVOID pBuffer, DWORD Count);• Appelée par l’operating system en réponse à la
fonction WriteFile de l’application• Les caractères à écrire sont placés dans le buffer et
Count indique le nombre de caractères à écrire• L’OS écrira dans le device connu par un handle de
« contexte ouvert » créé par XXX_Open • Fournit le nombre de caractères écrits ou erreur
![Page 22: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/22.jpg)
XXX_Seek
• DWORD XXX_Seek( DWORD hOpenContext,long Amount,WORD Type);
• Appelée par l’operating system en réponse à la fonction SetFilePointer de l’application
• Amount indique le nombre de bytes dont doit être modifié le pointeur de données du device
• Type spécifie le point de départ du pointeur de données
![Page 23: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/23.jpg)
Fonction SetFilePointer
• Permet de déplacer un pointeur dans un fichier ouvert
• Suppose un objet qui supporte un positionnement, pas un port qui travaille toujours au même endroit
• Peut renseigner sur la position dans le fichier• Retourne la nouvelle valeur du pointeur ou une
erreur
![Page 24: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/24.jpg)
IOCTL
#define IOCTL_essai1 CTL_CODE(\ FILE_DEVICE_UNKNOWN,2048,\METHOD_BUFFERED,FILE_ANY_ACCESS)
• Permet de définir des fonctions spécifiques à un device donné
• IOControl est un code 32 bits défini avec la macro CTL_CODE
![Page 25: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/25.jpg)
XXX_IOControl
• BOOL XXX_IOControl( DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut);
• dwCode identifie une opération• On dispose d’un buffer d’entrée• On dispose d’un buffer de sortie• pdwActualOut permet de retourner le nombre de
caractères effectivement lus sur le device.• Appelé par l’application avec DeviceIoControl
![Page 26: Revision. ARCHITECTURE APPLICATION ADAPTATION NOYAU STANDARD HARDWARE.](https://reader035.fdocuments.net/reader035/viewer/2022062511/551d9d8e497959293b8c3feb/html5/thumbnails/26.jpg)
XXX_ PowerDown XXX_PowerUp
• Appelés par l’operating system pour gérer l’énergie sur des périphériques disposant des fonctionnalités de mise en veilleuse ou d’extinction
• Void XXX_PowerUp(DWORD hDeviceContext);
• Void XXX_PowerDown(DWORD hDeviceContext);