1 Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué Rodolphe Loué Projet SOLIDOR
2 Plan de la présentation Introduction Introduction 1 - Présentation 1 - Présentation 2 - Objectifs 2 - Objectifs 3 - Mise en œuvre 3 - Mise en œuvre 4 - Perspectives 4 - Perspectives Conclusion Conclusion
3 Plan de la présentation Introduction Introduction 1 - Présentation 1 - Présentation 2 - Objectifs 2 - Objectifs 3 - Mise en œuvre 3 - Mise en œuvre 4 - Perspectives 4 - Perspectives Conclusion Conclusion
4 Introduction (1/4) Essor des architectures embarquées Applications multimédia Applications multimédia télécommunications télécommunications
5 Introduction (2/4) Programme Liaison
6 Introduction (2/4) Programme Liaison
7 Introduction (3/4) Programme ABSTRACTION MATERIELLE Modification du programme indépendamment du matériel Modification du programme indépendamment du matériel Evolution du matériel indépendamment du programme Evolution du matériel indépendamment du programme
8 Introduction (4/4) mémoire mémoire rapidité d’exécution rapidité d’exécution coût énergétique coût énergétique Optimisation de l’abstraction matérielle selon les critères :
9 Plan de la présentation Introduction Introduction 1 - Présentation 1 - Présentation 2 - Objectifs 2 - Objectifs 3 - Mise en œuvre 3 - Mise en œuvre 4 - Perspectives 4 - Perspectives Conclusion Conclusion
Présentation (1/2) SDE Sélecteur de module Gestionnaire de type Projection de langage M1, M2 Interface utilisateur Critères de conception DSP C55x Alignements requis spécification M1 M2 M3 M4 Implantation (modules) Gestionnaire de type
Présentation (2/2) Système d’exploitation Implantation spécification Alignement requis SDE langage1 langage2 MEMOIRE Implantation1 Version1 validée Version2 invalidée Implantation2 Implantation de l’allocation de T Fonction de construction de T Service1Service2 Service d’allocation Programme utilisateur
12 Plan de la présentation Introduction Introduction 1 - Présentation 1 - Présentation 2 - Objectifs 2 - Objectifs 3 - Mise en œuvre 3 - Mise en œuvre 4 - Perspectives 4 - Perspectives Conclusion Conclusion
Objectifs Utilisation des fonctions de construction de type Utilisation des fonctions de construction de type Création d’information sur le type Création d’information sur le type Rendre le gestionnaire de type polyvalent
14 Plan de la présentation Introduction Introduction 1 - Présentation 1 - Présentation 2 - Objectifs 2 - Objectifs 3 - Mise en œuvre 3 - Mise en œuvre 4 - Perspectives 4 - Perspectives Conclusion Conclusion
15 Les types dans SDE Type opaque : bloc contigu (opaque(5)) Type externe : déclaré dans la spécification Type composé –structure : concaténation de type (struct {...}) –union : superposition de type simple : taille de sa composante la plus volumineuse (union {...}) avec sélecteur de type : fonction retournant le type de l’union (union {…}) –tableau : ensemble d’éléments indexés d’un type classique (opaque(1)[2]) dynamique : fonction retournant la taille de la dimension (opaque(3)[ ])
16 inversion du type Propriété : un type est –représenté par un arbre –construit par une grammaire LALR Type ::= Type_Tableau Type_Tableau ::= Type Dim Exemple : type [5][2][7]
17 inversion du type Type Dim Type Dim Type Dim type[5][2][7] type[5][2] type[5] type [7] [2] [5] Interprété par l’analyseur par : type[7][2][5]
18 inversion du type légende 1 racine structure ou union tableau opaque
inversion du type légende 1 racine structure ou union tableau opaque
20 Tableau dynamique versus fixe Tableau fixe Tableau dynamique (0,0,0) (0,0,1) (0,1,0) (0,1,1) (0,2,0) (0,2,1) (1,0,0) (1,0,1) (1,1,0) (1,1,1) (1,2,0) (1,2,1) (0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) (1,0,1) (1,1,0) (1,2,0) (1,2,1) (1,2,2) (2,0,0) (3,0,0) Représentation spatiale Représentation mémoire Descripteur de la dimension 1 Descripteur de la dimension 2 Tableau dynamique Tableau fixe
21 Opaque(5) [2][3][ ][3]
22 Opaque(5) [2][3][ ][3]
23 Opaque(5) [2][3][ ][3]
24 Opaque(5) [2][3][ ][3] d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1 d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1
25 Opaque(5) [2][3][ ][3] Emplacement mémoire de taille indéfinie Légende
26 Opaque(5) [2][3][ ][3] Emplacement mémoire de taille indéfinie Légende
27 Opaque(5) [2][3][ ][3] Emplacement mémoire de la taille d’un pointeur Légende Emplacement mémoire de taille indéfinie
28 Opaque(5) [2][3][ ][3] d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1 Emplacement mémoire de la taille d’un pointeur Légende Emplacement mémoire de taille indéfinie d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1 d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1
29 Opaque(5) [2][3][ ][3] d3(0,0)=1 d3(0,1)=1 d3(0,2)=3 d3(1,0)=2 d3(1,1)=1 d3(1,2)=1 Emplacement mémoire de la taille d’un pointeur Légende Emplacement mémoire de taille indéfinie Emplacement mémoire de la taille d’un opaque(5) aligné
30 Unions avec sélecteur dans un tableau Exemple : union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
31 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
32 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
33 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u
34 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u
35 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2
36 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 opaque(8) o2;
37 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 opaque(8) o2;
38 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; opaque(4) o1;
39 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2
40 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3
41 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 opaque(8) o2;
42 union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 opaque(16) o3;
43 Légende Emplacement mémoire de taille indéfinie union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
44 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 Emplacement mémoire de la taille d’un pointeur Légende Emplacement mémoire de taille indéfinie union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
45 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 Légende Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
46 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 Légende Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
47 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
48 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3]; u
49 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 u Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
50 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 u Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie Emplacement mémoire de la taille d’un opaque(4) aligné union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
51 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 u Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie Emplacement mémoire de la taille d’un opaque(4) aligné union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
52 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 u Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie Emplacement mémoire de la taille d’un opaque(4) aligné union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
53 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 u Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie Emplacement mémoire de la taille d’un opaque(4) aligné union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
54 sel1=Type_u sel1=Type_o1 sel1=Type_u sel2=Type_o2 sel2=Type_o3 u u Emplacement mémoire de la taille d’un opaque(4) aligné Légende Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un opaque(16) aligné union { opaque(4) o1; union { opaque(8) o2; opaque(16) o3; }[2] u; }[3];
55 Tableau de structure d’opaque et de tableau Exemple : struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ];
56 Légende Emplacement mémoire de taille indéfinie struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; Emplacement mémoire de la taille d’un pointeur d1(0)=2 d1(1)=1
57 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; d1(0)=2 d1(1)=1
58 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; d1(0)=2 d1(1)=1
59 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; d1(0)=2 d1(1)=1
60 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; d1(0)=2 d1(1)=1
61 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; d1(0)=2 d1(1)=1
62 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; d1(0)=2 d1(1)=1
63 Légende Emplacement mémoire de la taille d’un opaque(8) aligné Emplacement mémoire de la taille d’un pointeur Emplacement mémoire de taille indéfinie d2(0,0,0)=3 d2(0,0,1)=1 d2(0,0,2)=1 d2(0,1,0)=2 d2(0,1,1)=1 d2(0,1,2)=2 d2(1,0,0)=2 d2(1,0,1)=1 d2(1,0,2)=3 d1(0)=2 d1(1)=1 struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; Emplacement mémoire de la taille d’un opaque(4) aligné struct { opaque(8) o1; opaque(4) [3][ ] o2; }[2][ ]; d2(0,0,0)=3 d2(0,0,1)=1 d2(0,0,2)=1 d2(0,0,0)=3 d2(0,0,1)=1 d2(0,0,2)=1 d2(0,0,0)=3 d2(0,0,1)=1 d2(0,0,2)=1 d2(0,0,0)=3 d2(0,0,1)=1 d2(0,0,2)=1 d2(0,1,0)=2 d2(0,1,1)=1 d2(0,1,2)=2 d2(0,1,0)=2 d2(0,1,1)=1 d2(0,1,2)=2 d2(0,1,0)=2 d2(0,1,1)=1 d2(0,1,2)=2 d2(0,1,0)=2 d2(0,1,1)=1 d2(0,1,2)=2 d2(1,0,0)=2 d2(1,0,1)=1 d2(1,0,2)=3 d2(1,0,0)=2 d2(1,0,1)=1 d2(1,0,2)=3 d2(1,0,0)=2 d2(1,0,1)=1 d2(1,0,2)=
64 Plan de la présentation Introduction Introduction 1 - Présentation 1 - Présentation 2 - Objectifs 2 - Objectifs 3 - Mise en œuvre 3 - Mise en œuvre 4 - Perspectives 4 - Perspectives Conclusion Conclusion
Perspectives Sélecteur de module Sélecteur de module –mots clefs (automatisation de la tâche) Caractéristiques processeurs Caractéristiques processeurs
66 Plan de la présentation Introduction Introduction 1 - Présentation 1 - Présentation 2 - Objectifs 2 - Objectifs 3 - Mise en œuvre 3 - Mise en œuvre 4 - Perspectives 4 - Perspectives Conclusion Conclusion
67 Conclusion Objectifs atteints Objectifs atteints type avec fonction de description transparence d’utilisation de ce type Critiques Critiques +deux compilations distinctes nécessaires (des fichiers d’entrée SDE et des fichiers générés par SDE) : modularité –séparation des différentes stratégies dans SDE –mémoire optimisée sans tenir compte de sa fréquence d’utilisation
68 Commentaires et questions
69 Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué Rodolphe Loué Projet SOLIDOR FIN