La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

CE4.2Journées académiques Microsoft 20051 Cours Windows CE.

Présentations similaires


Présentation au sujet: "CE4.2Journées académiques Microsoft 20051 Cours Windows CE."— Transcription de la présentation:

1 CE4.2Journées académiques Microsoft Cours Windows CE

2 CE4.2Journées académiques Microsoft Plan de la présentation Windows CE « pour qui, pour quoi ? » Description du cours réalisé Exemple dapplication et de debuggage Exemple de driver port parallèle Conclusion et questions

3 CE4.2Journées académiques Microsoft Windows CE Interface classique de Windows Système dexploitation modulaire et compact Nest pas un sous ensemble de NT ou XP Système réécrit entièrement pour optimiser la taille et la performance Répond à plus de 90% des applications temps réel Environnement de développement performant Adaptable à de nombreux processeurs

4 CE4.2Journées académiques Microsoft Applications Téléphonie PDA Bornes interactives Machine à coudre (Bernina) Machine à voter (Unisys) Robot domestique (Fujitsu) Chaudières, réfrigérateur …

5 CE4.2Journées académiques Microsoft Pourquoi ce cours ? Besoin pour lESIEE Demande de Laurent Ellerbach et de son équipe –Cours en français –Accessible aux non informaticiens purs et durs –Basé sur lexemple –Mis à la disposition des enseignants

6 CE4.2Journées académiques Microsoft Groupe ESIEE École dingénieurs BAC+5 École de technologues BAC+3 Domaines de compétence –Électronique et microélectronique –Informatique –Systèmes embarqués –Télécommunications

7 CE4.2Journées académiques Microsoft Équipe Conception et rédaction Jean CALLOT Ingénieur ESIEE Michel DUPLESSY Ingénieur INPG Liliane PIEDFORT Agrégée de physique Conseiller Olivier COME Technologue ESTE et EMVP (Embedded Most Valuable Professional)

8 CE4.2Journées académiques Microsoft Les informaticiens Formation orientée applications haut niveau Peu intéressés par les couches basses Développent souvent sur la machine sur laquelle tournera lapplication (PC ou station de travail) Développent avec des outils puissants qui cachent en général les problèmes liés à la cible (UML, Visual Studio…)

9 CE4.2Journées académiques Microsoft Les électroniciens Spécialistes de lélectronique, pas de linformatique Dans le meilleur des cas ils ont des connaissances –En assembleur –En langage C –Sur les microcontrôleurs Peu ou pas de connaissances des langages objets Peu ou pas de connaissances système

10 CE4.2Journées académiques Microsoft Évolution de lélectronique Arrivée de nouveaux produits nécessitant un noyau temps réel Temps réel non critique (plus de 90% des cas) Interface homme/machine important Importance du coût Le matériel et une bonne partie du logiciel devront être réalisés par les électroniciens Nécessité dune double compétence

11 CE4.2Journées académiques Microsoft Électroniciens BAC+2/BAC+3 Enseignement très cloisonné Évolution lente : pour mettre en place un nouveau cours il faut en supprimer un autre Budget réduit pour léquipement des salles Nécessité de formation des enseignants Difficulté pour lélaboration de nouveaux cours Formations type constructeur non adaptées à ce genre de public

12 CE4.2Journées académiques Microsoft Électroniciens BAC+5 Évolution plus rapide Corps enseignant plus polyvalent Plus de temps accordé aux projets et stages permettant de diversifier les domaines abordés Actions de recherche et développement Proches des besoins de lindustrie

13 CE4.2Journées académiques Microsoft Pédagogie Les étudiants supportent de moins en moins les cours théoriques en amphi Caractéristiques du cours développé –Magistral : très peu –Participatif : les étudiants manipulent au fur et à mesure du passage des diapositives –Basé sur des exercices simples à réaliser Présentation de lexercice Correction de lexercice –Pédagogie adaptée à de petits groupes

14 CE4.2Journées académiques Microsoft Caractéristiques du cours Cours de base simple, mais concret Permet de comprendre les grandes fonctions dun OS à travers des exemples gradués Permet daborder ultérieurement un cours standard du marché ou une auto formation Objectifs –Formation de BAC+3 –Premier niveau pour des BAC+5 –Reconversion déquipes industrielles –Auto formation

15 CE4.2Journées académiques Microsoft Organisation du cours Deux grandes parties –« Émulateur » –« Cible » La partie émulateur permet de se familiariser avec les outils et dacquérir des connaissances de base sans se soucier des problèmes liés au matériel La partie cible complète ces connaissances et introduit les bases de la gestion de périphériques

16 CE4.2Journées académiques Microsoft Émulateur Permet de développer et de visualiser le résultat sur le PC de développement Ne nécessite pas de matériel externe Couvre une bonne partie des connaissances fondamentales Chapitres 101 à 112

17 CE4.2Journées académiques Microsoft Cible La cible ou target est un matériel sur lequel tournent le noyau et les applications. La cible peut être de type –x86 (STPC, Géode…), ARM (Intel, Freescale…), SHx (Hitachi) –Un PC standard peut servir de cible sil dispose dune interface vidéo de type VESA et dune carte réseau Ethernet compatible NE2000. Le cours a été développé sur une cible STPC STMicroelectronics Chapitres 201 à 209

18 CE4.2Journées académiques Microsoft Cible STPC

19 CE4.2Journées académiques Microsoft Installation de Platform Builder Installation de loutil de développement Platform Builder Réparation de Platform Builder Désinstallation de Platform Builder

20 CE4.2Journées académiques Microsoft Généralités Présentation de notions de base –Système temps réel –Système embarqué –Configurations de base –Process, thread, tâche –Description de lOperating System (OS) –Architecture mémoire

21 CE4.2Journées académiques Microsoft Génération dune plate-forme Prise en main de Platform Builder Réalisation dun noyau Configuration de la cible Essai du noyau

22 CE4.2Journées académiques Microsoft Exemple Génération de plate-forme

23 CE4.2Journées académiques Microsoft FileNew Platform

24 CE4.2Journées académiques Microsoft Accueil de lassistant : Next

25 CE4.2Journées académiques Microsoft BSPEmulator: X86

26 CE4.2Journées académiques Microsoft Choix du type de plate-forme Pour la plupart des essais de base prendre loption Industrial Controller « Industrial Controller » est très simple et assez passe- partout pour des commandes dautomates industriels ou de petites applications.

27 CE4.2Journées académiques Microsoft Nom de la plate-forme Par défaut les plates-formes sont sauvées dans «..\WINCE420\PUBLIC » dans un dossier qui correspond au nom saisi dans la boîte de dialogue Afin de différencier les fichiers de PUBLIC et ceux des plates-formes créées, nous ferons en général commencer les noms par z_

28 CE4.2Journées académiques Microsoft Choix : type et nom de plate-forme

29 CE4.2Journées académiques Microsoft Choix des options de plate-forme

30 CE4.2Journées académiques Microsoft Choix du réseau

31 CE4.2Journées académiques Microsoft Fin : Finish

32 CE4.2Journées académiques Microsoft Configuration obtenue

33 CE4.2Journées académiques Microsoft _1 Génération dapplications Génération dapplications –WCE Console Application –WCE Application Téléchargement des applications Test des applications

34 CE4.2Journées académiques Microsoft _2 Debugging élémentaire Premier contact avec les outils de mise au point Génération en vue de debug Usage des points darrêt, pas à pas Visualisations diverses –Code –Variables –Mémoire –Pile –…

35 CE4.2Journées académiques Microsoft Clavier français Montrer comment ajouter ou remplacer un driver à la plate-forme fournie dorigine Configuration par défaut : claviers Anglais, Japonais et Coréens, pas de clavier français Ajout à notre catalogue dun driver pour un clavier français Remplacement dans notre plate-forme du driver par défaut par le driver ajouté au catalogue

36 CE4.2Journées académiques Microsoft _1 Threads Génération dune application avec thread –Création dun thread –Identification dun thread –Suspension/Reprise dun thread –Destruction dun thread –Contrôle de lexécution Exemples de threads

37 CE4.2Journées académiques Microsoft _2 Synchronisation Création dune application ayant plusieurs threads Synchronisations entre threads –Section critique –Mutex –Événement –Sémaphore Exemples pratiques

38 CE4.2Journées académiques Microsoft _3 Kernel Tracker Écrire un programme multithread en mode debug Explorer Kernel Tracker, outils avancé de mise au point Visualisation des threads Visualisation des événements...

39 CE4.2Journées académiques Microsoft _1 – 107_2 Problème des trains Présentation du problème –Application des chapitres threads et synchronisation à un exemple concret Corrigé

40 CE4.2Journées académiques Microsoft _1 Principe des drivers Architecture dun driver sous Windows CE Fonctions système disponibles Fonctions système à créer Écriture dun driver élémentaire Génération du driver Écriture dune application élémentaire Génération de lapplication Essai du driver

41 CE4.2Journées académiques Microsoft _ _3 DRIVER exercice et corrigé Sous une plate-forme de type Industrial Controler préparer un driver « STR » capable de gérer un buffer en mémoire Écrire une chaîne de caractères en majuscules dans le buffer du driver par STR_Write Lire le buffer par STR_Read Modifier le buffer par des STR_IOControl (par exemple, passage majuscule/minuscule, cryptage) Renvoyer le buffer modifié

42 CE4.2Journées académiques Microsoft _1 – 109_2 Gestion mémoire exercice et corrigé Organisation de la mémoire Découpage en slots Rôle du slot 0 Passage dadresses entre le slot 0 et le slot de lapplication Passage à un driver de pointeurs créés dynamiquement dans le slot 0

43 CE4.2Journées académiques Microsoft – 110_2 Communication inter Process Notions de mémoire locale, publique Passage dadresses entre deux process Mapping des adresses Gestion des droits

44 CE4.2Journées académiques Microsoft Accès Internet Réalisation dune plate-forme permettant laccès à Internet Paramétrages réseau

45 CE4.2Journées académiques Microsoft Gestion de fichiers Exemple de gestion de fichiers directement sur une plate- forme diskless Accès aux zones mémoire réservées pour les fichiers Création, lecture, écriture, fermeture de fichiers

46 CE4.2Journées académiques Microsoft Boot CEPC CEPC : plate-forme de référence pour architecture PC x86 Création de la disquette damorçage de la cible Préparation du téléchargement par le port éthernet Paramétrage de la carte réseau Configuration du PC hôte

47 CE4.2Journées académiques Microsoft génération de plate-forme Générer une plate-forme à télécharger dans une cible CEPC Configurer les connexions de lhôte et de la cible Télécharger Windows CE dans la cible Recueillir les informations de debug fournies pendant le téléchargement

48 CE4.2Journées académiques Microsoft OAL OEM Adaptation Layer Présentation de la couche OAL Survol de linitialisation de la plate-forme Fonctionnement des interruptions dans une architecture PC classique à base de x86 Interruptions dans Windows CE Étude de lexemple de la liaison série –Contrôleur de ligne série –Contrôleur dinterruption 8259 –Programmes dinitialisation du et du 8259

49 CE4.2Journées académiques Microsoft Boot Loader Introduction de la notion de Boot Loader Donner un aperçu de lorganisation proposée avec Platform Builder Présenter des variantes utilisables avec une architecture à base de x86

50 CE4.2Journées académiques Microsoft _1 –205_2 Serial en polling exercice et corrigé Écrire un driver rudimentaire et lintégrer dans Windows CE pour prendre connaissance des mécanismes Le driver choisi est le gestionnaire dune liaison série classique dans le monde PC à base de lUART Ce composant présent sur la cible utilisé de la façon la plus simple, en polling, nous permettra dessayer notre driver

51 CE4.2Journées académiques Microsoft _1 Généralités sur les IT Présentation des notions nécessaires pour aborder le traitement des interruptions Organisation générale des interruptions sous Windows CE Étude des composants principaux –Handler –ISR –IST –Fonctions utiles

52 CE4.2Journées académiques Microsoft _2 –206_3 Serial en IT exercice et corrigé Écrire un programme qui va communiquer par une liaison série La transmission se fera en polling La réception sera gérée par interruption On utilisera la deuxième liaison série connectée sur lIRQ3 de la STPC

53 CE4.2Journées académiques Microsoft _1 – 207_2 Utilisation de COM1 exercice et corrigé Utiliser la ligne série de la plate-forme CEPC avec les logiciels fournis en standard par Windows CE Configurer le port série

54 CE4.2Journées académiques Microsoft _1 – 208_2 Gestion du port parallèle Faire fonctionner un module daffichage LCD couplé sur le port parallèle de la cible CEPC –Étude sommaire du port parallèle standard des PC –Étude sommaire du module LCD –Écriture dun driver pour ce module –Écriture dune application pour afficher deux lignes sur le module LCD –Téléchargement dans le CEPC –Exécution

55 CE4.2Journées académiques Microsoft Web Pad Installation dun serveur Web élémentaire sur la plate- forme CEPC Envoi dune page daccueil Utilisation dInternet Explorer sur la cible

56 CE4.2Journées académiques Microsoft DEBOGGAGE Problème des trains Michel DUPLESSY

57 CE4.2Journées académiques Microsoft Threads et synchronisation

58 CE4.2Journées académiques Microsoft Objectif de la présentation Application à un exemple concret des chapitres « Threads » et « Synchronisation » Exemple de débogage avec Kernel Tracker Rappel des notions nécessaires présentées dans des chapitres précédents –Process –Thread –Synchronisation

59 CE4.2Journées académiques Microsoft Process Un process ou processus est une instance dapplication en cours ou en attente dexécution Un process démarre avec un seul thread (Primary Thread) mais il peut créer dautres threads Un process peut avoir plusieurs threads en cours dexécution simultanément

60 CE4.2Journées académiques Microsoft Thread –Séquence obtenue par décomposition dun process –Séquence de code exécutable et autonome –Accède à lensemble des ressources du process –Une priorité est attribuée à chaque thread Windows CE –256 niveaux de priorités –Ordonnancement (scheduling) par le noyau –Système préemptif –Priorité tournante pour des threads de même priorité

61 CE4.2Journées académiques Microsoft Synchronisation des tâches Dès que plusieurs threads sont en jeu, il faut coordonner les exécutions Problème classique du verrou mortel Différentes techniques sont disponibles : section critique, Mutex, Événement, Sémaphore On peut nommer les objets

62 CE4.2Journées académiques Microsoft Synchronisation par événement Gestion des événements –Création –Prise de possession –Restitution –Transmission de données

63 CE4.2Journées académiques Microsoft Sémaphore Contrôle le nombre des accès à une ressource par la distribution de jetons Valeur maximale fixée à la création du sémaphore Chaque utilisateur prend (si possible) et restitue un ou plusieurs jetons sur le sémaphore Chaque fois quun jeton est pris, le compteur de jeton est décrémenté Chaque fois quun jeton est restitué, le compteur de jeton est incrémenté Lorsque le nombre de jetons disponibles est 0, la ressource nest plus disponible et le demandeur attend

64 CE4.2Journées académiques Microsoft Trains : problème Des trains doivent circuler sur une voie ferrée à sens unique –De A vers B –De B vers A Au plus, trois trains (dans le même sens !) peuvent se suivre sur la voie unique Cinq trains sont en attente de chaque côté Objectif : faire passer les trains sans collision

65 CE4.2Journées académiques Microsoft Trains : solution (1) Plusieurs trains pouvant se suivre dans le même sens, il ny a pas exclusion mutuelle entre les trains Contrôle par un sémaphore La voie étant à sens unique Contrôle par des événements de sens

66 CE4.2Journées académiques Microsoft Trains : solution (2) Chaque train sera un thread –5 threads AB_MAIN (A vers B) –5 threads BA_MAIN (B vers A) Pour quun train puisse entrer sur la voie il lui faudra obtenir –lévénement de sens –un des jetons du sémaphore Lors de la création des threads (fonction CreateThread) on passera un numéro de 1 à 5 pour différencier les threads de chaque sens (seulement deux threads à écrire au lieu de dix)

67 CE4.2Journées académiques Microsoft Trains : programme (1) Programme principal –Créer les 10 trains (10 threads) –Créer deux événements de sens, A B et B A –Créer un sémaphore à 3 jetons –Gérer le passage des trains –Fermer tout ce qui a été ouvert

68 CE4.2Journées académiques Microsoft Trains : programme (2) Boucle de gestion des trains –Libérer les jetons –Positionner A vers B pendant 500 ms –Attendre larrivée des trains en récupérant les jetons –Faire la même chose pour lautre sens –Sarrêter quand tous les trains sont passés

69 CE4.2Journées académiques Microsoft Trains : programme (3) Thread train –Récupérer le numéro du train –Attendre le sémaphore et lévénement de sens –Envoyer un message : « train numéro x parti » –Attendre 1 seconde (durée du trajet) –Envoyer un message : « train numéro x arrivé » –Rendre le jeton

70 CE4.2Journées académiques Microsoft Trains : main (1) #include "stdafx.h" #include "winbase.h" DWORD WINAPI AB_MAIN (LPVOID p); DWORD WINAPI BA_MAIN (LPVOID p); HANDLE SEM; HANDLE SENS_AB,SENS_BA; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {

71 CE4.2Journées académiques Microsoft Trains : main (2) // Définitions et réservations // Paramètres passés aux threads : numéros de 1 à 5 DWORD ThPa1 = 1; DWORD ThPa2 = 2; DWORD ThPa3 = 3; DWORD ThPa4 = 4; DWORD ThPa5 = 5; DWORD val; // Handles utilisés HANDLE AB_11, AB_12, AB_13, AB_14, AB_15, BA_21, BA_22, BA_23, BA_24, BA_25;

72 CE4.2Journées académiques Microsoft Trains : main (3) // Création d'un sémaphore à 3 jetons possibles, vide au départ SEM=CreateSemaphore(NULL,0,3,NULL); // Création des événements de sens SENS_AB=CreateEvent(NULL,TRUE,FALSE,NULL); SENS_BA=CreateEvent(NULL,TRUE,FALSE,NULL); printf("début du main\n\n");

73 CE4.2Journées académiques Microsoft Trains : main (4) // Création des 10 threads AB_11=CreateThread(0,0,AB_MAIN,&ThPa1,0,0); AB_12=CreateThread(0,0,AB_MAIN,&ThPa2,0,0); AB_13=CreateThread(0,0,AB_MAIN,&ThPa3,0,0); AB_14=CreateThread(0,0,AB_MAIN,&ThPa4,0,0); AB_15=CreateThread(0,0,AB_MAIN,&ThPa5,0,0); BA_21=CreateThread(0,0,BA_MAIN,&ThPa1,0,0); BA_22=CreateThread(0,0,BA_MAIN,&ThPa2,0,0); BA_23=CreateThread(0,0,BA_MAIN,&ThPa3,0,0); BA_24=CreateThread(0,0,BA_MAIN,&ThPa4,0,0); BA_25=CreateThread(0,0,BA_MAIN,&ThPa5,0,0);

74 CE4.2Journées académiques Microsoft Trains : main (5) // Boucle principale do { // Attente avant départ de A vers B Sleep(1000); // Libération des 3 jetons ReleaseSemaphore(SEM,3,NULL); // Set de lévénement de sens de A vers B SetEvent(SENS_AB); // Attente de 500 tics Sleep(500); // Reset de lévénement de sens de A vers B ResetEvent(SENS_AB);

75 CE4.2Journées académiques Microsoft Trains : main (6) // Attente de l'arrivée des trains et récupération des 3 jetons WaitForSingleObject(SEM,INFINITE); // Attente avant les départs de B vers A Sleep(1000); // Libération des 3 jetons ReleaseSemaphore(SEM,3,NULL);

76 CE4.2Journées académiques Microsoft Trains : main (7) // Set de lévénement de sens de B vers A SetEvent(SENS_BA); // Attente de 500 tics Sleep(500); // Reset de lévénement de sens de B vers A ResetEvent(SENS_BA); // Attente de l'arrivée des trains et récupération des 3 jetons WaitForSingleObject(SEM,INFINITE);

77 CE4.2Journées académiques Microsoft Trains : main (8) // Vérification de l'arrivée du dernier train GetExitCodeThread(BA_25,&val); printf("code du thread : %d\n",val); } while(val==259); // Tant que le dernier train nest pas arrivé printf("fin du main\n"); getchar();

78 CE4.2Journées académiques Microsoft Trains : main (9) // Fermeture des handles CloseHandle(AB_11); CloseHandle(AB_12); CloseHandle(AB_13); CloseHandle(AB_14); CloseHandle(AB_15); CloseHandle(BA_21); CloseHandle(BA_22); CloseHandle(BA_23); CloseHandle(BA_24); CloseHandle(BA_25);

79 CE4.2Journées académiques Microsoft Trains : main (10) CloseHandle(SEM); CloseHandle(SENS_AB); CloseHandle(SENS_BA); return 0; }

80 CE4.2Journées académiques Microsoft Trains : AB_MAIN (1) DWORD WINAPI AB_MAIN(LPVOID p) { // Initialisation des variables de retour // de la fonction WaitForSingleObject DWORD SENS=1,SEMA=1; // Récupération du numéro du thread (DWORD pp) // p est un pointeur de 'void' // p pointe sur le paramètre passé au thread DWORD pp=*(DWORD*)p;

81 CE4.2Journées académiques Microsoft Trains : AB_MAIN (2) // Attente de l'obtention du sens et du sémaphore // Les 2 valeurs doivent être égales à zéro while(SENS!=0 || SEMA!=0) { SENS=WaitForSingleObject(SENS_AB,INFINITE); SEMA=WaitForSingleObject(SEM,1); }

82 CE4.2Journées académiques Microsoft Trains : AB_MAIN (3) // Traitement printf("départ du train AB %d\n",pp); Sleep(1000); // Durée du trajet printf("arrivée du train AB %d\n",pp); // Libération du sémaphore ReleaseSemaphore(SEM,1,NULL); return 0; }

83 CE4.2Journées académiques Microsoft Trains : BA_MAIN (1) DWORD WINAPI BA_MAIN(LPVOID p) { // Initialisation des variables de retour // de la fonction WaitForSingleObject DWORD SENS=1,SEMA=1; // Récupération du numéro du thread DWORD pp // p est un pointeur de 'void' // p pointe sur le paramètre passé au thread DWORD pp=*(DWORD*)p;

84 CE4.2Journées académiques Microsoft Trains : BA_MAIN (2) // Attente de l'obtention du sens et du sémaphore // Les 2 valeurs doivent être égales à zéro while(SENS!=0 || SEMA!=0) { SENS=WaitForSingleObject(SENS_BA,INFINITE); SEMA=WaitForSingleObject(SEM,1); }

85 CE4.2Journées académiques Microsoft Trains : BA_MAIN (3) // Traitement printf("départ du train BA %d\n",pp); Sleep(1000); // Durée du trajet printf("arrivée du train BA %d\n",pp); // Libération du sémaphore ReleaseSemaphore(SEM,1,NULL); return 0; }

86 CE4.2Journées académiques Microsoft Résultat On a un peu triché avec les accents

87 CE4.2Journées académiques Microsoft Plate-forme de travail

88 CE4.2Journées académiques Microsoft Outils de Platform Builder Platform Builder propose un ensemble doutils spécialisés et un générateur de macro pour aider à la mise au point dapplications, vérifier le bon fonctionnement temporel, étudier les performances, visualiser les fenêtres, etc. Parmi ces outils, le « Remote Kernel Tracker » permet de visualiser graphiquement la chronologie dune application : création des process, threads, événements, enchaînement des événements, mutex, etc.

89 CE4.2Journées académiques Microsoft Modification de lexemple Dans notre exemple de programme les impressions par printf sont elles-mêmes gérées par des événements, sections critiques, etc. Pour simplifier sous Kernel Tracker la visualisation des résultats qui nous intéressent, nous avons reconstruit lexemple en supprimant des impressions

90 CE4.2Journées académiques Microsoft Découverte de Kernel Tracker Téléchargement du noyau Lancement de Remote Kernel Tracker Lancement de TRAINS Collecte des données –Attente de quelques secondes –Fin de TRAINS après click sur OK –Fin de la collecte après quelques secondes –Déconnexion de la cible Analyse des données

91 CE4.2Journées académiques Microsoft Démarrage de Remote Kernel Tracker

92 CE4.2Journées académiques Microsoft Accepter le choix par défaut : OK

93 CE4.2Journées académiques Microsoft Début de Remote Kernel Tracker

94 CE4.2Journées académiques Microsoft Exemple de visualisation Menus… Threads Légende Échelle de temps Fenêtre de visualisation Info Bulle

95 CE4.2Journées académiques Microsoft Phase de démarrage de TRAINS Prologue

96 CE4.2Journées académiques Microsoft Positionnement du curseur Click gauche

97 CE4.2Journées académiques Microsoft Positionnement du marqueur 1 Ouverture du menu par un click droit

98 CE4.2Journées académiques Microsoft Positionnement du marqueur 2 Marqueur 1 positionné Curseur déplacé

99 CE4.2Journées académiques Microsoft Mesure du temps entre marqueurs Écart visualisé par une hachure Écart mesuré numériquement

100 CE4.2Journées académiques Microsoft Démarrage des threads

101 CE4.2Journées académiques Microsoft Circulation des premiers trains Démarrage des threads 3 trains partent 2 trains attendent 2 trains prêts 3 trains attendent 3 trains arrivent

102 CE4.2Journées académiques Microsoft Détail du départ dun train Libération du sémaphore Autorisation donnée A B Autorisation reçue Train circule

103 CE4.2Journées académiques Microsoft Fin des premiers threads Restitution dun jeton Fin du thread 1 Fin du thread 2 Fin du thread 3

104 CE4.2Journées académiques Microsoft Action directe sur les threads Ouverture du menu par click droit sur le nom du thread

105 CE4.2Journées académiques Microsoft Circulation des trains suivants

106 CE4.2Journées académiques Microsoft Arrivée du dernier train

107 CE4.2Journées académiques Microsoft Fin du programme Attente du getchar()

108 CE4.2Journées académiques Microsoft Conclusion Nous avons exploré quelques aspects de Kernel Tracker –Visualisation de lenchaînement des tâches –Visualisation des objets –Mesure des temps –Utilisation en tant quanalyseur logique

109 CE4.2Journées académiques Microsoft DRIVER Port Parallèle Commande de LCD Liliane PIEDFORT

110 CE4.2Journées académiques Microsoft EXEMPLE DE DRIVER PORT PARALLELE Commande dun module daffichage LCD

111 CE4.2Journées académiques Microsoft Plan Fonctionnement du port parallèle Fonctionnement du LCD –Signaux –Commandes Notion de driver Driver du LCD Programme dapplication

112 CE4.2Journées académiques Microsoft Port Parallèle dun PC (1) Le port parallèle standard (SPP) est un port prévu dès lorigine du PC pour obtenir une liaison plus rapide que la liaison série de lépoque, utile pour commander une imprimante 0x378 : Parallel Printer 1 (LPT1) associé à lIRQ7

113 CE4.2Journées académiques Microsoft Port Parallèle dun PC (2) Registre de données (D7-D0) –à ladresse de base du port Registre de Status (S7-S3) –à ladresse de base du port + 1 –utilisé pour ses cinq bits de poids forts seulement S7-S3, S2-S0 inutilisés ou inexistants Registre de commande (C4-C0) –à ladresse de base du port + 2 –Utilisé pour ses cinq bits de poids faibles C4-C0, C7-C5 inutilisés ou inexistants –Pour le LCD nous nutilisons que les bits C3 et C0

114 CE4.2Journées académiques Microsoft Registres du port parallèle Adresse de base Registre de données D7D0 Adresse de base + 1 Registre de status (lecture) S7 Adresse de base + 2 Registre de contrôle C0 Poids fort Poids faible S5S6S4S3 C3C2C1 D6D5D4 D3 D2D1 C4

115 CE4.2Journées académiques Microsoft Registres données et commande D0 D1 D2 D3 D4 D5 D6 D7 Registre donnéesBuffer D5 D2 D3 D4 D1 D6 D7 C0 C1 C2 C3 Registre commande Buffer C2 C3 C1

116 CE4.2Journées académiques Microsoft Écriture sur un port VOID WRITE_PORT_UCHAR(PUCHAR Port, UCHAR Value); Parameters Port [in] Pointer to the port that must be a mapped memory range in I/O space. Value [in] Byte to be written to the port. Return Values None.

117 CE4.2Journées académiques Microsoft Module daffichage LCD Le module HD44780 possède –Une mémoire de 80 caractères : Display Data RAM (DD RAM) –Un générateur de police de caractère –Deux registres internes: DR et IR Taille de lafficheur utilisé : –Nombre de lignes daffichage : 2 –Nombre de caractères par ligne : 20

118 CE4.2Journées académiques Microsoft Signaux du module LCD Port de données D7-D0 RSRegister Select EEnable R/nW Lecture/écriture, ici écriture seule: 0 V DD Alimentation 5V V SS Masse V L Contrôle du contraste, maximal = 0

119 CE4.2Journées académiques Microsoft Câblage du module LCD sur le port parallèle Module daffichage LCD R/W V SS V L V DD Port parallèle D7 D6 D5 D4 D3 D2 D1 D0 RS E C0 C3 V DD V L à la masse donne le contraste maximum 10 KΩ

120 CE4.2Journées académiques Microsoft Registres internes du module LCD Deux registres internes –IR registre dinstruction –DR registre de données Commande des registres par deux signaux –RS : Register Selector relié à la broche nC3 du port parallèle différencie ces deux registres: RS = 0 accès à IR RS = 1 accès à DR –E : Enable relié à la broche nC0 du port parallèle, E 1 valide lintroduction des données dans les registres

121 CE4.2Journées académiques Microsoft Séquence décriture dans IR et DR Repos IR RS=0 E=0 Donnée IR RS=0 E0 Donnée DR RS=1 E0 Repos DR RS=1 E=0

122 CE4.2Journées académiques Microsoft Commandes pour écrire dans IR Signaux de commande en position de repos RS relié à nC3 et E relié à nC0 mais état complémenté des bits C3 et C0 doù : commande x x 1 (RS=0 E=0) Mettre linstruction sur le port parallèle D7-D0 Écrire cette instruction dans le registre IR commande x x 0 (RS=0 E=1) Retour à létat de repos commande x x 1 (RS=0 E=0)

123 CE4.2Journées académiques Microsoft Commandes pour écrire dans DR Signaux de commande en position de repos RS relié à nC3 et E relié à nC0 mais état complémenté des bits C3 et C0 doù : commande x x 1 (RS=1 E=0) Mettre la donnée sur le port parallèle D7-D0 Écrire cette donnée dans le registre DR commande x x 0 (RS=1 E=1) Retour à létat de repos commande x x 1 (RS=1 E=0)

124 CE4.2Journées académiques Microsoft Détail des commandes IR et DR Afficheur LCD à deux lignes (C1 inutilisé, à 0 ) C2 inutilisé, mis à 1 Repos en prévision dune commande pour IR %1101 = 0xD «CTRL» RS=0 E=0 Entrée de la commande dans IR %1100 = 0xC «CTRLEN» RS=0 E=1 Repos en prévision dune commande pour DR %0101 = 0x5 «DATA» RS=1 E=0 Entrée de la commande dans DR %0100 = 0x4 «DATAEN» RS=1 E=1

125 CE4.2Journées académiques Microsoft DDRAM du module LCD Le module LCD contient une DDRAM gérée automatiquement par les écritures dans le registre DR La donnée écrite dans le registre DR est transférée systématiquement dans la DDRAM à une adresse définie par un compteur dadresse interne (AC) AC incrémenté à chaque écriture dans DR AC initialisé par écriture de linstruction Set DDRAM address dans le registre IR

126 CE4.2Journées académiques Microsoft LCD à 2 lignes de 20 caractères DDRAM 20 caractères Première ligne Seconde ligne 0x00 0x27 0x40 0x67 0x13 0x53 0x54

127 CE4.2Journées académiques Microsoft Instructions pour le LCD (1) Clear Display: 0x01 Return Home: 0x02 Entry Mode Set: 0x04 à 0x07 (% I/D S) –I/D = 1 incrément –S = 0 pas de décalage Display ON/OFF: 0x08 à 0x0F (%00001 D C B) –D = 0 display OFF –C = 0 cursor OFF –B = 0 blink OFF

128 CE4.2Journées académiques Microsoft Instructions pour le LCD (2) Function Set: 0x38 ici (%001 DL N F 00) –DL=1Interface 8 bits –N=1LCD à deux lignes (0 pour une ligne) –F=0Matrice 5x7 0x30 au reset Set DDRAM address: 0x80 à 0xFF (bit 7 à 1) (%1AAAAAAA) –AAAAAAAAdresse sur 7 bits à placer dans le compteur AC

129 CE4.2Journées académiques Microsoft Initialisation du LCD Timing à respecter après la mise sous tension Séquence de commande obligatoire de configuration du LCD

130 CE4.2Journées académiques Microsoft Timing à respecter après Power On

131 CE4.2Journées académiques Microsoft Séquence dinitialisation RESET:Instruction 0x30 (Function Set: interface 8 bits) envoyée 3 fois Display OFF Display ON Clear Display Function Set: taille réelle de linterface, nombre de lignes et police. (non modifiable ensuite) Mode Set: gestion affichage (décalage texte, incrément dadresse mémoire)

132 CE4.2Journées académiques Microsoft Exemple denvoi de commande // Mise du port dans létat repos commande WRITE_PORT_UCHAR(PARCOMMAND, CTRL); Sleep(15); // Attente de 15ms après la mise sous tension. // Function Set 1 (interface 8 bits) WRITE_PORT_UCHAR(PARDATA, 0x30); WRITE_PORT_UCHAR(PARCOMMAND, CTRLEN); Sleep(2); // Attente de 2 ms (signal ENABLE actif) WRITE_PORT_UCHAR(PARCOMMAND, CTRL); Sleep(5); // Attente de 5 ms avant la commande suivante.

133 CE4.2Journées académiques Microsoft Notion de driver

134 CE4.2Journées académiques Microsoft Driver Driver : raccourci pour « device driver », souvent traduit par pilote ou contrôleur de périphérique Device : dispositif physique (périphérique) ou logique (protocole, service, périphérique virtuel, fichier) dont le fonctionnement nécessite des commandes et des ressources au sens large, mémoire, temps, port, etc. Device driver : module logiciel qui assure linterface entre le système et le device

135 CE4.2Journées académiques Microsoft Règle de nommage Nom commençant par un préfixe (XXX de façon symbolique) de trois caractères pour le driver, par exemple TTY pour une ligne série ou PAR pour lexemple présenté suivi du caractère underscore et du nom de la fonction réalisée. ex : PAR_Init

136 CE4.2Journées académiques Microsoft Fichier.def Sert à décrire un module pour orienter le travail de léditeur de liens lors de la création dun exécutable.exe ou dune dll Fichier à créer en respectant une structure particulière Structure décrite dans la documentation sous lentrée « Module-Definition Files » Nous nutiliserons que le paragraphe LIBRARY et lentrée EXPORT dans notre fichier.def

137 CE4.2Journées académiques Microsoft Fonctions dun driver XXX_Init XXX_Deinit XXX_Open XXX_Close XXX_Read XXX_Write XXX_IoControl XXX_Seek XXX_PowerUp XXX_PowerDown

138 CE4.2Journées académiques Microsoft Lien Driver Application XXX_Init appelé par RegisterDevice XXX_Open appelé par CreateFile XXX_IOControl appelé par DeviceIOControl XXX_Close appelé par CloseHandle XXX_Deinit appelé par DeregisterDevice

139 CE4.2Journées académiques Microsoft Driver de gestion du LCD

140 CE4.2Journées académiques Microsoft PARA.def

141 CE4.2Journées académiques Microsoft Driver (1) // #include nécessaires #include "stdafx.h" #include

142 CE4.2Journées académiques Microsoft Driver (2) // Définition des IOCTL #define IOCTL_PUTC \ CTL_CODE(FILE_DEVICE_UNKNOWN,2048,\ METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_CURSEUR \ CTL_CODE(FILE_DEVICE_UNKNOWN,2049,\ METHOD_BUFFERED,FILE_ANY_ACCESS)

143 CE4.2Journées académiques Microsoft Driver (3) // Définition des adresses du port parallèle #define PARBASE ((PUCHAR) 0x0378) #define PARDATA PARBASE #define PARCOMMAND PARBASE+2 // Définition des mots de commande #define CTRL0xD #define CTRLEN0xC #define DATA0x5 #define DATAEN0x4

144 CE4.2Journées académiques Microsoft Driver (4) BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; }

145 CE4.2Journées académiques Microsoft Driver (5) DWORD PAR_Init(DWORD dwContext) { // Mise du port dans létat repos commande DWORD dwRet = 1; WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(15); // Envoi des trois Function Set de RESET // Positionnement de la donnée : 0x30 WRITE_PORT_UCHAR(PARDATA,0x30); // Function Set 1 WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(5);

146 CE4.2Journées académiques Microsoft Driver (6) // Function Set 2 WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(1); // Function Set 3 WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(10);

147 CE4.2Journées académiques Microsoft Driver (7) // Display OFF WRITE_PORT_UCHAR(PARDATA,0x08); WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(10); // Display ON WRITE_PORT_UCHAR(PARDATA,0x0F); WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(10);

148 CE4.2Journées académiques Microsoft Driver (8) // Clear Display WRITE_PORT_UCHAR(PARDATA,0x01); WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(10); // Function Set (2 lignes, 8 bits) WRITE_PORT_UCHAR(PARDATA,0x38); WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(10);

149 CE4.2Journées académiques Microsoft Driver (9) // Mode Set (incrément, pas de décalage) WRITE_PORT_UCHAR(PARDATA,0x06); WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(10); // Mise du port dans létat repos data WRITE_PORT_UCHAR(PARCOMMAND,DATA); return dwRet; }

150 CE4.2Journées académiques Microsoft Driver (10) BOOL PAR_Deinit(DWORD hDeviceContext) { BOOL bRet = TRUE; return bRet; }

151 CE4.2Journées académiques Microsoft Driver (11) DWORD PAR_Open(DWORD hDeviceContext, DWORD AccessCode,DWORD ShareMode) { DWORD dwRet = 1; return dwRet; } BOOL PAR_Close(DWORD hOpenContext) { BOOL bRet = TRUE; return bRet; }

152 CE4.2Journées académiques Microsoft Driver (12) BOOL PAR_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut) { int val; BOOL bRet = 1;

153 CE4.2Journées académiques Microsoft Driver (13) switch(dwCode) { case IOCTL_PUTC: WRITE_PORT_UCHAR(PARDATA,pBufIn[0]); WRITE_PORT_UCHAR(PARCOMMAND, DATAEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,DATA); break;

154 CE4.2Journées académiques Microsoft Driver (14) case IOCTL_CURSEUR: // Positionnement du curseur à définir dans lapplication val = pBufIn[0]; // Commande 1xxxxxxx (xxxxxxx 7 bits) val = val + 0x80; // Mise du port en repos commande WRITE_PORT_UCHAR(PARCOMMAND,CTRL); Sleep(2);

155 CE4.2Journées académiques Microsoft Driver (15) // Envoi de la commande de positionnement WRITE_PORT_UCHAR(PARDATA,val); WRITE_PORT_UCHAR(PARCOMMAND,CTRLEN); Sleep(2); WRITE_PORT_UCHAR(PARCOMMAND,CTRL); // Mise du port en repos data WRITE_PORT_UCHAR(PARCOMMAND,DATA); break; }// switch

156 CE4.2Journées académiques Microsoft Driver (16) *pdwActualOut = 1; return bRet; } // Fin du Driver LCD

157 CE4.2Journées académiques Microsoft Application LCD Écriture dun message sur 2 lignes

158 CE4.2Journées académiques Microsoft Application (1) // #include nécessaires #include "stdafx.h" #include // Définition des IOCTL #define IOCTL_PUTC \ CTL_CODE(FILE_DEVICE_UNKNOWN,2048,\ METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_CURSEUR \ CTL_CODE(FILE_DEVICE_UNKNOWN,2049,\ METHOD_BUFFERED,FILE_ANY_ACCESS)

159 CE4.2Journées académiques Microsoft Application (2) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {

160 CE4.2Journées académiques Microsoft Application (3) // Déclarations et réservations HANDLE hDevice; CHAR carac1[1]; DWORD dwNb; HANDLE hPara; CHAR* pstring1 = " journées académiques"; CHAR* pstring2 = " 2005"; unsigned int i;

161 CE4.2Journées académiques Microsoft Application (4) // Chargement du driver hDevice = RegisterDevice(TEXT("PAR"),1, TEXT("PARA_DRV.dll"),NULL); if(hDevice == 0) { MessageBox(NULL,_T("Pb Register PAR1:"), _T("PARA_APP"),MB_OK); return 0; }

162 CE4.2Journées académiques Microsoft Application (5) // Ouverture du driver hPara = CreateFile(TEXT("PAR1:"),GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,0); if (hPara == INVALID_HANDLE_VALUE) { MessageBox(NULL,_T("Pb Ouverture PAR1:"), _T("PARA_APP"),MB_OK); DeregisterDevice(hDevice); CloseHandle(hDevice); return 0; }

163 CE4.2Journées académiques Microsoft Application (6) // Envoi première chaîne de caractères for(i = 0; i

164 CE4.2Journées académiques Microsoft Application (7) // Positionnement du curseur au début de la ligne 2 carac1[0]=0x40; DeviceIoControl(hPara,IOCTL_CURSEUR, carac1,1,carac1,1,&dwNb,NULL); // Envoi deuxième chaîne for(i=0;i

165 CE4.2Journées académiques Microsoft Application (8) // Fermeture des handles CloseHandle(hPara); DeregisterDevice(hDevice); CloseHandle(hDevice); MessageBox(NULL,_T("Fin application PARA_APP"), _T("PARA_APP"),MB_OK); return 0; } // Fin de lapplication

166 CE4.2Journées académiques Microsoft Téléchargement du noyau et de lapplication sur la cible Ligne ethernet Adresse IP de lhôte Carte réseau locale 1 Carte Locale Netgear Passerelle vue par défaut Câble Ethernet croisé Carte réseau locale Non en DHCP Pas de DNS Cible CEPC Port parallèle Journées Académiques 2005 PC hôte

167 CE4.2Journées académiques Microsoft Conclusion

168 CE4.2Journées académiques Microsoft Cours disponible Version V1.0 –www.esiee.fr/~callotjwww.esiee.fr/~callotj –www.msdnaa.net/search/advancedsearch.aspx

169 CE4.2Journées académiques Microsoft Développements en cours Cible Dragon Ball Mx21 –Portage CE5.0 –Applications vidéo –Réalisation dune maquette pédagogique

170 CE4.2Journées académiques Microsoft iMX21

171 CE4.2Journées académiques Microsoft Questions


Télécharger ppt "CE4.2Journées académiques Microsoft 20051 Cours Windows CE."

Présentations similaires


Annonces Google