32
Systèmes d’exploitation pour l’embarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Embed Size (px)

Citation preview

Page 1: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Systèmes d’exploitation pour l’embarqué et

THINK

Etude ApprofondieArnaud CONSTANCIN25/11/2003

Page 2: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin2/29

Sommaire :

Tini (Tiny Internet Interface) Principe des systèmes d’exploitation THINK Is Not a Kernel Des concepts à la pratique : Think/Tini Demo !

Page 3: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

TINI : Tini Internet Interface

PrésentationMémoire : Caractéristiques Applications industrielles

Page 4: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin4/29

Tini : Présentation

Moins de 100 euros OS propriétaire + JVM Micro-contrôleur DS80C390 Controleur intégrés :

Ethernet Série (x2) CAN I2c 1-Wire

Page 5: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin5/29

Mémoire : caractéristiques

Adressage 24 bits (4Mo) Rom : 512 ko Ram 1024 ko

Periphérical segment

Data segment Code segment

Page 6: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin6/29

Applications industrielles

Accès aux bus de terrains Contrôle distant de capteurs et d’actionneurs Collecte de données Domotique etc…

Page 7: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Principes des systèmes d’exploitations

Présentation Les ressources Les differents types de noyaux Spécificité de l’embarqué

Page 8: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin8/29

Les Systèmes d’exploitation

Rôle Abstractions de la machine Partage des ressources matérielles

Services Accès aux ressources

Notion de noyau Couche essentielle d’un système Gestion et partage des ressources

Page 9: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin9/29

Les ressources matérielles

Processeur UAL, UC, Contexte (Registres) Exceptions et évènements Mode d’exécution (superviseur / utilisateur)

Mémoire et MMU Contrôleurs de Périphériques i/o

Série, USB,PCI, AGP, Fire-Wire, WIFI, IDE, etc…

Page 10: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin10/29

Ressources systèmes

Abstraction des ressources matérielles Fils d’exécution (Thread) Mémoire virtuelle --> Processus Fichiers, sockets, etc…

But : répartition des ressources

Page 11: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin11/29

Les concepts de noyaux (1/5)

Noyau à domaine de protection unique DOS, PalmOS

Efficace

Aucune sécurité

matériel

appli

service

Page 12: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin12/29

Les concepts de noyaux (2/5)

Noyau monolithiques 1eres générations de Linux et d’AIX… Performant et relativement sécurisé. Peu extensible, maintenance délicate.

matériel

appli

service

Noyau monolithique

Page 13: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin13/29

micronoyau

Les concepts de noyaux (3/5)

Micronoyaux Mach(BSD, MacOSX), GNU-HURD Très sécurisé Peu performant (Génération actuelles optimisées)

matériel

appli service

Page 14: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin14/29

Les concepts de noyaux (4/5)

Noyau extensible Linux, AIX, Solaris… Chargement dynamique de code Manque de sécurité

micronoyau

matériel

appli

service

Page 15: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin15/29

Les concepts de noyaux (5/5)

Exonoyau Performance Extensible Perte de contrôle des ressources par le noyau

micronoyau

matériel

appli

service

Page 16: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin16/29

Spécificité de l’embarqué

Processeurs Simples Pas de MMU Pas de mode d’exécution

Ressources restreintes Mémoire vitesse

Page 17: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

THINK Is Not a Kernel

Présentation et Définitions

Canevas logiciel

Fonctionnement global

Page 18: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin18/29

THINK : présentation

THink Is Not a Kernel Architecture pour Exo-Noyaux Préoccupation :

Extensibilité / Flexibilité / Adaptabilité / ModularitéEfficacité / PerformanceEt tout et tout...

Projet Open Source : ObjectWeb.org

Page 19: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin19/29

THINK : Définitions

Composants Réifient les ressources matérielles Possèdent une Interface (ou plusieurs) Associés à un nom Utilisent les services d’un canevas pour communiquer entre

eux (liaison)

Liaisons Flexibles Canal de communication inter-composant Locales / distantes Assemblage de composants (1 ou plusieurs)

Page 20: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin20/29

THINK : Canevas logiciel

Canevas Logiciel Naming Context

Trader (Courtier)

Binding factory (Usine de liaisons)

NanoNoyau L'essentiel pour booter !

Page 21: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin21/29

Fonctionnement Globale

Matériel

Nano noyau : réifie la machine sans abstraction

Composant A Composant B

Composant C

Implémente une ou plusieurs

interfacesExporte sesInterfaces--> Nom

Se lient

utilise

Usine à liaisons

Contexte de nommage

Canevas logiciel

Courtier (Trader)

Demande une interface

Page 22: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Des concepts à la pratique avec Think/Tini

Prototype

Codage

Démo !!

Page 23: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin23/29

Think/Tini : Le prototype !

Nano noyau Boot et interruption

Canevas de base de THINK Trader / Naming Context / Binding Factory

Pilotes de périphériques Leds / Afficheur LCD / Port série

Application : Interpréteur de commande sur port série

Page 24: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin24/29

Think/Tini : Dépendances

<component name="serialshell" class="exec"><description>This shell is provided for components debugging purpose.</description>

<file name="serialshell.tini"/><probe value="true"/><!--optionnel-->

<produces interface="input" type="activity.input"/><consumes interface="trader"/><consumes interface="BF"/><consumes interface="display"/><consumes interface="serial"/><consumes interface="leds"/>

</component>

Page 25: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin25/29

Think/Tini : Composition

<component name="shelltest"><description>Shell on serial port test !</description><file name="shelltest.tini"/><needs component="boot"/><needs component="libc"/><needs component="ds80c390"/><needs component="BFlocale"/><needs component="trader"/><needs component="tutorioleds"/><needs component="serial"/><needs component="tutoriodisplay"/><needs component="serialshell"/>

</component>

Page 26: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin26/29

Think/Tini : Interface

Décrites en Java puis converties en C

methRéférenceD’interface

Descripteur d’interface

m1

m2

m3

Structure de méthode

de l’interface

data

Variable statiques

Page 27: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin27/29

Think/Tini : Interface

package appli;

public interface shell {

void start();

}

typedef struct {

struct Mappli_shell *meth;

void *selfdata;

} Rappli_shell;

/* Virtual table */

struct Mappli_shell {

void* (*cast)(void* this, const unsigned char* type) reentrant;

void (*start)(void* __this) reentrant;

};

Page 28: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin28/29

Think/Tini : Composant Interfaces multiples :

methRéférenceD’interface 1

Descripteur Itf1

m1

m2

m3

Structure de méthode

de l’interface

data

Variable statiques

m4methRéférenceD’interface 2

Descripteur Itf 2

data

Page 29: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin29/29

Think/Tini : Composant

struct serialshelldata {

Rappli_shell itf;

char in_buffer[256];

};

static void start(void* __this) reentrant{/* implementation */}

static struct Mappli_shell serialshellMeth = {

meth = &serialshellMeth

selfdata = &d;

};

Page 30: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin30/29

Think/Tini : Composant

void serialshellProbe(void) reentrant{

static struct serialshelldata d;

serialshellMeth.start = start;

Rthink_Name* rtn;

rtn =(Rthink_Name *) CALL1(Trader, lookupfirst, "serial");

refserial =(Rdrivers_serial *)CALL2(defaultBF, bind, rtn, 0);

/* Enregistrement aupres du trader */

Rthink_Top* itfptr = (Rthink_Top *)(&(d.itf));

rtn = CALL2(defaultNC,export,itfptr,0);

CALL2(Trader,_register,rtn,"shell");

}

Page 31: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin31/29

Conclusion

Relativement facile à programmer --> Enseignement

Prochaines étapes : Reconfiguration dynamique Multitâche Communication évènementielle

Page 32: Systèmes dexploitation pour lembarqué et THINK Etude Approfondie Arnaud CONSTANCIN 25/11/2003

Arnaud Constancin32/29

Petite démo

Application : interpréteur de commande Saisie des commandes

Lecture de caractère sur le port série

Appels des jeux de test des composants Test des Leds, Affichage de message sur le LCD, Envoie de chaîne de caractères sur le port série