Platform Builder 4.1
Transcription
Platform Builder 4.1
Platform Builder 4.1
v1.5c - octobre 2003
1
Platform Builder 4.1 © Theoris 2003
AVERTISSEMENT
Reproduction, communication, adaptation de ce document, même partielle, interdite sauf autorisation écrite.
La copie non autorisée est un délit.
Ce document ne peut être utilisé que par le seul bénéficiaire de la formation
appartenant à la société désignée dans la convention de formation.
Ce document ne peut pas être utilisé pour la formation de tiers y compris ceux
appartenant à la société désignée dans la convention de formation.
Platform Builder 4.1 © Theoris 2003
2
1
Sommaire
1-
Présentation générale de Windows CE.net
2-
Présentation générale de Platform Builder
3-
Fonctionnalités de Windows CE.net
4-
Support des applications natives
5-
Développement de système Windows CE.net
6-
Pilotes de périphériques Windows CE.net
7-
La base de Registre Windows CE.net
Platform Builder 4.1 © Theoris 2003
3
Plan du cours – Jour 1
•
Présentation générale de Windows CE.net
Architecture
Outils de développement
Présentation générale de Platform Builder
Configuration d’OS
Environnement croisé
TP1 – Création d’une cible Windows CE
•
Fonctionnalités de Windows CE.net
Platform Builder 4.1 © Theoris 2003
4
2
Plan du cours – Jour 2
Support des applications natives
Configuration d’OS
Environnement croisé
TP2 – Développement d’un utilitaire de
connexion pour la cible
•
Développement de système Windows CE.net
Arborescence PB-4.1
Gestion des composants
TP3 – Ajout d’un composant
Platform Builder 4.1 © Theoris 2003
5
Plan du cours – Jour 3
Pilotes de périphériques
Familles de pilotes
Chargement des pilotes
TP4 – Développement d’un pilote
Stream
La base de Registre Windows CE
Registre sauvegardé
Platform Builder 4.1 © Theoris 2003
6
3
Windows CE.NET
1 - Présentation Générale Windows CE.net
Platform Builder 4.1 © Theoris 2003
7
Plan du Chapitre 1
Historique
Caractéristiques de Windows CE
Les Outils Windows CE
• Platform Builder 4.1
• Embedded Visual Tools
• Embedded Visual Studio 4.0
• Visual Studio.NET
Platform Builder 4.1 © Theoris 2003
8
4
Historique
Informatique industrielle
Temps-Réel
VxWorks
QNX
RTX
CE
Informatique personnelle
PC-DOS
XP
Windows
Linux
Win2K
UNIX
Informatique de gestion
IBM
Client-Serveur
1950 1960 1970
1980
1990
2000
9
Platform Builder 4.1 © Theoris 2003
Les OS Microsoft
1981
PC-DOS
MS-DOS 2.11
MS-DOS 3.1
1985
MS-DOS 3.31
1990
MS-DOS 5.0
MS-DOS 6.22
Windows 95
Windows 98
NT
Windows NT 3.1
Windows NT 4.0
CE 1.0
CE 2.0
Windows NT Embedded
2000 Windows Me Windows 2000
Windows XP Windows XP Embedded
Platform Builder 4.1 © Theoris 2003
Windows 2.0
Windows 3.0
Windows 3.1
1995
Windows 1.01
CE 3.0
CE .NET
10
5
Solutions Windows Embedded
Switches
PBX
Windows CE
Copieurs
•Arm, x86, SHx, MIPS
•Empreinte très réduite
•Dispositifs visés
•Applications mobiles
Imprimantes
Windows NTe XPe
POS
•Architecture PC
•Interconnections
•Compatibilité Win32
PDA/HPC
Cameras
Critères de choix
• Plateforme
• Empreinte
• Dispositifs pour l’embarqué
11
Platform Builder 4.1 © Theoris 2003
Choix d’un OS embarqué Windows
Alimentation par batterie ?
OUI
NON
Architecture CPU ?
X86, SH3, ARM…
X86 PC
Taille du noyau en RAM ?
<16 Mo
> 16 Mo+
Oui
Utilisation d’appli. existante ?
Target Designer
Platform Builder 4.1 © Theoris 2003
Non
Platform Builder
12
6
Windows CE .NET
Un OS modulaire et compact
Connectivité avec et sans fil
Capacitées temps-réel robustes
Support multimédia et multilangues riche
Outils de développement
Platform Builder 4.1 © Theoris 2003
13
Caractéristiques Windows CE-1
Système 32 bits utilisant les mécanismes de mémoire virtuelle
Modularité des fonctionnalités du système d‘exploitation
• De ≈500 K octets à ≈8 M octets pour la famille x86
Ordonnanceur temps réel, multi-tâches, préemptif à priorités fixes
Système embarquable sans disque dur
• Exécutable en ROM ou en RAM
Multi cibles - Microprocesseur 32 bits
• SH, MIPS, x86, ARM
Pas d’architecture matérielle imposée.
• Les processeurs supportés sont définis par Microsoft
Platform Builder 4.1 © Theoris 2003
14
7
Caractéristiques Windows CE-2
Code indépendant de la plateforme
Intègre un module de gestion d’Interface Homme Machine
Gestionnaire de Pilotes de périphériques
Système Communicant
De nombreuses applications disponibles
• Couche d’adaptation du matériel (OAL)
• Disponibilité du code source (read-only)
• Graphic and Windowing Environment Subsystem (GWES)
• PCI, USB, FireWire, ATA-IDE, Audio, Multimedia
• Pilotes Natifs et Stream, Installable File System
• NDIS 5.1, IrDA, Bluetooth, TAPI, RAS, SNMP, TCP/IP, VoIP, etc…
• DirectX, Media Player, Support Multi-Langues
• Navigateur et Serveurs HTTP, Outils Office
• Shells, Viewers, SQL server …
Platform Builder 4.1 © Theoris 2003
15
Quelques Solutions…
Platform Builder 4.1 © Theoris 2003
16
8
Architecture Générale CE
Application
Win32 - CE
Appels de
fonctions
Win32, etc…
Accès direct
au matériel
Sous-ensemble de l’API Win32
Object
Store
Device
Drivers
Kernel
GWES
Shell
Couche d'adaptation au matériel (OAL)
Matériel
17
Platform Builder 4.1 © Theoris 2003
Qui fait quoi ?
microsoft
OEM
utilisateur
Application
Win32 - CE
Sous-ensemble de l’API Win32
Object
Store
Device
Drivers
Kernel
GWES
Shell
Couche d'adaptation du matériel (OAL)
Matériel
Platform Builder 4.1 © Theoris 2003
18
9
Qui fait quoi ? (détail)
microsoft
OEM
utilisateur
Logiciel
Applications
& Shells Natifs
Shell
OEM
Applications
API win32, socket, TAPI ,COM, MFC, ATL, etc…
Object
Store
GWES
Noyau
OAL
Panel
tactile
LED
Display
Keyb.
mouse
bootloader
Communications
Device Manager
Power
Flash
Paral.
serie
PCMCIA
Etc…
Matériel
Platform Builder 4.1 © Theoris 2003
19
Les Outils Windows CE
Etape 1
Fabriquer le système
• Platform Builder 4.1
Gestion des composants du système
Etape 2 Surveiller le système
• Embedded Visual Tools
Processus, Mémoire, Fichiers …
inclus
Platform
Manager
inclus
Etape 3 Développer des Applications
• Embedded Visual Studio 4.0-SP1
Applications C/C++ utilisant l’API win32 et la LibC
• Visual Studio.net
Applications C#, VB7 utilisant le Compact Framework
Platform Builder 4.1 © Theoris 2003
20
10
1 - Fabriquer le Système
BSP
OAL de
La cible
Sources
& binaires
De l’OS
Platform
SDK
Pilotes
De la cible
Applications
Windows CE
Platform Builder
Binaire
CE
Données de
configuration
(filesystem…)
Platform Builder 4.1 © Theoris 2003
21
1 - Platform Builder 4.1
Base de données de Binaires & Sources
• OEM Adaptation Layer
• Noyau Windows CE
• Pilotes de Périphériques (PCI, USB, Com …)
• Piles de protocoles, Systèmes de fichiers, Modèle d’IHM
• Shells & Applications
Environnement de développement
• Génération de Makefiles
• Compilateurs croisés (x86, ARM, SH, MIPS)
• Outils de packaging, et de téléchargement
Outil Graphique Interactif (IDE)
• Visualisation des composants, choix, Drag&Drop
• Menus contextuels, Debug symbolique.
Platform Builder 4.1 © Theoris 2003
22
11
1 - Lancement du Système
RAM
Système
Bootloader
NK.BIN
File System
Object
Store
Registry
Database
23
Platform Builder 4.1 © Theoris 2003
1 – Connexion Hôte-Cible
Parallèle
USB, IrDA, autres…
RS232
Ethernet
loadcepc.exe
CESH.exe
Remote
Connection
Platform Manager
Platform Builder 4.1 © Theoris 2003
CE
Téléchargement
Debug, Tools
eboot.bin
KITL / TCP-IP
24
12
2 - Surveiller le Système
Platform Builder 4.1 © Theoris 2003
25
2 - Embedded Visual Tools
Outils de Vérification & Performances
• Kernel Tracker chronogrammes des objets système
• Call Profiler
analyse des temps d’exécution
• Performance Monitor graphiques d’activité du système
Outils de Debug
• SPY++
messages Windows
• Heap Walker
analyse de la zone de malloc
• Process Viewer information processus et threads
Outils de gestion de la cible et utilitaires
• ZoomIn
copies d’écrans
• File Viewer
gestion des fichiers de la cible
• Registry Viewer édition de la base de registres de la cible
• System Infos
paramètres généraux du système
Platform Builder 4.1 © Theoris 2003
26
13
3 - Développer des Applications
Modèle d’application Native
Modèle d’application Managed
embedded Visual Studio 4.0
Platform Builder 4.1
Visual Studio .NET
avec Device Extensions
C# ou VB .NET
C ou C++
Applications pour le
Compact Framework .NET
Applications Win32
Runtime CLR
Compilées
Compact Framework
OS Windows CE .NET
Platform Builder 4.1 © Theoris 2003
27
3 - Embedded Visual Studio 4.0
Equivalent à Visual Studio 6.0
Environnement Graphique, Assistants
Compilateurs C/C++ SH, ARM, MIPS, x86
Workspace (.VCW) et Projet (.VCP)
Repose sur des API et technologies connues
LibC, Win32, WinSock, TAPI,
MFC, COM/DCOM, etc…
Doit permettre une internationalisation aisée de
l’application
Windows CE est UNICODE
Permet d’exploiter les caractéristiques natives de la
cible (produit du code machine)
Platform Builder 4.1 © Theoris 2003
28
14
Modèle d’application Native
Basé sur l’API Win32
Cadre qui reste familier aux développeurs Win32
APIs spécifiques à Windows CE : Base de données, gestion
des Threads, FileMapping …
Fenêtres visibles ou non avec gestion de messages
WinMain
WndProc
Paramètres liés au développement croisé
Import des SDK (.h & Help) exportés par Platform Builder
Choisir une CPU cible (x89, SH, MIPS, ARM)
Choisir un BSP cible (CEPC, GEODE …)
29
Platform Builder 4.1 © Theoris 2003
API Win32
Interface de programmation des produits Microsoft
• Fournit les interfaces d’appel des fonctions du système
• LA Win32 n’est pas unique. Plusieurs implémentations
•
existent
Windows 3.1 (Win32s),
Windows NT,
Windows 95/98,
Windows CE
Des différences existent entre les implémentations
Plus de 2000 fonctions, messages et codes
Platform Builder 4.1 © Theoris 2003
30
15
Les Librairies eVC
Librairie C Run-time
• Versions Retail et Debug
• Sous ensemble de la librairie complète C
Active Template Library
• Contrôles ActiveX et éléments COM
• Modèle de composants taille inférieure aux MFC
Component Object Model
• Modèle objet fondamental utilisé par les contrôles activeX et OLE
ActiveX
• Librairie dynamique (DLL) ou éxécutable (.exe) qui contient un ou
plusieurs composants COM
Microsoft Foundation Class Library (MFC)
• Framework applicatif orienté objet
Platform Builder 4.1 © Theoris 2003
31
Emulateurs de Cibles
Cible virtuelle sur station
CEPC
PocketPC
SmartPhone
Etc…
Développement sans cible
Emulation du code machine (x86 ou ARM sur X86)
Se comporte comme une cible (outils croisés)
Fourni avec son SDK eVC
Avantages
Gain de temps
Gain de matériel
Platform Builder 4.1 © Theoris 2003
32
16
Développement parallèle
Développement linéaire :
Port H/W
OS
Applications
Développement parallèle :
Applications
OS
Port H/W
33
Platform Builder 4.1 © Theoris 2003
QA
Apps
OS
Projet terminé
Portage terminé
Hardware Stable
AVANCEMENT
Ligne de projet typique
Validation finale
Tests
Dev App sur H/W
Developpement d’appli sur SDB
Optimisation OS sur H/W
OS sur SDB
Driver N
Driver B
Driver A
Portage
OAL
Boot loader
Temps
Platform Builder 4.1 © Theoris 2003
34
17
Aller d’une configuration de base
(SDB) à un hardware spécifique
Sur un “Standard Development
Board” (SDB)
• Configuration OS
• Build de l’image
• Débogue de l’OS
• Generation d’un “Platform
SDK”
et/ou un émulateur
• Développement applicatifs
• Integration et tests
Sur la cible finale
• Création du Board Support
Package (BSP)
Bootloader
OAL
Device Drivers
• Rebuild du système avec
le nouveau BSP
• Debug et tests sur le
hardware
• Production et déploiement
Platform Builder 4.1 © Theoris 2003
35
3 – Projets Platform Builder 4.1
Visual Studio intégré dans PB
Environnement graphique, Assistants
Projet (.PBP), pas de Workspace
Compilateur C/C++
API standards du monde Windows
LibC, Win32, WinSock, TAPI,
MFC, COM/DCOM, etc…
Cohabitation avec Platform Builder
Intégration aisée de l’EXE ou de la DLL dans NK.bin
Debug Kernel
Bien adapté au développement composants système
Platform Builder 4.1 © Theoris 2003
36
18
3 - Visual Studio.NET
Même outil que pour Windows XP
Code interprété ou compilé JIT
Environnement Graphique, Assistants
Compilateur C#, Visual Basic 7.0; etc…
Nouveau modèle d’application (pas de portabilité win32)
.NET framework (winforms, webforms)
Version Windows CE = Compact Framework
Permet de n’écrire qu’une fois (run everywhere…)
Common Language Runtime
Ne permet pas d’exploiter les caractéristiques natives de la cible
(produit du byte-code)
Utile pour la bureautique « Mobile », et les IHM
Platform Builder 4.1 © Theoris 2003
37
Le modèle d’application Managed
Extensions Smart Device pour Visual Studio .NET (SDE)
• C’est un package s’intégrant à Visual Studio .NET
• Inclus un ensemble de profils de cibles pré-buildés
Permet de développer des applications pour Windows CE en
utilisant les WinForms, ADO.NET, et les servies Web XML
Tous les langages se compilent dans un format IL
(Intermediate Language)
• Développement d’applications en C#
• Développement d’applications en Visual Basic .NET
Platform Builder 4.1 © Theoris 2003
38
19
Le modèle d’application “Managed” (suite)
Le Compact Framework (CF) .NET
• Runtime (côté cible) pour les applications .NET
Common Language Runtime (CLR)
• Machine d’éxécution gérant les applications .NET
• Compilateur “Just-In-Time” pour le format IL
Library de classes
• Classes liées aux fenêtres, aux données, XML et GDI
• Réel sous-ensemble des classes du Framework .NET
39
Platform Builder 4.1 © Theoris 2003
Comparaison des deux modèles
Applications natives
• Recompilation pour chaque
•
•
•
•
•
nouveau CPU ou cible
Le développeur gère les
resources système
Tourne sans besoin de
fichiers supplémentaires
Peut accéder à tous les
services et APIs de l’OS
Nécessite un portage pour
tourner sur une station de
travail
Supporte COM et la
programmation ActiveX
Platform Builder 4.1 © Theoris 2003
Applications “Managed”
• Compilation unique pour
•
•
•
•
•
toutes les cibles
Le Runtime gère les
resources système
Nécessite le runtime (CF
.NET)
Les applications n’accèdent
qu’aux services mis à
disposition par le CF
Tourne sur une station de
travail sans portage
On ne peut plus bénéficier de
ce qui a été développé “avant”
40
20
Windows CE.NET
2 - Présentation générale de PB 4.1
41
Platform Builder 4.1 © Theoris 2003
Plan du chapitre 2
Cycle de développement d’une plateforme
Création d’un Projet
Construction de l’image Windows CE
Téléchargement de l’image
Dialogue avec la cible
Platform Builder 4.1 © Theoris 2003
42
21
Le cycle de développement d’une
plate-forme
Configuration
Build
•Creation de la plate-forme
•Modifications
•Make Platform
Headers
•Compile
•Link
•Make Image
(NK.BIN)
Bootloader
OAL
•Device Drivers
•Fichiers de configuration
•Applications
•Ajout de composants
•Localisation
•Export du SDK
•
•
Download
•Ethernet, Parallel,
ou JTAG
•Copie NK.BIN
•Démarrage du
Windows CE
Debug Monitor
•Debug
Processus itératif
43
Platform Builder 4.1 © Theoris 2003
Configuration de la plate-forme
Le
“Platform Wizard”
BSPs
disponibles
Configurations
Variantes
de configurations
Applications
Réseau
et média
et communications
Platform Builder 4.1 © Theoris 2003
44
22
Le “Platform Wizard”
New Platform Wizard:
• permet de sélectionner
•
•
•
une configuration de
base d’OS pour votre
plate-forme
Selection de quelques
composants de départ
Sélection d’un BSP
préconfiguré
Modifie l’environnement
avec les fichiers qui
supportent la
configuration choisie
45
Platform Builder 4.1 © Theoris 2003
BSPs disponibles
Platform Builder 4.1 © Theoris 2003
Un BSP représente l’OAL et
les drivers de base qui
communiqueront
directement avec une plateforme hardware particulière
En prenant un BSP, on
spécifie une collection de
composants qui définiront un
niveau de fonctionnalité de
base pour une plate-forme
Pour intégrer son propre
BSP il faut utiliser le wizard
“BSP Wizard”
46
23
Configurations
Selection d’une
configuration de base.
Choix d’une des
configurations de base
fournies avec l’IDE comme
point de départ pour la
nouvelle cible.
Un nom unique est
nécessaire pour identifier la
plate-forme et
l’emplacement des fichiers
associés.
Le wizard va créer une
arborescence à l’endroit
indiqué.
47
Platform Builder 4.1 © Theoris 2003
Variantes de configuration
Platform Builder 4.1 © Theoris 2003
Les variantes de
configuration déterminent
les composants de base
qui seront inclus par
défaut.
48
24
Applications et média
Dépend de la configuration
de base choisie
Les commosants
sélectionnables dépendent
directement de la variante
de configuration choisie
Choix des applications et
média disponibles sur la
cible
49
Platform Builder 4.1 © Theoris 2003
Réseau et communications
Platform Builder 4.1 © Theoris 2003
Dépend de la configuration
de base choisie
Les commosants
sélectionnables dépendent
directement de la variante
de configuration choisie
Choix des applications et
resources réseau et de
communications
disponibles sur la cible.
50
25
Fin
Contient des liens vers
des rubriques d’aide
spécifiques en rapport
avec les étapes suivantes
du développement
Platform Builder génère
alors l’environnement de
développement pour la
nouvelle plate-forme
51
Platform Builder 4.1 © Theoris 2003
Construction de l’image
Composants
Moniteur
Gestion
Etapes
Le
de l’IDE
d’état (Status Monitor)
des “Features”
de la construction de l’OS
menu “Build”
“Build
Complete”
Platform Builder 4.1 © Theoris 2003
52
26
Les composants de l’IDE
Le workspace PB
• Platform
• Project
FeatureView
ParameterView
Le Catalogue
L’éditeur de texte
La fenêtre Output
Les “Platform
Settings”
53
Platform Builder 4.1 © Theoris 2003
Le moniteur d’état (Status Monitor)
Platform Builder 4.1 © Theoris 2003
Donne une visibilité sur
l’état des outils en cours
d’utilisation
Build en cours ou non
Connexion du debuger
54
27
Le Catalogue
Base des composants
• Souche PB-4.1
• composant ajoutés
Quatre Catégories :
• BSPs
• Core OS
• Devive Drivers
• Platform Manager
55
Platform Builder 4.1 © Theoris 2003
Les “Features” du projet
Donne la liste des “features”
sélectionnées:
• Catégories du catalogue
• Chemins des sources
• Accès aux sources
Settings Pour chaque “Feature”
• Build & Inclusion
• Build sans inclusion
• Pas de Build
Platform Builder 4.1 © Theoris 2003
56
28
Les “Project Settings”
Options de construction pour chaque “Feature” du projet
57
Platform Builder 4.1 © Theoris 2003
Les “Paramètres” du projet
Donne la liste des fichiers de
paramétrage du projet
Définition du contenu et de la
structure de :
•
•
•
•
Noyau (BIB)
FileSystem (DAT)
Build-in Database (DB)
Registry (REG)
CESYSGEN.bat :
• Positionnement de l’ensemble des
•
Platform Builder 4.1 © Theoris 2003
variables d’environnement
exploitées dans la suite du
processus de build
Image de la vue “Features”
58
29
Construction de Windows CE
NK.bin
File System
.C
EXE
EXE
LIB
EXE
.H
DLL
DLL
OBJ
DLL
DLL
DLL
EXE
EXE
EXE
DLL
DLL
DLL
DLL
DEF
DEF
Makefile
DEF
Registry
Database
Arborescence PB
BUILD
SYSGEN
RELDIR
MAKEIMG
Platform Builder 4.1 © Theoris 2003
59
Etapes de construction de l’ OS
Sources
& binaires
De l’OS
Pilotes
De la
cible
Données de
configuration
1
2
SYSGEN
BUILD
NK.bin
3
4
BUILDREL
MAKEIMG
Platform Builder
autres
Platform Builder 4.1 © Theoris 2003
60
30
Le menu “Build”
Sysgen, build
Sysgen, build, reldir,
makeimg
Makeimg
61
Platform Builder 4.1 © Theoris 2003
Build Complete
La fenêtre d’Output :
• Le nom de la plate-forme
• Nombre d’erreur
• Les warnings émis lors du
build.
Platform Builder 4.1 © Theoris 2003
Les résultats
• WINCEROOT/build.log
62
31
Transfert de l’image
Support
de masse amovible
• Compact Flash, etc…
Utilisation
d’un autre OS
• DOS avec Ethernet (x86 uniquement)
• CE lui même ! …
Téléchargement
☺
• Utilitaire CESH sur port parallèle
• Remote Connection + sboot ou eboot
63
Platform Builder 4.1 © Theoris 2003
Remote Connection
Paramétrage
de la cible
Paramétrage
des “Remote Services”
Paramètres
Utilisation
Ethernet
du BOOTME
Téléchargement
Dialogue
Platform Builder 4.1 © Theoris 2003
de l’image sur la cible
avec la cible
64
32
Paramétrage des “Remote Services”
Le menu “Target”
permet de gérer les
services tournant sur
la cible
• Download
• Kernel Transport
On peut choisir le
comportement de
PB dans les
“Settings”
65
Platform Builder 4.1 © Theoris 2003
Le paramétrage Ethernet
Platform Builder 4.1 © Theoris 2003
Ajout d’une nouvelle cible
dans la liste des cibles
disponibles
On peut déduire le nom
depuis l’adresse MAC de
la cible.
66
33
Utilisation du BOOTME
BOOTME !!
Id= CEPC24883
RS232
eboot.bin
Remote Services
Ethernet
Téléchargement en RAM
Lancement
Debug, etc…
NK.bin
CE
67
Platform Builder 4.1 © Theoris 2003
Utilisation du BOOTME (suite)
Platform Builder 4.1 © Theoris 2003
Lorsque les services de
téléchargement via ethernet sont
lancés, le premier paquet envoyé est
le “BOOTME”
La cible doit se trouver sur le même
sous-réseau que la station de travail
Platform Builder sur la station de
travail peut alors détecter le
“message” BOOTME
Après détection, la cible est ajoutée à
la liste des cibles disponibles
On peut maintenant télécharger une
image Windows CE sur la cible via le
réseau
68
34
Téléchargement de l’image
Dans le menu “Target”,
utiliser l’option Download
/ Initialize.
Rebooter la cible CE
Le processus de
téléchargement débute et
prend environ 10 à 15
secondes
69
Platform Builder 4.1 © Theoris 2003
Contrôle de l’image : CESH
Interpréteur de
commandes CESH :
•
•
•
•
Platform Builder 4.1 © Theoris 2003
Process info
Memory info
Run/start appli.
etc…
70
35
Mais aussi: les “Remote Tools”
71
Platform Builder 4.1 © Theoris 2003
Utilité d’un SDK
Platform Builder
SDK
Embedded Studio
Librairies
Configuration
de l’OS
Librairies
Runtime
Entêtes (.h)
Aide
Fichiers runtime
OAL
Pilotes de
Périphériques
Platform Builder 4.1 © Theoris 2003
Extension
Plateforme
Applications
DLLs
Composants
72
36
Le processus d’export
Platform > Configure SDK
Puis… Build SDK
•
•
Fichier MSI
Arborescence
Platform Builder 4.1 © Theoris 2003
73
Windows CE.NET
3 - Fonctionnalités de Windows CE.net
Platform Builder 4.1 © Theoris 2003
74
37
Plan du Chapitre 3
Architecture de l’OS
Composants de base de Windows CE
Configurations de base Windows CE .NET
Composants “évolués” de Windows CE.net
•
•
•
•
•
Réseau et communications
Communication Temps Réel (RTC)
Support et Architecture Multimedia
Eléments et Architecture Sécurité
Internationalisation
Support des applications
75
Platform Builder 4.1 © Theoris 2003
Architecture générale
Applications Windows CE
Shells
Internet Explorer
Connexions distantes
APIs Communications
(Winsock, RAS,TAPI, réseau)
APIs Microsoft
(Win32, COM, MFC, ATL)
Noyau
GWES
OAL
Device
manager
Filesystem
Modules de
Communication
Pilotes
Matériel
Platform Builder 4.1 © Theoris 2003
76
38
Les CPU supportées
Famille de
procésseur
CPU
SDB
Nom du BSP
ARM
Intel SA1110
Intel SA111x
Assabet SDB
SA11X0BD
ARM920
ARMINTEGRATOR
ARM1020
ARM Integrator
AP SDB
Intel Xscale
Intel Lubbock SDB
TBD
NEC Vr4122
NEC DDB-Vr4122
Eagle SDB
EAGLE
NEC Vr5432
NEC DDB-Vrc5476
Boston SDB
DDB5476
SH4-7750
Hitachi SH4
Aspen SDB
ASPEN
SH3-7729
Hitachi SH3
Keywest SDB
KEYWEST
P5/P4/PIII/PII/
CelK6x/Athlon
CEPC
CEPC
NS Geode
National Geode
Reference Platform
GEODE
MIPS
SHx
x86
Platform Builder 4.1 © Theoris 2003
77
L’“OEM Adaptation Layer” (OAL)
Couche entre le noyau et le hardware
Ensemble de fonctions se rapportant au démarrage
du système, à la gestion des interruptions, de
l’alimentation, la mesure de performance, le timer, et
l’horloge
Inclus dans les BSPs fournis
Ecrit par les OEMs pour adapter windows CE à leur
propre plateforme
Linké avec le code fourni par Microsoft pour
construire le noyau
Platform Builder 4.1 © Theoris 2003
78
39
Le module “Noyau” (Kernel Module)
Portable sur les différents processeurs supportés
• Le Noyau est portable dans la mesure ou la plupart de son code est écrit
en C
NK.EXE, COREDLL.DLL
• NK.EXE contient le code du Kernel et Coredll.dll est la librairie
dynamique du noyau de l’OS
Sauvegarde des resources Système
• CE loader est conçu pour sauvegarder les resources système en
chargeant les pages applicatives comme et quand c’est nécessaire, en
ne conservant qu’une seule copie physique d’une DLL
Paging “à la demande”
• Chargement les pages mémoires virtuelles uniquement lorsque c’est
nécessaire
Regions multiples dites “execute in place”
• Autorise les applications à s’éxécuter directement en ROM
Platform Builder 4.1 © Theoris 2003
79
Le module “Device Driver”
Device driver
• Lie un OS et une plateforme
Les pilotes “Built-in” et les pilotes “installables”
• Les pilotes Built-in sont installés par le fabriquant de la plate-forme
• Les pilotes “installables” concernent les périphériques tiers qu’un
utilisateur final peut connecter à une plate-forme CE
Les pilotes natifs (Native Drivers) et les pilotes “flux de caractères”
(Stream Drivers)
• Tous les pilotes gérés par GWES sont dit “natifs”
• Le Device manager charge les pilotes “flux de charactères” au
démarrage du sytème si ces pilotes sont inscrits dans le registre
Les pilotes Monolithiques et les pilotes en “couches”
• Les pilotes monolithiques implémentent leur interface directement en
fonction des actions de l’appareil qu’ils contrôlent
• Les pilotes en couche partagent leur implementation en 2
Platform Builder 4.1 © Theoris 2003
80
40
Le module GWES
Graphiques, fenêtrage, gestion d’évènements
• Sortie Graphique : écran et imprimante
• Entrées : Clavier, stylet, et souris
• Gestion des fenêtres : routage d’évènements
Le GDI (Graphic Device Interface)
• C’est le sous-système de “dessin” du GWES
• Controle du texte et des graphiques
• Utilise un “device context” pour stocker les attributs
graphiques d’une cible particulière
81
Platform Builder 4.1 © Theoris 2003
Le module Filesys
Le Module Filesys
• Implémente l’object store
Systèmes de fichier
Base de registre
Base de données
• Remplace le disque dur sur un équipement
embarqué
• Se trouve en ROM, RAM, ou les deux
• Taille maximale de 256 Mo
Platform Builder 4.1 © Theoris 2003
82
41
Le module Filesys (suite)
Storage manager
• Se charge des éléments de stockage externes tels que les
systèmes de fichier et les drivers par blocs (block drivers)
Systèmes de fichier “installables”
• Peut fournir l’accès à un lecteur de disquette, un disque dur, un
support Flash ou toute autre forme de stockage externe
Le mécanisme de “File-shadowing”
• Permet à un fichier d’être stocké à la fois en RAM et en ROM.
Différences avec les autres systèmes de fichier Windows
• Pas d’assignation de lettre
• Pas de concept de “current directory”
• Pas de support pour les entrées/sorties asynchrones
• Tous les fichiers stockés en RAM sont automatiquement
compressés
Platform Builder 4.1 © Theoris 2003
83
Le module Filesys (suite)
La base de registre
• Fournit un “dépôt” commun pour les paramètres système, les
données applicatives et les préférences utilisateur
• Se trouve en RAM, et sinon, peut être chargée depuis un support
persistant ou reconstruite à partitr de la ROM
• Fonctions “registre” spécifiques à Windows CE
Base de donnée
• Fournit un système de gestion de base donnée léger
• Accessible via un nouvel ensemble de fonctions de l’API WIN32
propres à Windows CE
• Données stockées sous un format “flat”
• Accessible aux objets “ActiveX Data Objects” pour Windows CE
(ADOCE)
• Supporte différents volumes ou systèmes de fichiers installables
Platform Builder 4.1 © Theoris 2003
84
42
OS temps réel
Temps de réponse aux interruptions borné
Précision de timer configurable (1 ms par défaut)
Le tick timer du système est indépendant du quantum
de temps
Partage d’interruptions
Héritage de priorité
Mémoire virtuelle protégée
Objets de synchronisation
Platform Builder 4.1 © Theoris 2003
85
Composants de gestion d’alimentation
Les éléments de gestion d’alimentation répondent aux appels
systèmes pour la mise en veille ou l’extinction
Les niveaux d’alimentation : DO à D4
• D0 – Full on: alimentation et fonctionnalités complètes
• D1 – Low On: functionnalités légèrement diminuées, moins d’
alimentaiton et/ou de performances
• D2 – Standby: Alimentation partielle avec réveil automatique
• D3 – Sleep: Alimentation partielle avec réveil effectué par le
device
• D4 – Off: Eteint
Le seul niveau que toutes les cibles doivent supporter est D0
Platform Builder 4.1 © Theoris 2003
86
43
Configurations de base
PDA ou cible mobile portable (“handheld device”)
Cell phone/smart phone
Web Pad
Internet Appliance
Media Appliance
Digital imaging device
Variantes avec ou sans applications, comme WordPad.
Résolution nominale 160x220.
Interface “Touch-screen” et display en 640x480 ou plus.
Basé sur un navigateur avec un écran et un clavier.
Musique, video, et autres support multimédia
Camera, projecteur, et imprimante
Platform Builder 4.1 © Theoris 2003
87
Configurations de base (suite)
Set-top box
Residential Gateway
Industrial automation device
Retail Point-of-Sale device
Windows thin client
Connection à une TV pour l’affichage de données Internet ou
multimédia
Connection à l’Internet et partage de cette connexion avec un
réseau local câblé ou non
Variantes d’IHMs et de PLCs (Programmable Logic Controller)
Kiosks Self-service, terminaux electroniques de paiement
automatique, terminaux “points de vente”
Terminal de connexion à distanceavec un shell réduit et RDP
Platform Builder 4.1 © Theoris 2003
88
44
Configurations de base (suite)
Tiny Kernel
• Plus petite image fonctionnelle Windows CE
• Point de départ pour les cibles sans affichage les
plus compactes
Custom Device
• La configuration la plus “personnalisable”
• Permet de choisir parmis tous les éléments
disponibles de l’OS
• Aussi une variante des cibles sans affichage
89
Platform Builder 4.1 © Theoris 2003
Composants “évolués” de CE .NET
Réseau
et communications
Communication
temps –réel
Multimedia
Sécurité
Internationalisation
Platform Builder 4.1 © Theoris 2003
90
45
Réseau et Communications
Architecture du réseau et des communications
Support pour plate-formes “sans-fil”
COM (Component Object Model)
Composants réseau
Composants réseau supplémentaires
Scénarios réseau
91
Platform Builder 4.1 © Theoris 2003
Architecture du réseau et des
communications
Applications
Web
Server
TAPI
RAS
Unimodem
Série
Port série
Platform Builder 4.1 © Theoris 2003
MSMQ
COM
SNMP
IP Helper
WNet
WinInet
Winsock
Piles de Protocoles (TCP/IP, IrDA)
PPP
NDIS (LAN, WAN, TR, IrDA)
Pilotes réseau
Port IR
FIR H/W
Interface réseau
92
46
Platform Builder 4.1 © Theoris 2003
93
Support plate-forme “sans-fil”
802.11 configuration zéro et 802.1x
• Permet la mobilité avec un minimum de configuration et de logon
utilisant nom d’utilisateur et mot de passe et autres certifications
Bluetooth
• Supporte la numérotation, l’accès WLAN et l’”object exchange”
NDIS 5.1
• Amélioration Wireless, état batterie
MediaSense
• Connexion/déconnexion, navigation entre les états “hors de” et “à
portée”
Platform Builder 4.1 © Theoris 2003
94
47
COM (Component Object Model)
COM est un système orienté objet indépendant de la plateforme
OEMs peuvent choisir parmis différents types de run-time
• Minimal COM (MCOM) : API de base
• COM : implémentation plus complète de COM et OLE
automation
• COM Storage (COM_STG) : implémentation plus
complète de COM avec des fonctionnalités de stockage
structuré
• DCOM : tout COM distribué
Support du Marshalling
Platform Builder 4.1 © Theoris 2003
95
Composants réseau supplémentaires
Dynamic Host Configuration Protocol (DHCP)
Internet Connection Sharing (ICS
Virtual Private Networking (VPN)
Windows Sockets 2 (Winsock)
Message Queuing (MSMQ)
Object Exchange (OBEX)
Infrared Data Association IrDA
IEEE 1394 (Firewire)
MediaSense
Media Access Control (MAC) Bridging
Platform Builder 4.1 © Theoris 2003
96
48
Scénarios de mise en réseau
Personal Area Networking (maison, bureau)
Local Area Networking (bureau, usine)
Wireless LAN (usine, extérieur)
Wide Area Networking (maison, hôtel)
PDA, Internet Appliance, Networking Printer
Composants : Bluetooth, IrDA, UPnP
Thin Client, Enterprise Web Pad, Industrial Automation
Composants : Ethernet, DCOM
Cell Phone, PDA, Web Pad
Composants : Ethernet, Zero Configuration 802.11/802.1x
PDA, Internet Appliance, Web Pad, Residential Gateway
Composants : TAPI, RAS, PPP, Unimodem, VPN, PPTP
97
Platform Builder 4.1 © Theoris 2003
Support RTC
Communication audio temps-réel (VoIP)
• Basé sur SIP (Session Initiation Protocol)
• Entre appareils IP – point-à-point ou via un serveur
• A travers des portails vers des “PSTN phones”
Messagerie instantanée (Instant Messaging)
Présence
• Contacts
• Observateurs (Watchers)
Platform Builder 4.1 © Theoris 2003
98
49
Architecture RTC
User App
Instant
Messenger
RTC API
SIP RTP
PPP
Serial Driver
PINT
TCP/IP
FTP
HTTP
NDIS
Hardware
99
Platform Builder 4.1 © Theoris 2003
Scénarios RTC
Combinaisons connectives
• Cible CE vers cible CE ou XP
• Cible CE vers “PSTN phone”
• “PSTN Phone” sous CE vers cible CE ou XP
Prérequis applicatifs
• Messagerie instantanée sur un réseau
CE à CE ou CE à XP, pas de serveur SIP
nécessaire
• Surveillance de présenced’un contact ou
information de présence
Cible CE sur un réseau avec serveur SIP
Platform Builder 4.1 © Theoris 2003
100
50
Support multimédia
DirectDraw
Direct3D
DirectDVD
DirectMusic 7
DirectShow 6.1
DirectSound® 6.1
Legacy Video Playback
MIDI Playback
MP3 Playback
MPEG-1 Video Playback
Digital Rights Management (DRM)
Platform Builder 4.1 © Theoris 2003
101
Architecture multimédia
Platform Builder 4.1 © Theoris 2003
102
51
Scénarios multimédia
Audio ou vidéo en “streaming”, en “live” ou préenregistré
localement ou à distance sur des cibles mobiles ou fixes
Applications possibles
• Appareil de média numérique
• Web Pads et portails Internet
• Set-top boxes
• Equipements de telecommunications
• Applications médicales ou de contrôle industriel
• Formation et éducation
Platform Builder 4.1 © Theoris 2003
103
composants de sécurité
Environnement sûr
Applications avec licences
CryptoAPI
Registre Protégé
Mots de passe
Stockage protégé
Modèle de sécurité LDAP
Couche Sockets sécurisées
PPTP
PC/SC
Système de fichier sécurisé
Sécurité DCOM
Sécurité 802.11
Platform Builder 4.1 © Theoris 2003
104
52
Architecture sécurité SSPI
SSPI – Security Support
Provider Interface
Protocole Kerberos
Protocole NTLM
Platform Builder 4.1 © Theoris 2003
105
Scénarios “sécurité”
Accès contrôlé à la cible
Protection contre les applications non-autorisées
Stockage des données sécurisé
Connexions réseau et Internet sécurisées
Platform Builder 4.1 © Theoris 2003
106
53
Internationalisation
Options de localisation :
• Localisation contre
Internationalisation
• Changement de la langue de
votre cible
• Ajout de localisation
• Selection de codepages
Platform Builder 4.1 © Theoris 2003
107
Internationalisation (suite)
Création d’applications internationales :
• Build pour une localisation différente
• Fichiers source partagés
• Compréhension de l’Unicode et du NLS
Platform Builder 4.1 © Theoris 2003
108
54
Internationalisation (suite)
Pratique courante pour le développement d’application internationale :
• Utilisation de quelques “locales” pour le développement initial et
pour les tests
• Localisation des resources : stricte ou non-stricte
Conseils de traduction
• Eviter la concaténation dynamique de caractères
• Eviter les noms “en dur” dans le code
• Eviter de mettre du texte dans les images et icônes
Conventions internationales
• Les “locales” peuvent avoir des conventions différentes pour
exprimer une information
• Les “locales” peuvent utiliser des standards de clavier différents
Platform Builder 4.1 © Theoris 2003
109
Windows CE.NET
4 - Support des applications natives
Platform Builder 4.1 © Theoris 2003
110
55
Plan du chapitre 4
Gestion de la mémoire
Gestion des interruptions
Ordonnanceur Windows CE
Processus et Threads
Synchronisation
Fichiers
MFC
MSMQ
TAPI & Serial
Winsock & WinInet
Platform Builder 4.1 © Theoris 2003
111
Gestion de la mémoire
Séparée en deux espaces distincts
• Object Store : partie de RAM dédiée au système
les fichiers (multi-volume FAT file system),
la base de registres,
la base de données (spécificité de l’API Win32 de Windows CE)
• Mémoire programme :
1 seul espace d’adressage de 4 Go (protection par attribut de
page),
32 Mo d ’espace d’adressage virtuel pour chaque process,
1 Go de mémoire partagée entre process.
Platform Builder 4.1 © Theoris 2003
112
56
Mémoire virtuelle 4 Go
0xFFFF FFFF
Espace Noyau
0xC000 0000
Uncached
Adresses Virtuelles
2 Go
“kernel”
0xA000 0000
Mappées Physique
Cached
0x8000 0000
Mémoire
Partagée
0x4200 0000
0x4000 0000
Espace
2 Go
“user”
Applications
0x0000 0000
113
Platform Builder 4.1 © Theoris 2003
Espace Noyau 1 Go
0xFFFF FFFF
Mémoire virtuelle
Noyau
0xE000 0000
Addresses Virtuelles
Statiques
Uncached
NK.EXE RAM DLLs
Réservé
Adresses Virtuelles
Mappées Physique
Platform Builder 4.1 © Theoris 2003
1 Go
0xC400 0000
0xC200 0000
0xC000 0000
Uncached
0xA000 0000
Cached
1 Go
0x8000 0000
114
57
Espace Applications 1Go+32Mo
0x8000 0000
Mémoire
Partagée
0x4200 0000
Slot 32
0x4000 0000
1Go
1 Go
32 Mo de mémoire
virtuelle par slot
+32Mo
Slot 2 - Filesys
Slot 1 – ROM DLLs
Slot du process
courant
Process Slot 0
0x0000 0000
115
Platform Builder 4.1 © Theoris 2003
Mémoire virtuelle processus 32Mo
ROM DLL r/w
Data only
Limite inférieure
des DLL en ROM
ROM DLL
RAM DLL
32 Mo
Pile/Heap
Processus (EXE)
64 Ko réservés
Platform Builder 4.1 © Theoris 2003
116
58
Gestion des interruptions
Interruptions prises en compte par le noyau
•
•
•
•
Gestion des interruptions imbriquées
Appel d’une routine utilisateur définie dans l’OAL (ISR)
Exécution en mode Kernel (pas d’appel Win32 disponible)
La fin de l’ISR notifie l’interruption à un thread de traitement
Notification de l’interruption vers un thread
• IST réveillé par un événement Win32 standard (fonction du code
de retour de l’ISR – Bijection nécessaire)
• Réalise les traitements associés à l’interruption
• Possibilité d’organiser les IST en fonction de la priorité des IRQ
117
Platform Builder 4.1 © Theoris 2003
Interruptions (suite)
Thread
Traitement
IST
I-ISR
ISR ISR
OAL
ISR
ISR
ID
Platform Builder 4.1 © Theoris 2003
Toutes IRQ autorisées
Sauf ID
Tout
autorisé
HW
IRQ + hautes
autorisées
Autorise ID
Kernel
Set Event
ISH
118
59
Ordonnanceur
Préemptif à priorité fixe
256 niveaux de priorité temps-réels
Applications et drivers partagent les mêmes priorités
• pas de DPC ni APC, ni classe ni niveaux système
A partir de la version 3.0 :
• 256 niveaux et quantum de temps réglable
• Le système s’insère sur quelques niveaux
119
Platform Builder 4.1 © Theoris 2003
Process et Thread
32 process au maximum
• Fortement dépendant de l’architecture du système
=> Non évolutif a priori
• En version complète, cinq à huit process pour le
système
Nombre de threads théoriquement illimité
• Limitée physiquement par la taille de la RAM
disponible
• En version complète, une vingtaine de threads
système
Platform Builder 4.1 © Theoris 2003
120
60
Synchronisation
Objets de synchronisation
• Section critique, événement, mutex, sémaphore
• Gestion de l’inversion de priorité et attente par priorité
• Attente de type FIFO
• Synchronisation sur handle de process ou de thread
Communications inter-process
• Nommage des objets de synchronisation
• Mémoire partagée (fichier mappé)
• Microsoft Message Queue
Platform Builder 4.1 © Theoris 2003
121
Fichiers avec Win32 CE
API identique à celle de Windows NT ou Windows 98
• CreateFile, ReadFile, WriteFile, CloseHandle, …
Nom de fichier UNICODE & UNC (Universal Naming
Convention)
• \\DiskName\DirectoryName\FileName
Pas de support de la run time C standard
• fopen, fread, fwrite, fprintf, …ne sont plus supportés
Pas de support des accès en mode « overlapped »
Platform Builder 4.1 © Theoris 2003
122
61
Spécificités Win32 CE
Base de données
• base de données dans le built-in file system
(transactions)
• API spécifique à Windows CE
CeCreateDatabase, CeOpenDatabase,
CeSeekDatabase, …
• possibilité créer/manipuler une base de données
depuis un installable file system
CeMountDBVol, CeUnmountDBVol,
CeEnumDBVolumes
Platform Builder 4.1 © Theoris 2003
123
Microsoft Fundation Classes
Modèle document / vue
• SDI (Single Document Interface) et Dialog Based
• MDI (Multiple Document Interface) non supporté
Grande compatibilité avec l'existant sur les autres
systèmes Windows
• wizards identiques (même environnement de
développement)
• objets identiques (même structure de classes et
d’héritage)
Utilisable à partir de Embedded Visual Studio
Platform Builder 4.1 © Theoris 2003
124
62
MSMQ
Microsoft Message Queue
• Communiquer avec une autre application
Par messages (et non appels fonctionnels comme avec
COM/DCOM)
En local ou via le réseau
• Communiquer avec un autre système via le réseau
Mémorisation des messages (cas ou le correspondant est
offline)
Synchronisation lors de la connexion du correspondant
• Communiquer avec d’autres OS
Windows CE
Windows NT 4
Windows 2000/XP
125
Platform Builder 4.1 © Theoris 2003
TAPI & Serial
TAPI (Telephony API)
• TSPI (TAPI Service Provider Interface) UNIMODEM
uniquement
• gestion des appels entrants depuis la 3.00
Ligne série
• interface utilisateur de type flux de caractères
• pas de gestion de l’asynchronisme (overlapped)
• hFile = CreateFile(TEXT("COM1:"), …)
ReadFile(hFile, …), WriteFile(hFile, …),
DeviceIOControl(…)
• gestion de WaitCommEvent, SetCommMask,
GetCommMask.
Platform Builder 4.1 © Theoris 2003
126
63
Winsock
API de type Berkeley sockets
• supporte les modes bloquant et non bloquant
• Attention :
au format des chaines de caractères : ASCII vs
UNICODE
au format des entiers et réels : big endian vs
little endian
Interface socket disponible pour TCP-IP et IrDA
Pas de support de l'asynchrone (à contrario de
Winsock 2.0)
127
Platform Builder 4.1 © Theoris 2003
WinInet
API d’accès aux fonctionnalités « Internet »
• Initialisation : InternetOpen
• Connection à une machine référencée par son
nom réseau ou son adresse IP : InternetConnect
• fonctions de connection HTTP et FTP
• dll fournies avec Pocket Internet Explorer et
IESample
Une puissance impressionnante des fonctions : on
peut écrire un « client FTP » en trois lignes de C...
(les deux précédentes + FtpGetFile pour
récupérer un fichier !!!)
Platform Builder 4.1 © Theoris 2003
128
64
Windows CE.NET
5 - Développement de système Windows CE
129
Platform Builder 4.1 © Theoris 2003
Plan du chapitre 5
Arborescence des fichiers de Platform Builder
Le processus de build
Utiliser l’IDE (Integrated Development Environment)
Modifier les fichiers de configuration
Créer un composant
Modifier les fichiers CEC avec l’éditeur
Ajouter un BSP
Wizard d’exportation
Platform Builder 4.1 © Theoris 2003
130
65
Arborescence de Platform Builder
microsoft
OEM
WINCE410
utilisateur
PLATFORM
Fichiers dépendants de la Plateforme
Nouvelle Plateforme
ATLAS
PUBLIC
Fichiers non-dépendants de la Plateforme
COMMON
Souche d’installation PB
SDK
Others
Projet
Nouveau Projet
Private
Platform Builder 4.1 © Theoris 2003
131
Arborescence de Platform Builder
Le
répertoire “Platform”
Le
répertoire “Public”
Le
répertoire “SDK”
Le
répertoire “Others”
Platform Builder 4.1 © Theoris 2003
132
66
Le répertoire “Platform”
Contient les fichiers spécifiques aux BSP
Emplacement : %_WINCEROOT%\Platform
Sous-répertoires :
• Chaque sous-répertoire représente une adaptation à
une plate-forme (CEPC, GEODE, Emulateur …)
• Chaque répertoire contient un fichier “dirs” et un ou
plusieurs fichier “batch” pour les paramètres propres
au BSP
Les fichies propres à une plate-forme personnalisée
doivent donc être placés dans ce répertoire
Platform Builder 4.1 © Theoris 2003
133
Le répertoire “Public”
Contient un ensemble de composants et de
configurations indépendants du type de plate-forme
Emplacement : %_WINCEROOT%\Public
Sous-répertoires :
• Modules et composants : Common, Wceshellfe,
Wceappsfe, IE, MSMQ
• Les répertoires des configurations de référence :
IABase, HLBase
• Les configurations personnalisées
Platform Builder 4.1 © Theoris 2003
134
67
Le répertoire “SDK”
Emplacement : %_WINCEROOT%\SDK
Contient une certain nombre d’outils
• Compilateurs
• Outils de développement
• Utilitaires variés
Platform Builder 4.1 © Theoris 2003
135
Le répertoire “Others”
Emplacement : %_WINCEROOT%\OTHERS
Contient les sous-répertoires :
• ATL
Fichiers d’entête,librairies et code source pour le déboguage
• DOTNET
Binaires spécifiques .NET et les fichiers du Compact Framework
• MFC
Fichiers d’entête,librairies et code source pour le déboguage
• SAMPLES
Applications exemples pour les MFC et ATL
• WCETK
Kit de test Windows CE (CETK)
Platform Builder 4.1 © Theoris 2003
136
68
Le processus de Build – SYSGEN+BUILD
COMMON
DATASYNC
DCOM
DIRECTX
IE
MSMQ
RDP
SCRIPT
SERVERS
WCEAPPSFE
WCESHELLFE
PUBLIC
PLATFORM
Plat.
Drivers
Files
GWE
Etape 1. Génération
du système
Projet
Etape 2. Compilation
des composants
wince410
Plat.
cesysgen
ddk
oak
sdk
137
Platform Builder 4.1 © Theoris 2003
Le processus de Build - RELDIR
PLATFORM
PUBLIC
Plat.
Drivers
Files
GWE
Projet
RelDir
Debug
Etape 3. Copie dans le
répertoire Release
wince410
Plat.
cesysgen
ddk
oak
sdk
Platform Builder 4.1 © Theoris 2003
138
69
Le processus de Build - MAKEIMG
PUBLIC
Projet
RelDir
Debug
Etape 4. Contruction
de l’image
.dll
.exe
.bib
.reg
.dat
Autres…
NK.bin
139
Platform Builder 4.1 © Theoris 2003
Génération du système
Fichiers
d’entêtes et de
code source
Librairies
système
Définitions de
modules (.def)
SYSGEN.BAT
Fichiers
d’entête
système
Librairies
linkées
Fichiers .def
spécifiques
Cesysgen.bat
Platform Builder 4.1 © Theoris 2003
140
70
Compilation des composants
Compile le code source
• Utilisation des fichiers DIRS pour déterminer les sous-répertoires à
•
•
compiler
Utilisation des fichiers SOURCES pour déterminer les fichiers à
compiler
Appel à NMAKE.EXE pour la compilation et l’édition de liens
Création de fichiers binaires dans le répertoire “target” pour
les éxécutables et les librairies dynamiques (.exe, .dll )
• Exemple : Target\x86\Debug
Création de fichiers binaires dans le répertoire “lib” pour les
librairies (.lib)
• Exemple : Lib\x86\Debug
Platform Builder 4.1 © Theoris 2003
141
Compilation des composants (suite)
Fichier DIRS
• Liste les sous-répertoires à compiler
• Les sous-répertoies peuvent eux-même contenir un
fichier DIRS
Exemple :
DIRS =\
Display \
Mouse \
Keyboard \
Ethernet
Platform Builder 4.1 © Theoris 2003
142
71
Compilation des composants (suite)
Fichier SOURCES
• Fourni les information nécessaires à buil.exe, comme le
type de binaire à compiler, l’emplacement des fichiers
d’entête, les fichiers à compiler
Exemple:
TARGETNAME = Kbdmouse
TARGETTYPE = DYNLINK
DLLENTRY
= DllMain
TARGETLIBS = \
$(_COMMONSDKROOT)\Lib\$(_CPUINDPATH)\Coredll.lib
INCLUDES
= $(_COMMONSDKROOT)\Inc
SOURCES
= \
ioport.cpp \
vgaports.cpp \
Platform Builder 4.1 © Theoris 2003
143
Crétation du répertoire “Release”
Copie de tous les fichiers dits “plate-forme”
Copie des binaires
Compile les projets Platform Builder Projects
(pbp) à la fin de cette étape
Platform Builder 4.1 © Theoris 2003
144
72
Construction de l’image
Fusion des fichiers contenus dans le répertoire “release” pour la
génération de l’image Windows CE
Processus :
1. Fusion des fichiers de configuration :
Tous les fichiers .bib dans CE.BIB
Tous les fichiers.reg dans REGINIT.INI
Tous les fichiers.dat dans INITOBJ.DAT
Tous les fichiers.db dans INITDB.INI
2. Compression de reginit.ini en un fichier binaire de type “registry”
(DEFAULT.FDF)
3. Remplacement des resources dans les fichiers .exe and .dll pour
l’adaptation à la langue de la cible
4. À l’aide de CE.BIB, combinaison des fichiers dans l’image Windows
CE (NK.BIN)
Platform Builder 4.1 © Theoris 2003
145
Les erreurs de compilation
Erreurs lors du “Sysgen”
• Fichiers manquants, configuration manquante, erreur de
compilation d’applications.
Erreurs lors de la compilation de composants
• Erreur de compilation ou d’édition de liens
Erreurs lors de la création du répertoire “release”
• Erreur de copie de fichier
Erreurs lors de la crétion de l’image
• Romimage.exe a échoué sur CE.BIB
• Romimage.exe a échoué sur reginit.ini
• Warning: Taille de l’image trop importante (16 Mo max conseillé)
Platform Builder 4.1 © Theoris 2003
146
73
Utilisation de l’ Integrated
Development Environment (IDE)
FeatureView
• Pilotes et composants de l’OS que l’on peut inclure dans
le noyau CE en construction
• Ajout et suppression des éléments concernés par le
SYSGEN
La fenêtre de dialogue “Resolve Features”
• Permet de modifier les associations faites dans les
groupes de composants ( ex: le groupe de pilotes
“display” ne supporte qu’un pilote à la fois et au moins un
dans le cas d’un cible avec affichage)
147
Platform Builder 4.1 © Theoris 2003
Utilisation de l’ Integrated
Development Environment (suite)
Platform Builder 4.1 © Theoris 2003
Compilation d’un
composant particulier:
• Utilisation de la
vue FeatureView
• Clique droit et
choix du menu
Build Selected
Components
Pour regénérer
entièrement l’image:
• Menu Build de
PB, sous-menu
Make Image
148
74
Les fichiers de configuration
Fichiers .BIB
Fichiers .REG
Fichiers .DAT
Fichiers .DB
149
Platform Builder 4.1 © Theoris 2003
Fichiers de configuration
Fichier
.bib (binary image builder)
• permettent de configurer l’image binaire de Windows CE
le mapping mémoire : section MEMORY
configuration de l’image : section CONFIG
les programmes et dll : section MODULES
les données (image, son, …) : section FILES
• 4 fichiers assemblés par Makeimg.exe :
config.bib
platform.bib
common.bib
project.bib
Platform Builder 4.1 © Theoris 2003
: mapping mémoire et configuration de l’image
: config. liée à la plate-forme
: config. liée aux modules et composants de CE
: config. liée au projet
150
75
Fichiers .BIB
MEMORY : Mot clef indiquant la section
définissant le mapping mémoire
; Name Start
Size
Type
;------------------------------------------------------MEMORY
NK
80200000 00500000 RAMIMAGE
RAM
80700000 00800000 RAM
VIDEO 800A0000 00020000
RESERVED
;------------------------------------------------------CONFIG
AUTOSIZE=ON
COMPRESSION=ON
ROMOFFSET= 80000000
KERNELFIXUPS=ON
...
RAMIMAGE : mémoire RAM traité comme de la
ROM
RAM : mémoire RAM
ROM : mémoire ROM
RESERVED : zone mémoire réservé (non
utilisée par Windows CE)
CONFIG : Mot clef indiquant la section de
configuration de l’image binaire (cette section
n’est pas obligatoire)
AUTOSIZE : récupération automatique de la
place RAM inutilisée pour l’object store
COMPRESSION : compression des zones
mémoire modifiable (ON très vivement
conseillé)
ROMOFFSET : spécifie l’offset de l’image
KERNELFIXUPS : reloge les sections
modifiables du noyau
151
Platform Builder 4.1 © Theoris 2003
Fichiers .BIB (suite)
MODULES : Mot clef indiquant la section
listant les modules, applications et dll
inclus dans l’image binaire
; Nom
fichier original
mem type
;---------------------------------------------------------------------MODULES
process.exe $(_FLATRELEASEDIR)\appli.exe NK SH
lib.dll
$(_FLATRELEASEDIR)\lib.dll
NK SH
…
; Nom
fichier original
mem type
;---------------------------------------------------------------------FILES
img.bmp $(_FLATRELEASEDIR)\img.bmp
NK U
...
Type (attribut du fichier) :
- S : fichier système
- H : fichier caché
- R : fichier dont la partie ressource est
compressé
- C : fichier compressé dans son entier
FILES : Mot clef indiquant la section
listant les fichiers de données inclus
dans l’image binaire
Type (attribut du fichier) :
- S : fichier système
- H : fichier caché
- U : fichier non compressé
Platform Builder 4.1 © Theoris 2003
152
76
Fichiers .REG
Paramètres de registre par défaut
• COMMON.REG, IE.REG, MSMQ.REG,
WCEAPPS.REG, WCESHELL.REG: paramètres de
registre pour les modules Windows CE
• PLATFORM.REG: paramètres de registres propres à
la plate-forme, tels que les paramètres des pilotes
• PROJECT.REG: paramètres propres au projet
[HKEY_LOCAL_MACHINE\init]
“Launch10”=“shell.exe”
“Launch20”=“device.exe”
153
Platform Builder 4.1 © Theoris 2003
Fichiers .DAT
Définition de l’arborescence de l’image
• COMMON.DAT, IE.DAT, MSMQ.DAT,
WCEAPPS.DAT, WCESHELL.DAT
• PLATFORM.DAT
• PROJECT.DAT
Exemple:
Root:-Directory(“Program Files”)
Directory(“\Program Files”):-Directory(“My Projects”)
Root:-Directory(“My Documents”)
Directory(“\My Documents”):-File(“MyFile.doc”,“\
Windows\Myfile.doc”)
Platform Builder 4.1 © Theoris 2003
154
77
Fichiers .DB
Base de données par défaut
• COMMON.DB, WCEAPPS.DB, WCESHELL.DB
Ces fichiers .DB Concernent les modules Common,
Wceapps, Wceshell.
• PLATFORM.DB
Contient les données spécifiques à la plate-forme
• PROJECT.DB
Contient les données spécifiques au projet
155
Platform Builder 4.1 © Theoris 2003
La base de composants PB
Catalogue
Base PB
Platform Builder 4.1 © Theoris 2003
156
78
La gestion du catalogue
Arborescence « physique »
Vue « logique »
PLATFORM
ATLAS
Drivers
keybFR
Fichier CEC
Component Type
…
Group …
BuildMethods
….
Platform Builder 4.1 © Theoris 2003
157
Création d’un composant
CEC = Fichier texte contenant une liste de blocs décrivant
les composants à inclure au catalogue
4 types de blocs :
• CECInfo
•
•
•
Contient les informations sur l’entreprise et sur le fichier CEC luimême
ComponentType
Description de premier niveau. Par exemple, les pilotes doivent
être de type ComponentType
Implementation
Description d’une implémentation spécifique d’un
ComponentType
BuildMethod
Description de la methode de construction de l’implémentation
courante
Platform Builder 4.1 © Theoris 2003
158
79
Section CECInfo
Informations sur le fichier lui-même
• Utile pour la gestion de configuration de la base PB
Exemple:
CECInfo (
Name(keybmouse)
GUID({6563AD3D-E71C-11d4-B892-0050FC049781})
CECVersion(4.00)
Vendor("Microsoft")
Description("Keyboard and Mouse Features")
)
Platform Builder 4.1 © Theoris 2003
159
Section ComponentType
Informations d’associations pour le composant
Exemple:
ComponentType
(
Name( "Keyboard/Mouse" )
GUID( {6563AD41-E71C-11d4-B892-0050FC049781} )
Description( "Keyboard/Mouse Driver" )
Group( "\Drivers\Standard" )
RequiredCEModules( ANY, "keybd pointer" )
RequiredCEModules( ALL, "device" )
ExcludeWhenSet( ANY, "BSP_NOKEYBD" )
MaxResolvedImpsAllowed(1)
Implementations (…)
)
Platform Builder 4.1 © Theoris 2003
160
80
Section Implementation
Définition d’une implémentation pour le composant
Exemple:
Implementation
(
Name("PL050 KbdMouse Eng")
Description("US English Keyboard/Mouse Driver")
Vendor(“Microsoft”)
Date(02/17/01)
GUID( {20902417-9B08-4fa4-8E43-A7F49AE796D6} )
BSPPlatformDir( "ARMIntegrator" )
Variable(BSP_NOTOUCH, 1)
Variable(BSP_NOKEYBD, "")
BuildMethods(…)
)
Platform Builder 4.1 © Theoris 2003
161
Section Implementation (suite)
BIBInfo
• Spécifie une description de type BIB
• Ajout automatique dans l’image
• Propre à CE .NET
Platform Builder 4.1 © Theoris 2003
162
81
Section BuildMethod
Informations nécessaires à la construction du composant
Exemple:
BuildMethod(
Step( “BSP” )
GUID( {EE70A156-867F-4ba7-993F-2D04D98F47EF} )
InputFiles()
OutputFiles()
Action('#BUILD(SOURCES,
"$(_WINCEROOT)\others\ddtk30\testsrc\realtime")')
163
Platform Builder 4.1 © Theoris 2003
Section BuildMethod (suite)
Actions valides :
Action
CESYSGEN
BSP
Buildrel
Makeimg
#BUILD(DIR,…)
non
OUI
non
non
#BUILD(SOURCES)
non
OUI
non
non
#BUILD(MAK,…)
non
OUI
non
non
#CUSTOM(…,…)
non
OUI
OUI
non
#COPY(…,…)
OUI
non
OUI
non
#ENV(…,…)
non
OUI
non
OUI
# SRCCODE(…)
non
non
non
non
SRCCODE nécessite un “Build Selected Feature”
Platform Builder 4.1 © Theoris 2003
164
82
Section BuildMethod (suite)
Trois méthodes de construction:
• Contruction de projets définis par les fichiers DIRS ou SOURCES :
#BUILD(SOURCES,
“$(_WINCEROOT)\Platform\CEPC\Drivers\Pcmcia”)
#BUILD(DIRS,
”$(_WINCEROOT)\Platform\CEPC\Kernel”))
• Contruction de projets définis par un Makefile :
#BUILD(MAK,”$(_WINCEROOT)\Public\TMKConsole”, “TMK.mak”)
• Copie directe du module dans le $_FLATRELEASEDIR :
#COPY(“$(_TARGETPLATROOT)\Drivers\Mouse)”,
“$(_FLATRELEASEDIR)”)
Platform Builder 4.1 © Theoris 2003
165
Ajout d’un fichier CEC au catalogue
Platform Builder 4.1 © Theoris 2003
166
83
Editeur de fichiers CEC
Ouverture de l’éditeur
(CECEditor.exe)
Modification du fichier CEC
Creation d’un nouveau
fichier CEC (exemples
fournis)
167
Platform Builder 4.1 © Theoris 2003
Editeur de fichier CEC (suite)
Construction étape par étape :
build method
• Feature group Feature
Platform Builder 4.1 © Theoris 2003
Actions
168
84
L’échange de Composants
1.cec
Base PB1
2.cec
3.cec
compo1
compo2
compo3
Base PB2
Fichier
MSI
Installation
compo1
compo2 BSP.cec
compo3
169
Platform Builder 4.1 © Theoris 2003
Ajout d’un BSP
Qu’est-ce qu’un BSP?
• C’est l’implémentation des drivers pour un SDB
(standard development board)
• Contient des fichiers source et/ou binaires
• Contient un “OEM Adaptation Layer” (OAL)
Le “BSP Wizard”
• Guide durant le processus de création d’un BSP
Windows CE.NET
• Génère automatiquement un fichier CEC pour le BSP,
copie les fichiers au bon emplacement et importe un
nouveau fichier CEC dans le catalogue
Platform Builder 4.1 © Theoris 2003
170
85
Wizard d’exportation
Construit les éléments auto-extractibles à ajouter
au catalogue
Utilisé par les OEM pour mettre à disposition
leurs pilotes
Les étapes de collecte de composants et la
construction du fichier .MSI
1. Choix des composants à exporter.
2. Sélection des fichiers et répertoires à exporter.
3. Edition des informations des fichiers .msi et .cec
171
Platform Builder 4.1 © Theoris 2003
Wizard d’exportation (suite)
Platform Builder 4.1 © Theoris 2003
Choix de composants
dans le catalogue
Choix de répertoires
additionnels
172
86
Windows CE.NET
6 – Pilotes de périphériques Windows CE
173
Platform Builder 4.1 © Theoris 2003
Plan du chapitre 6
Familles de pilotes de périphériques
• Pilotes Natifs
• Pilotes Stream
Le “Device Manager”
La fonction d’activation de pilote
Enumération du Registre
Développement de pilote
Platform Builder 4.1 © Theoris 2003
174
87
Familles de pilotes
Pilotes « Natifs »
• Aussi appelés « Build-in Drivers»
• Linkés avec GWES (LIB) ou chargés au boot (DLL)
• Ne présentent pas une interface standard
• Dédiés à des périphériques actifs lors du boot
Pilotes « Installables »
• Aussi appelés « Stream Drivers »
• Chargés dynamiquement par DEVICE.EXE lors du boot ou
d’une activation
• Présentent une interface standard
• Se présentent sous la forme de DLL
Pilotes Hybrides
• Présentent une interface Stream & Build-in
175
Platform Builder 4.1 © Theoris 2003
Pilotes Windows CE
Exemples fournis dans PB:
• \Wince410\PUBLIC\Common\OAK\drivers
Pilotes BUILD-IN
GWES
Pilotes de BUS
USB HCD
PCMCIA host
NDIS
Platform Builder 4.1 © Theoris 2003
Pilotes de Clients
USB client
PCMCIA client
NDIS miniport
Pilotes STREAM
Périphériques
« Mode bloc »
Périphériques
« Mode flux »
176
88
Pilotes Natifs
Deux grands types dans les exemples fournis
• Pilotes en couche
Couche MDD Model Device
Couche PDD Platform Dependent
Re-utilisation de la couche MDD
• Pilotes Monolithiques
Plus efficaces
Usage des pilotes Natifs
• Inteface spécifique aves l’OS
• Réservés aux fabricants de cartes (OEM)
• Les intégrateurs (IHV) doivent favoriser le modèle
Installable (stream)
Platform Builder 4.1 © Theoris 2003
177
Exemples de pilotes Natifs
« Exemples » fournis avec PB 4.1
• Affichage
• Batterie
• Clavier
• Ecran Tactile
• LED de notification
Sources utilisable pour des périphériques de
même type
Platform Builder 4.1 © Theoris 2003
178
89
Un Pilote natif : KbdMs
Pilote de clavier-souris
• construction du pilote
sous forme d’une dll dans le processus de build à partir de 4
librairies statiques
– KbdMsCommon : threads d’entrée (clavier/souris)
– VKRMPSimple : remapping sur appui NUMLOCK
– VKCHEngUs : caractère UNICODE à retourner en fonction de la
touche VK et des touches spéciales enfoncées (Ctrl, Alt, Caps-lock)
– SCVKEngUs : code de touche VK à retourner en fonction du code
h/w reçu
• particularisation du pilote
générer sa propre dll dans le processus de build
gérer d’autres combinaisons de remapping (shift+ctrl ou alt+ctrl)
modifier les scan-codes du clavier (ex :correspondance
AZERTY/QWERTY)
modifier la registry pour charger le nouveau pilote (platform.reg ou
project.reg)
179
Platform Builder 4.1 © Theoris 2003
Pilotes Stream
Interface et fonctions communes à tous les
pilotes stream
Correspond à des périphériques qui sont des
« sources » ou des « puits » de données
Fonctions correspondant à l’API fichier
• ReadFile, WriteFile, DeviceIOControl …
Périphérique vu comme un fichier par
l ’application
Platform Builder 4.1 © Theoris 2003
180
90
Architecture Stream
Application
API Fichier
IOCTL Fichier
Système de Fichiers
Noyau
Device Manager
Pilote
Stream
Interruptions
OAL
Matériel
Platform Builder 4.1 © Theoris 2003
181
Fonctions d’un pilote Stream
Pour un pilote de nom « XXX » :
XXX_Init
XXX_Deinit
XXX_Open
XXX_Close
XXX_Read
XXX_Write
XXX_Seek
XXX_IOControl
XXX_PowerDown
XXX_PowerUp
XXX_PowerHandler
XXX_DllEntry
Platform Builder 4.1 © Theoris 2003
182
91
Interface de Pilote Stream
Généricité de l’interface du pilote Stream
• DllMain : point d'entrée de la dll
– fonction appelée automatiquement par le thread de DEVICE
qui charge la dll
– Attention!! Fonction appelée pour chaque création de thread
dans DEVICE (DLL_THREAD_ATTACH)
• hInstance = xxx_Init(registryPath)
– fonction d'initialisation d'une instance de pilote
– appelée par DEVICE au lancement de chaque instance d’un
pilote (COM1, COM2 …)
– registryPath : pointeur vers une chaîne de caractères
identifiant la clef de la registry concernant l'instance du pilote
(HKLM/Drivers/Active/num_chargement)
– hInstance : identifiant de l'instance initialisée (valeur au choix
du pilote)
Platform Builder 4.1 © Theoris 2003
183
Interface de Pilote Stream
Généricité de l’interface du pilote stream
• hOuverture = xxx_Open(hInstance, ...)
– demande une connexion à l'instance hInstance du périphérique
xxx
– appelée par le thread faisant un CreateFile dans le contexte du
process DEVICE.EXE
– hOuverture : identifiant de la connexion au pilote (spécifique du
pilote ET de l ’instance de l ’ouverture)
• xxx_Read(hOuverture, ...), xxx_Write(hOuverture, …)
– effectue une opération d'entrée sortie sur la connexion
hOuverture de l'instance hInstance du périphérique xxx
Platform Builder 4.1 © Theoris 2003
184
92
Enregistrement d’un Pilote Stream
Clés
dans la base de Registre
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\XXXDRV]
"Dll" = "driver.Dll"
"Prefix"= "XXX"
"Order"=dword:2
"Ioctl"=dword:4
"index"=dword:1
….
Platform Builder 4.1 © Theoris 2003
185
Le « Device Manager »
Processus DEVICE.exe
• Lancé par le Noyau ("Launch20"="Device.exe")
• Détecte les ajouts de périphériques et tente de charger les
pilotes associés
Interagit avec :
• le Noyau
• Le Registre
• les DLL des pilotes Stream
Fournit une API spécifique
• ActivateDeviceEx
• DeactivateDeviceEx
Platform Builder 4.1 © Theoris 2003
186
93
Lancement de Pilote Stream
ActivateDeviceEx
DEVICE.exe
driver.dll
REGISTRY
HKLM/Drivers/Builtin/Driver1
Dll="driver.dll"
Prefix="DRV"
Order=0
HKLM/Drivers/Builtin/Driver2
LoadLibrary(driver.dll)
GetProcAddress ( x 9 )
DllMain()
Initialisation du driver
DRV_Init()
Initialisation du driver
...
Dll="driver.dll"
Prefix="DRV"
Order=1
187
Platform Builder 4.1 © Theoris 2003
Enumérateur de Registre
HKLM
Drivers
"RootKey"="Drivers"
"Dll"="RegEnum.dll"
Virtual
Chargé par DEVICE.exe
• Trouve les pilotes en
•
énumérant les clés de
Registre
Ré-entrant parcours du
Registre en profondeur
"Dll"= "Regenum.dll"
"Order"=dword:1
NDIS
"Dll"= "NDS.dll"
…
PCI
"Dll"= "PCIbus.dll"
"Order"=dword:4
Platform Builder 4.1 © Theoris 2003
188
94
Structure d’un Pilote
Mode User
Interrupt Service
Thread - IST
5
Mode Kernel
Interrupt Service
Routine - ISR
3
4
2
Noyau + OAL
1
Hardware
Platform Builder 4.1 © Theoris 2003
189
Développer un pilote
Génération du pilote :
• ISR :
processus de build de Windows CE
• IST :
processus de build de Windows CE
Platform Builder
Mise au point du pilote :
• ISR :
ligne série de trace
Platform Builder kernel debugger
• IST :
ligne série de trace
Platform Builder kernel debugger ou Visual C++
Platform Builder 4.1 © Theoris 2003
190
95
Interrupt Service Routine
Gestion des interruptions imbriquées depuis CE 3.0
Fonction appelée par le noyau Windows CE en cas
d’interruption
• traitement court :
acquittement de l’interruption au niveau du hardware, ...
pas d’accès à la Win32
code retour définissant les actions à faire
• un certain nombre de codes retour réservés par Windows CE :
•
SYSINTR_NOP (aucune action : valeur pas défaut)
SYSINTR_RESCHED (rescheduling)
SYSINTR_RTC_ALARM...
32 codes retour réservés à l’utilisateur pour activer ses IST :
SYSINTR_FIRMWARE à SYSINTR_MAXIMUM
Platform Builder 4.1 © Theoris 2003
191
Interrupt Service Thread
Interrupt
Service Thread
• Evénement signalé par le noyau Windows CE à la fin
•
d ’une ISR
Traitement « différé » de l’interruption
sa priorité est définie par celui qui l’initialise
Thread standard sans priorité particulière
Structure de l’IST
Une boucle infinie
Attente de l’événement signalé par le noyau
accès au hardware possible
mapping mémoire physique / mémoire virtuelle : VirtualAlloc
et VirtualCopy (intra-process) CreateStaticMapping (IPC)
sur cible x86 accès direct au plan I/O
Platform Builder 4.1 © Theoris 2003
192
96
Initialisation
Initialisation du pilote
• dans le noyau (OEMInit) pour la partie ISR
affectation de l’ISR à un numéro d’interruption : HookInterrupt
• dans la DLL du pilote pour la partie IST :
dans la routine d’initialisation (xxx_Init pour les pilotes flux de
caractères)
création des ressources nécessaires à la gestion des
interruptions
– création de l’IST
– création de l’événement d’éveil de l’IST
– mapping mémoire physique / mémoire virtuelle
association du code retour de l’ISR avec l’événement :
InterruptInitialize
193
Platform Builder 4.1 © Theoris 2003
Lancement
Lancement du pilote
• lors du lancement de Windows CE
pilotes natifs
– dans le contexte du process l’utilisant (GWES ou DEVICE)
pilote flux de caractères référencés dans HKLK\Drivers\BuiltIn
– dans le contexte de DEVICE.exe
pilotes hérités (NDIS et USB)
• lors de l'insertion d’une carte PCMCIA
– carte référencée dans HKLM\Drivers\PCMCIA\Detect
– dans le contexte de DEVICE.exe
• sur demande utilisateur (accès au matériel depuis
l’applicatif)
– dans le contexte du process pour un accès direct
– dans le contexte de DEVICE.EXE pour un pilote chargé via la
Base de Registre
Platform Builder 4.1 © Theoris 2003
194
97
Initialisation d’un IST
// structure passee a l’IST
Struct ISTd
{
HANDLE hThread;
DWORD sysIntr; // ID logique de l’IRQ
HANDLE hEvent;
BOOL volatile StopIST;
}
ISTd g_myISTd;
// Creation de l’evenement.
g_ISTd.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
// Mapping de l’IRQ en ID logique (CEPC x86)
g_ISTd.sysIntr = Mapirq2Sysintr(7);
// Creation du thread IST
g_ISTd.hTread = CreateThread(NULL, 0, &MyIstThread, &g_ISTd, 0, NULL);
// Change la priorite du thread IST
CeSetThreadPriority(g_ISTd.hTread, 122);
// Deconnecte un evenement existant sur l’IRQ
InterruptDisable(g_ISTd.sysIntr);
// Connecte l’evenement
InterruptInitialize(g_ISTd.sysIntr, g_ISTd.Hevent, NULL, O);
Platform Builder 4.1 © Theoris 2003
195
Traitements d’un IST
DWORD MyIstThread(LPVOID pvarg)
{
// recupere la structure IST
ISTd* pData= (ISTd*) pvarg ;
// Boucle du pilote.
while (! pData->StopIST)
{
// attente de signalisation Kernel
WaitForSingleObject(pData->hEvent, INFINITE);
if (pData->StopIST)
break;
// Traitement de l’interruption …
// Signalisation de fin de traitement
InterruptDone(pData->sysIntr);
}
return 0;
}
Platform Builder 4.1 © Theoris 2003
196
98
Terminaison d’un IST
// Signale la fin au Thread IST
g_ISTd.StopIST = TRUE ;
// Deconnecte l’evenement de l’ID logique
InterruptDisable(g_ISTd.sysIntr);
// attente de fin du thread IST
WaitForSingleObject(g_ISTd.hThread, INFINITE);
// Fermeture des ressources
CloseHandle(g_ISTd.hThread);
CloseHandle(g_ISTd.hEvent);
Platform Builder 4.1 © Theoris 2003
197
Gestion des contextes
Device.exe impose au pilote de gérer deux niveaux de
contextes
Device_Context et Open_Context
Lancement du pilote
• Définir les limites Device_context et Open_Context
• Device.exe appelle XXX_Init
Allocation des Device_Context
Utilisation du Pilote
• Sur CreateFile, Device.exe appelle XXX_Open
•
Allocation des Open_Context
Sur les autres fonctions Device.exe appelle XXX_Read ou
XXX_Write
Utilisation des Open_Context
Platform Builder 4.1 © Theoris 2003
198
99
Gestion des contextes (suite)
BOOT
DEVICE.exe
HKLM/DEVICES/…/Test1
"DLL"="MyDevice.dll"
"Index"=dword:1
"Prefix"="TST"
…
HKLM/DEVICES/…/Test2
DLL = « MyDevice.dll »
….
XXX_Init(…)
hInst1
hInst2
XXX_Open(hInst1)
hOpen1-1
MyApplication.EXE
H1=CreateFile( "TST1:" …)
Sz=ReadFile(H1,…)
H2=CreateFile( "TST1:" …)
Sz=ReadFile(H2,…)
XXX_Open(hInst1)
MyDevice.dll
Device Context
• DCtx1
• DCtx2
Open Context
• OCtx1
• OCtx2
hOpen1-2
XXX_Read(hOpen1-2)
Platform Builder 4.1 © Theoris 2003
199
Windows CE.NET
7 – La Base de Registre Windows CE.net
Platform Builder 4.1 © Theoris 2003
200
100
Plan du chapitre 7
Sauvegarde du Registre
Les deux types de Registre
Démarrage den deux temps
Configuration du Registre sauvegardé
201
Platform Builder 4.1 © Theoris 2003
Stockage Volatile et Persistant
RAM
Système
File System
NK.BIN
Cold Boot
Object
Store
AT
L
VO
E
IL
Registry
Database
Platform Builder 4.1 © Theoris 2003
Compact Flash
NT
Disque Dur
TA
S
SI
R
E
PStockage
USB
Etc…
202
101
Sauvegarde du Registre
Le Registre fait partie de l’Object Store
• Définir dans le NK.BIN
• Remis à l’état d’origine à chaque « Cold Boot »
• Les informations stockées par les applications ou les
pilotes sont volatiles
Fonctions dédiées à la sauvegarde et restauration
du Registre
• RegCopyFile / RegRestoreFile
• Ne peuvent pas s’appliquer à la configuration du
système (démarrage de DEVICE.exe)
Platform Builder 4.1 © Theoris 2003
203
Deux types de Registres
RAM-Based Registry
• Modèle d’origine de CE
• Stockage Volatile
HIVE-Based Registry
• Introduit avec CE 4.0
• Permet de gérer la persistance des configurations de
•
•
•
pilotes et d’application (post boot)
Complètement transparent pour le développeur
Nécessite un boot en deux phases (+lent)
Apporte la notion de contexte utilisateur
Platform Builder 4.1 © Theoris 2003
204
102
Boot en deux temps
RAM
NK.exe
Filesys.exe
Device.exe
Autres Pilotes
Boot-1
Registry
initiale
Applications
Boot-2
Registry
complète
Stockage
•System.hv
•User.hv
ShutDown
205
Platform Builder 4.1 © Theoris 2003
Deux Ruches (hives)
HIVE Système
• HKLM
• RegSaveKey
• RegReplaceKey
• RegFlushKey
HIVES Utilisateurs
• HKCU
• RegSaveKey
• RegFlushKey
Platform Builder 4.1 © Theoris 2003
System.hv
User1.hv
User2.hv
206
103
Configuration du Registre
Section
HKLM/init/BootVars
[HKEY_LOCAL_MACHINE\init\BootVars]
"SystelHive" = "system.hv"
"Start DevMgr"= dword:1 (ou 0 … Device.exe)
"DefaultUser"=nom utilisateur
Filtre
« premier BOOT »
;HIVE BOOT SECTION
<clés de Registre Initial>
;END HIVE BOOT SECTION
207
Platform Builder 4.1 © Theoris 2003
Configuration du Registre
Désignation
du lieu de Stockage
;HIVE BOOT SECTION
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\TrueFFS]
"Flag"=dword:1000 pilote non chargé par Boot-2
"Dll"= "TrueFFS.dll"
Autres valeurs utiles à TrueFFS…
[HKLM\System\StorageManager\Profiles\
TRUEFFS_UNAND\FATFS]
"MountFlag"=dword:2 Ce filesystem contient la ruche
;END HIVE BOOT SECTION
Platform Builder 4.1 © Theoris 2003
208
104
Synchronisation
Synchronisation
système
• Automatique sur shutdown
• Peut échouer sur rupture d’alimentation
Synchronisation
OEM
• Fonction RegFlushKey
• Non destructive si aucune clé n’a changé
• Peut tourner en tâche de fond
Platform Builder 4.1 © Theoris 2003
209
105