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

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

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

Présentations similaires


Présentation au sujet: "Systèmes d’exploitation pour l’embarqué et THINK"— Transcription de la présentation:

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

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

3 TINI : Tini Internet Interface
Présentation Mémoire : Caractéristiques Applications industrielles

4 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 Arnaud Constancin

5 Mémoire : caractéristiques
Adressage 24 bits (4Mo) Rom : 512 ko Ram 1024 ko Data segment Periphérical segment Code segment Arnaud Constancin

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

7 Principes des systèmes d’exploitations
Présentation Les ressources Les differents types de noyaux Spécificité de l’embarqué

8 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 Arnaud Constancin

9 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… Arnaud Constancin

10 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 Arnaud Constancin

11 Les concepts de noyaux (1/5)
Noyau à domaine de protection unique DOS, PalmOS Efficace Aucune sécurité appli service matériel Arnaud Constancin

12 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. appli service Noyau monolithique matériel Arnaud Constancin

13 Les concepts de noyaux (3/5)
Micronoyaux Mach(BSD, MacOSX), GNU-HURD Très sécurisé Peu performant (Génération actuelles optimisées) service appli micronoyau matériel Arnaud Constancin

14 Les concepts de noyaux (4/5)
Noyau extensible Linux, AIX, Solaris… Chargement dynamique de code Manque de sécurité appli service micronoyau matériel Arnaud Constancin

15 Les concepts de noyaux (5/5)
Exonoyau Performance Extensible Perte de contrôle des ressources par le noyau appli service micronoyau matériel Arnaud Constancin

16 Spécificité de l’embarqué
Processeurs Simples Pas de MMU Pas de mode d’exécution Ressources restreintes Mémoire vitesse Arnaud Constancin

17 Présentation et Définitions Canevas logiciel Fonctionnement global
THINK Is Not a Kernel Présentation et Définitions Canevas logiciel Fonctionnement global

18 THINK : présentation THink Is Not a Kernel
Architecture pour Exo-Noyaux Préoccupation : Extensibilité / Flexibilité / Adaptabilité / Modularité Efficacité / Performance Et tout et tout... Projet Open Source : ObjectWeb.org Arnaud Constancin

19 THINK : Définitions Composants Liaisons Flexibles
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) Arnaud Constancin

20 THINK : Canevas logiciel
Naming Context Trader (Courtier) Binding factory (Usine de liaisons) NanoNoyau L'essentiel pour booter ! Arnaud Constancin

21 Fonctionnement Globale
Se lient Composant A Composant B Implémente une ou plusieurs interfaces Demande une interface Exporte ses Interfaces --> Nom Nano noyau au dessus de la machine nue ! - proc interuption compC utilise le nano noyau Reifie certain périphérique de la machine nue Impl2mente une ou plusieurs interface (pt d’acces au methodes) Communication inter coposant A Exporte ses l’interfaces (enregistrement aupres du trader) B veut les services fourni par un interface… il la demande au trader. Fabrication d’une liaison entre A et B (pointeur… ou liaison via reseau… ) Contexte de nommage : il peut y en avoir plusieurs. Permet de faire des ensembles de composants afin de garantir la sécurité du système. Canevas logiciel Composant C Usine à liaisons Courtier (Trader) utilise Contexte de nommage Nano noyau : réifie la machine sans abstraction Matériel Arnaud Constancin

22 Des concepts à la pratique avec Think/Tini
Prototype Codage Démo !!

23 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 Arnaud Constancin

24 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> Arnaud Constancin

25 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> Arnaud Constancin

26 Think/Tini : Interface
Décrites en Java puis converties en C Descripteur d’interface Structure de méthode de l’interface Référence D’interface meth m1 data m2 m3 Variable statiques Arnaud Constancin

27 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; }; Arnaud Constancin

28 Think/Tini : Composant
Interfaces multiples : Structure de méthode de l’interface Descripteur Itf1 Référence D’interface 1 meth m1 data m2 Variable statiques Descripteur Itf 2 m3 Référence D’interface 2 meth m4 data Arnaud Constancin

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; Arnaud Constancin

30 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"); } Arnaud Constancin

31 Conclusion Relativement facile à programmer Prochaines étapes :
--> Enseignement Prochaines étapes : Reconfiguration dynamique Multitâche Communication évènementielle Un tel projet n’est jamais termine Arnaud Constancin

32 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 Arnaud Constancin


Télécharger ppt "Systèmes d’exploitation pour l’embarqué et THINK"

Présentations similaires


Annonces Google