présentation vrtx - psylonpsylon.free.fr/formatio/doc/vrtx2.doc · web view.fin table m....
Post on 13-Nov-2020
13 Views
Preview:
TRANSCRIPT
TEMPS REEL
LE TEMPS REEL& VRTX
11/09/2023
TEMPS REEL 1
I. INTRODUCTION ..........................................................................................................................
II. LES SYSTEMES D'EXPLOITATION (OS) ...............................................................................
A. LE SYSTEME D'EXPLOITATION........................................................................................B. LES INTERRUPTIONS...........................................................................................................C. LES OS MULTITACHES........................................................................................................
1. AVANTAGES.........................................................................................................................2. LES PROCESSUS..................................................................................................................3. LE KERNEL...........................................................................................................................4. LE SCHEDULEUR/ORDONANCEUR...................................................................................5. LE SEMAPHORE...................................................................................................................6. LE PIPE..................................................................................................................................7. EVENEMENT / SIGNAL........................................................................................................
D. MULTI-UTILISATEUR...........................................................................................................E. MONITEUR OU EXECUTIF..................................................................................................
III. LE TEMPS REEL .......................................................................................................................
A. DEFINITION DU TEMPS REEL............................................................................................B. OBJECTIFS DU TEMPS REEL..............................................................................................C. CARACTERISTIQUES DU TEMPS REEL...........................................................................D. CARACTERISTIQUES D'UN MONITEUR...........................................................................
1. PREEMPTIF...........................................................................................................................2. DETERMINISME...................................................................................................................3. LATENCY TIME....................................................................................................................4. TEMPS DE CHANGEMENT DE CONTEXTE.......................................................................5. BLOCAGE DU SEQUENCEMENT........................................................................................6. SEQUENCEMENT.................................................................................................................
IV. LES SYSTEMES TEMPS REELS .............................................................................................
A. LES OS TEMPS REELS..........................................................................................................1. UNIX......................................................................................................................................2. CHORUS................................................................................................................................3. LYNXOS................................................................................................................................4. VXWORKS.............................................................................................................................5. OS/9........................................................................................................................................
B. LES MONITEURS TEMPS REEL..........................................................................................1. PSOS+....................................................................................................................................2. SCEPTRE...............................................................................................................................3. ARTK.....................................................................................................................................4. REAL TIME CRAFT..............................................................................................................5. SPECTRA...............................................................................................................................
C. VELOCITY...............................................................................................................................
V. VRTX ............................................................................................................................................
11/09/2023
VRTX moniteur temps réel
A. PREMIERS CONCEPTS DU NOYAU....................................................................................1. LES TACHES.........................................................................................................................2. LES ISR..................................................................................................................................3. L'HORLOGE...........................................................................................................................4. LES ENTREES SORTIES CARACTERES.............................................................................
B. DEVELOPPER SOUS VRTX..................................................................................................1. DEVELOPPER SUR CIBLE...................................................................................................2. LA CONFIGURATION DE VRTX.........................................................................................3. DEVELOPPER SUR P.C........................................................................................................4. CONTEXTE DES EXERCICES..............................................................................................
C. AUTRES CONCEPTS DU NOYAU........................................................................................1. LA BOITE AUX LETTRES....................................................................................................2. LA FILE..................................................................................................................................3. LES GROUPES D'EVENEMENT...........................................................................................4. LE SEMAPHORE...................................................................................................................5. L'ALLOCATION DYNAMIQUE DE MEMOIRE...................................................................
VI. LES EXTENSIONS DE VRTX ...................................................................................................
A. IFX............................................................................................................................................1. GESTION DE DISQUE...........................................................................................................2. GESTION DE FILES BUFFERISEES.....................................................................................3. LES FONCTIONS D'IFX........................................................................................................4. LE BOARD SUPPORT PACKAGE........................................................................................
B. RTSCOPE.................................................................................................................................C. MPV..........................................................................................................................................D. RESEAUX.................................................................................................................................E. WIX...........................................................................................................................................
VII. LA CONCEPTION ....................................................................................................................
VIII. LES AUTRES MONITEURS ..................................................................................................
IX. ANNEXES ...................................................................................................................................
A. PROTOTYPE DES FONCTIONS VRTX...............................................................................B. COMPLEMENT SUR VRTX...................................................................................................
1. LICENCE DE DEVELOPPEMENT :......................................................................................2. CARACTERISTIQUES PHYSIQUE.......................................................................................3. PERFORMANCES.................................................................................................................4. FONCTIONS..........................................................................................................................
C. BIBLIOGRAPHIE....................................................................................................................
11/09/2023
2
Le temps réel - VRTX
I. INTRODUCTION
Ce cours présente : Les notions de temps réels et d'exécutif temps réel. Les produits du marché. L'exécutif temps réel VRTX utilisé pour les T.P. et le mini-projet.
11/09/2023
1
Le temps réel - VRTX
II. LES SYSTEMES D'EXPLOITATION (OS)
A. LE SYSTEME D'EXPLOITATION
Tout calculateur comporte un système d'exploitation, qui sert d'intermédiaire en l'application et le matériel. Ainsi en adaptant le système d'exploitation, la même application peut s'exécuter sur des matériels différents. C'est le cas de MSDOS sur les compatibles PC.
Ce système d'exploitation est mono-tâche : une seule tâche s'exécute à la fois.
INTERFACEIMPRIMANTE
INTERFACESOURIS
INTERFACEVIDEO
INTERFACECLAVIER
INTERFACESDISQUES
Basic Input Ouput System
SYSTEME D'EXPLOITATIONCOMMANDES CHARGEMENT
PROGRAMMESMANIPULATIONSDONNEES
INTERPRETEURDE COMMANDES
PROGRAMME
DEMANDES
Ce système d'exploitation apporte : Transparence vis à vis du matériel : Un même programme peut s'exécuter sur des
matériels différents.
B. LES INTERRUPTIONS
événementINTERRUPTION
PROGRAMME
Lorsque survient un événement matériel (appuie d'une touche, réception de caractère modem...), le matériel est capable de générer un interruption.Le programme en cours est dérouté, le traitement d'interruption doit absoluement sauvegarder les registres qu'il utilise. A la fin de l'interruption, le traitement du programme reprend.Mais :
11/09/2023
2
Le temps réel - VRTX
Les priorités des interruptions sont souvent cablées. Elles ont lieu quelque soit l'urgence du programme.
C. LES OS MULTITACHES
1. AVANTAGES
INTERFACEIMPRIMANTE
INTERFACESOURIS
INTERFACEVIDEO
INTERFACECLAVIER
INTERFACESDISQUES
Basic Input Ouput System
SYSTEME D'EXPLOITATIONCOMMANDES CHARGEMENT
PROGRAMMESMANIPULATIONSDONNEES
INTERPRETEURDE COMMANDES
TACHE 1
DEMANDES
TACHE 1TACHE 1
Le multi-tâches permet : De rentabiliser l'usage du CPU. Il peut être alloué à une tâche moins urgente si la
tâche de plus haute priorité est bloquée par des entrées sorties. Simplifier la conception. Chaque fonction dispose de sa tâche de traitement,
comme si elle disposait du processeur à elle seule.MONOTACHE MULTITACHES
2. LES PROCESSUS
On utilise plutôt le terme de processus.
11/09/2023
3
Le temps réel - VRTX
Chaque processus possède : Sa mémoire. Ses données. Ne peut communiquer qu'à travers l'OS
3. LE KERNEL
Le coeur d'un système d'exploitation multitâche est le "kernel". Il comporte essentiellement l'enchaîneur de tâche s'appelle un ordonanceur (schéduler).
KERNELSCHEDULEUR
DRIVERS
AUTRE
4. LE SCHEDULEUR/ORDONANCEUR
Attenteentrée sortie
processus+ prioritaire
processus- prioritaire
entrée sortieterminée
SCHEDULER
Le scheduleur choisit à un instant donné le processus (ou thread) actif. Avec un processeur il n'y a toujours qu'un processus (ou thread) actif, le plus prioritaire des activables. Le contexte de chaque processus est conservé et restauré lorsqu'il devient actif.
La politique d'ordonnancement est variable : Par ordre de priorité. Par partage de temps. Par rotation aléatoire. Pour répartir les utilisations.
11/09/2023
4
Le temps réel - VRTX
5. LE SEMAPHORE
TACHE B
TACHE A
Le sémaphore permet d'arbitrer l'utilisation d'une ressource exclusive. La première tâche positionne le sémaphore qu'elle trouve libre, utilise l'imprimante, puis libère le sémaphore. Tout autre tâche trouvant le sémaphore positionné dans l'intervalle reste bloquée jusqu'à libération.
6. LE PIPE
TACHE BTACHE A
Le pipe est une file d'octets permettant une transmission entre tâches.7. EVENEMENT / SIGNAL
TACHE BTACHE A1 1
0
Le signal est un événement booléen positionné. La tâche en attente d'une valeur doit dépositionner le booléen, pour permettre une nouvelle utilisation.
D. MULTI-UTILISATEUR
Un système est multiutilisateurs lorsque plusieurs utilisateurs peuvent utiliser le même cpu à travers des consoles différentes.
VMS et UNIX sont des systèmes d'exploitation multitâches-tâches et multitâches-utilisateurs.
11/09/2023
5
Le temps réel - VRTX
E. MONITEUR OU EXECUTIF
Les moniteurs ou exécutifs sont des versions réduites (quelques ko au lieu de quelques centaines de ko) des systèmes d'exploitation sans interpréteur de commande. Toutefois certains proposent en option des produits additionnels qui les hissent au niveau des gros systèmes d'exploitation. Le coeur du système d'exploitation est un moniteur ou noyau exécutif (kernel) qui gère cet ensemble de tâches, choisit celle qui sera exécutée suivant divers critères (partage de temps, priorité...), et les communications entre tâches ou avec l'extérieur.
11/09/2023
6
Le temps réel - VRTX
III. LE TEMPS REEL
A. DEFINITION DU TEMPS REEL
Un système est temps réel s'il respecte les contraintes de temps et de débit (temps de réponse à un stimulus, taux de perte d'information toléré par entrée) qui sont imposées à ses interfaces avec son environnement.
ENVIRONNEMENT
SYSTEMEstimulisaction "rapide"
Aucune limite n'est spécifiée.
Un système de régulation de chauffage collectif qui doit réagir dans les six heures à un changement extérieur de température est un système temps réel.
Une application temps réel n'a pas forcément besoin d'un moniteur temps réel, tout dépend des contraintes.
Celles-ci dépendent souvent du domaine :
Gestion : 1 h à 1 jour. Prévision météo : quelques heures. Humain : 0,1 à 1 secondes. Avion : 10 à 100 ms. Conduite de missile : 1 à 100 ms. Traitement du signal : 10 s.
B. OBJECTIFS DU TEMPS REEL
Parallelisme : pouvoir traiter parallèlement plusieurs fonctions indépendantes. Temps de réponse court : Capacité à traiter des demandes dans un délai garantit
après l'apparition de l'événement. Grande sécurité : Eviter tout problème de conflit d'accès à une ressource. Matériel diversifié : Pouvoir s'adapter aux différents matériels.
C. CARACTERISTIQUES DU TEMPS REEL
Un moniteur ou noyau exécutif est temps réel si il garantit les temps de réaction à un événement plus prioritaire que le traitement courant.
Par exemple un moniteur ou exécutif n'est pas temps réel si : Il bloque périodiquement tout fonctionnement pour recompacter sa zone de mémoire
dynamique,
11/09/2023
7
Le temps réel - VRTX
Il bloque tout fonctionnement lors d'une attente d'entrée sortie, Il n'active la tâche la plus prioritaire que lors des requêtes systèmes de la tâche en cours, ou
suivant une période constante.
Cependant pour bénéficier de ces avantages sans prendre de risques dans une application embarquée surtout si elle est critique, certaine précautions s'imposent dont voici quelques exemples : le système doit être prévisible :
toute tâche doit avoir un temps maximum d'exécution connu, les tâches cadencées suivant des périodes fixes ou chaînées à d'autres tâches de ce
type sont plus vérifiables. les événement extérieurs provoquant l'exécution de tâches asynchrones doivent
avoir une fréquence maximale connue, ou une faible priorité si on accepte les pertes d'événement
les traitements ne supportant pas de gite doivent être plus prioritaires ou traitée en interruption.
En conclusion, il est toujours possible de trouver une architecture dynamique plus sûre avec un moniteur que sans moniteur.
D. CARACTERISTIQUES D'UN MONITEUR
Les qualités recherchées pour un exécutif temps réel sont :
1. PREEMPTIF
A tout instant la tâche active est la tâche activable de plus forte priorité dès l'apparition de l'événement la rendant activable.
Dans les systèmes non préemptifs, le changement ne peut intervenir que lors du prochain appel système de la tâche en cours (ex windows 3.X).
2. DETERMINISME
Un système est déterministe si son comportement dans le temps est prédictible. Un exécutif temps réel doit garantir des temps d'exécution constant de ses primitives.
Les performances temps d'un moniteur peuvent être : aléatoires : Le temps dépend de l'ordonnancement des tables internes, il suit alors
une loi statistique fonction du nombre de composants (taches, etc) gérés. Seule cette loi peut être donnée pour calculer un temps maximum.
fixe : Les algorithmes utilisés sont déterministes, ils ne dépendent pas de la configuration.
11/09/2023
8
Le temps réel - VRTX
3. LATENCY TIME
Temps de masquage (latency time) le plus faible possible : ce temps est le temps maximum pendant lequel une interruption ne peut être servie.
événementINTERRUPTION
TACHE4. TEMPS DE CHANGEMENT DE CONTEXTE
TACHE 1
TACHE 2
Le temps de changement de contexte doit être le plus faible possible : Temps nécessaire pour changer de tâche active
5. BLOCAGE DU SEQUENCEMENT
TACHE 1
TACHE 2
unlocklock
Blocage du séquencement : Une tâche peut interdire tout changement de contexte sur une portion de son traitement, même au profit d'une tâche plus prioritaire. (LOCK, UNLOCK)
6. SEQUENCEMENT
Séquencement : Tous ces moniteurs exécutent la tache activable la plus prioritaire du moment. Mais à égalité de priorité :
Circulaire : Les taches activables de même priorité sont gérés en liste circulaire. A chaque activation de ce niveau, une tache différente est choisie.
Time slicing : Une tranche de temps est attribuée à chaque tache.
11/09/2023
9
Le temps réel - VRTX
IV. LES SYSTEMES TEMPS REELS
A. LES OS TEMPS REELS
1. UNIX
Traditionnellement, UNIX n'est pas un OS temps réel. Son objectif étant de répartir le plus équitablement possible le CPU sur l'ensemble des tâches, il a tendance à faire varier les priorités des processus afin de favoriser les moins activés.
Parallèlement à ce système coopératif, les nouvelles générations d'UNIX ont ajouté un système de priorité temps réel. C'est le cas de SVR4 (Système V Release 4) et donc de SOLARIS 2 son implémentation sur SUN.
Parallèlement aux processus, les threads permettent des changements de contexte.
2. CHORUS
Chorus est un UNIX temps réel réputé depuis longtemps.
3. LYNXOS
LynxOS est un nouveau venu UNIX-like assez porté sur la compatibilité POSIX.
4. VXWORKS
VXWORKS était à l'origine un simple noyau auquel ont été ajoutés tous les services habituels sous UNIX. Il n'est plus vendu en tant que noyau seul, c'est pourquoi il est placé dans la catégorie OS temps réel. C'est l'OS temps réel probablement leader dans le domaine embarqué. Cet historique le rend plus étranger à UNIX que ses concurents plus récents qui sont de vrais UNIX.
Exécutif temps réel UNIX like carte VME 147 & 167, SPARC, MIPS R3000 Intel 80960Version documentation 5.0Version au 04/94 5.1Version annoncée 5.2
Caractéristiques temps réel : temps de changement de contexte 3us->17 us1 (68040 30 MHz) 256 priorités À égalité de priorité, allocation sur file circulaire
Source compatible UNIX.
Moniteur modulaire promable (taille minimale = 18 ko) à micro kernel Wind 8 ko.
Communications propriétaires, POSIX 1004, POSIX 1004a (version 5.2). : sémaphores binaires, à compteurs, à héritage de priorité
1suspension + réactivation de tâche active
11/09/2023
10
Le temps réel - VRTX
message queues (fifo de messages à longueur variable) pipe
Disques SCSI compatibles MS-DOS 4.0 ou RT11
Réseau : socket BSD 4.3 raw IP, UDP/IP, stream TCP/IP protocols réseaux de haut niveau rpc, rsh, ftp, nfs (client seulement ?), telnet, rlogin
Outils : shell (interpréteur de commande) propriétaire remote debugger VxGDB compilateur croisé depuis SUN, HP, etc GNU compilateur croisé depuis MSDOS/WINDOWS GreenHills compatible ADA Verdix VADS option windX (XWindow) option stethoscope : moniteur/debugger graphique option winview : moniteur intégré à WIND (surcharge temps +3%)
Prix : Configuration de développement : 146 kf Run time : 5800 frs
5. OS/9
OS/9 offre depuis longtemps des caractéristiques évoluées d'OS lourd, en restant plus souple et temps réel. Il est très apprécié dans les pilotages d'automates, de processus de fabrication, robots, etc.
B. LES MONITEURS TEMPS REEL
1. PSOS+
PSOS, principal concurrent de VRTX, et également utilisé sur certaines applications garantissait des performances fonctions du nombre de tâches de l'application.
PSOS+, la génération suivante comble cependant ce défaut.
2. SCEPTRE
Les concepts manipulés par les moniteurs datent des premiers systèmes d'exploitation.
On retrouve donc presque toujours les mêmes mécanismes, avec quelques variantes et des syntaxes différentes.
Or une application a beau utiliser le même CPU, le même langage normalisé, elle ne pourra être porté sur un matériel utilisant un moniteur différent.
11/09/2023
11
Le temps réel - VRTX
SCEPTRE2 est une proposition du BNI3 de standard d'appel de moniteur, tout comme POSIX est une norme d'appel pour un système d'exploitation. A charge pour tous les fabricants de moniteurs de fabriquer l'interface et l'application sera portable d'un système à l'autre.
3. ARTK
ARTK est l'exécutif temps réel de la chaîne ADA Alsys.
Certains langages (LTR) ou extensions de langages (Concurent Pascal) intègrent dans leur syntaxe les processus de définition des tâches et de communication, c'est le cas du langage ADA qui propose comme mécanisme élémentaire : le rendez-vous.
Le rendez-vous est un mécanisme neuf (par rapport aux autres) qui règles les communications entre les tâches.
Déroutés par cette originalité, certains utilisateurs d'ADA préfèrent utiliser un moniteur classique comme VRTX. Alsys commercialisait une interface entre son compilateur et VRTX. Cette solution sera en 91 remplacée par l'intégration d'ARTX.
4. REAL TIME CRAFT
REAL TIME CRAFT est l'exécutif de GSI-TECSI distribué par MTE, réalisé par des participants à SCEPTRE.
Son noyau XEC est semblable à VRTX, ses composants complémentaires sont les suivants :- IOS : Entrées sorties lignes asynchrones ou synchrones,- FMS : Gestion de fichers,- TRC : debugger
5. SPECTRA
SPECTRA, le successeur de VRTX chez READY-SYSTEM fait partie de la nouvelle génération d'exécutif bâti sur un micro-noyau.
Même les fonctions mailbox, sémaphore, etc ne font pas partie de ce micro-noyau et sont donc absentes du code si elles ne sont pas utilisées.
A l'inverse, le noyau s'enrichit de couches supplémentaires qui lui apporte des fonctionnalités allant jusqu'à UNIX.
Il y a d'autres produits dans la même catégorie qu'il faudra analyser.
C. VELOCITY
VRTX est un moniteur déjà ancien qui existait pour processeur Z80 puis Z8002, 8088, 8086, 80286, 68000, 68008, 68020, 32000.
VRTX32 en est la nouvelle génération pour processeur 16/32 bits 8088, 8086, 80386, 68000, 68010, 68020, 32000.
Il existe également VRTX1750 pour les processeurs militaires MIL-STD-1750 A.
2 Standardisation du Coeur des Exécutifs des Produits Temps Réel Européens (1980)3 Bureau d'orientation de la Normalisation en Informatique
11/09/2023
12
Le temps réel - VRTX
VRTX offre le minimum vital pour un moniteur : - un seul processeur, - très peu d'entrées-sorties.VELOCITY est une famille de produits Ready System dont le noyau est le moniteur temps réel VRTX, et qui comporte des couches additionnelle qui permettent d'étendre ses services : - MPV multitâches-processeurs, - IFX entrées sorties, - TNX communication réseau, - RTSCOPE débugger, - RTL bibliothèque standard C appelant VRTX, - RTC compilateurs Intel, - ARTX moniteur pour ADA, - VMSLink téléchargement VAX - Hyperlink téléchargement SUN
11/09/2023
13
Le temps réel - VRTX
V. VRTX
A. PREMIERS CONCEPTS DU NOYAU
Versatile Real Time Executive
1. LES TACHES
Une tâche est un agent actif responsable de l'exécution séquentielle d'un programme.
ENEXECUTION PRETE
ENATTENTE
DORMANTE
SEQUENCEUR
SEQUENCEURattentemailboxqueue...sc_tsuspend
receptionsc_tresume
sc_tdelete
sc_tcreate
sc_tprioritysc_tinquiry
Une tâche comporte un certain nombre d'attributs pouvant être mémorisés dans un bloc de contrôle (TCB) :
IDENTIFICATION 1..255
ETAT
PRIORITE 0..255
REGISTRES
PILE
PCSP
PROCESSEUR
PCSPREGISTRES
TCB
CHANGEMENTDE CONTEXTE
11/09/2023
14
Le temps réel - VRTX
identification : 1..255 numéro d'identification unique par lequel la tâche peut être référencée1,
son état : dormante : la tâche est inactive et ne peut s'exécuter, elle est inconnue de VRTX, active : la tâche est prête à s'exécuter si les conditions sont remplies, elle peut alors
être : suspendue : la tâche est en attente d'un événement, exécutable (ready) : la tâche n'attend rien et est exécutable, en exécution (exécuting) : parmi toutes les tâches exécutable, une seule
tâche est en exécution à un instant donné, suivant des critères qui seront précisés ensuite.
sa priorité : 0..255 (0=niveau le plus prioritaire). Parmi toutes les tâches exécutable, l'exécutif choisit la plus prioritaire comme tâche exécutée, à égalité de niveau,
le contexte d'exécution : l'ensemble des valeurs des registres du processeur.2 Lorsqu'une tâche quitte l'état d'exécution, ce contexte est mémorisé, il lui sera restitué lors du retour à l'état d'exécution,
la pile : chaque tâche utilise une pile utilisateur3 personnelle
Par défaut, à égalité de niveau de priorité, l'exécutif choisit la tâche exécutable la plus ancienne dans la liste des tâches exécutables. Il est possible de sélectionner (SC_TSLICE) une rotation avec partage de temps entre les tâches de même priorité. Un tâche peut interdire toute alternance sur une portion de son code (SC_LOCK et SC_UNLOCK)
Plusieurs tâches peuvent exécuter le même code, il suffit qu'elles travaillent sur des contextes différents.
Une tâche peut être dynamiquement crée (SC_TCREATE), détruite (SC_TDELETE), suspendue (SC_TSUSPEND) sans condition de relance, relancée (SC_TRESUME) si elle était suspendue, changée de priorité (SC_TPRIORITY), consultée sur son état (SC_TINQUIRY)
Une tâche de niveau inférieur peut bloquer le schéduling (sc_lock) puis le débloquer après la section critique (sc_unlock).
extern void sc_tcreate(void (*)task(), int tid, int pri, int *err);extern void sc_tdelete(int tid_pri, int code, int *err);extern struct TCB *sc_tinquiry( int*info, int tid, int *err);extern void sc_tpriority(int tid, int pri, int *err);extern void sc_tresume(int tid_pri, int code, int *err); /* code =0 tid / code = 'A' priorité */extern void sc_tsuspend(int tid_pri, int code, int *err);
1 0 = numéro partageable par plusieurs tâches, cependant de telles tâches ne peuvent communiquer avec l'extérieur.2 D0..D5, A0..A3 SSP,USP et registres d'état dans le TCB, les autres dans la pile utilisateur3 le 680XX comporte une pile système utilisée par les ISR et VRTX et une pile utilisateur. Chaque pile à son propre pointeur dans le CPU, sélectionné automatiquement suivant l'état superviseur ou utilisateur du processeur
11/09/2023
15
Le temps réel - VRTX
extern void sc_lock(void);extern void sc_unlock(void);
2. LES ISR
Les tâches sont sous le contrôle total de l'exécutif et ne peuvent déceler directement un événement extérieur matériel asynchrone.
ISR
TABLE DESVECTEURS
VECTEUR IT
TACHEA
TACHEB
SAVE AXUI_ENTER
UI_EXIT
VRTX
TCB A TCB B
message
Les ISR4 sont des routines d'interruption directement reliées à un vecteur d'interruption. L'apparition de l'interruption matérielle provoque leur exécution sans intervention du moniteur.
Leur priorité dépend uniquement du contrôleur d'interruption utilisé (ex 68901).
Une ISR doit uniquement acquérir ou émettre des informations sans les traiter. Elle doit les communiquer avec une tâche en serveur qui les traitera. Elle doit ensuite signaler l'interruption au moniteur (UI_EXIT)afin qu' il puisse éventuellement changer de tâche en exécution.
Comme une ISR sauve le registre AX sans le restaurer, les fonctions interruptions du C ne peuvent être utilisées. Une ISR est donc obligatoirement en assembleur. Cependant l'isr en assembleur peut appeller une fonction C. La fonction assembleur est la suivante :
PROLOG BORLAND.386p
include vrtxvisi.incifndef ??version
?debugmacroendm
publicdll macro namepublic nameendm
$comm macro name,dist,size,countcomm dist name:BYTE:count*sizeendmelse
4 Interrupt Service Routines, elles sont nommées tâches immédiates dans sceptre
11/09/2023
16
Le temps réel - VRTX
$comm macro name,dist,size,countcomm dist name[size]:BYTE:countendmendif?debugV 301h?debugS "isr.asm"
ISR_TEXT segment byte public use16 'CODE'ISR_TEXT ends
assumecs:ISR_TEXT,ds:ISR_DATAISR_DATA segment word public use16 'FAR_DATA'd@ label byted@w label wordb@ label byteb@w label wordISR_DATA endsISR_TEXT segment byte public use16 'CODE' ; ; void interrupt tst() ;
assumecs:ISR_TEXT,ds:ISR_DATA
PARTIE ACTIVEfontionasm proc far push ax mov ax,UIFENTER int VRTX
push bxpush cxpush dxpush espush dspush sipush dipush bpcall far ptr fonctioncpop bppop dipop sipop dspop espop dxpop cxpop bxmov ax,UIFEXIT
int VRTXfonctionasm endp
extrn fonctionc
11/09/2023
17
Le temps réel - VRTX
SUITE BORLAND; ?debugC E9; ?debugC FA00000000ISR_TEXT endsISR_DATA segment word public use16 'FAR_DATA's@ label byteISR_DATA endsISR_TEXT segment byte public use16 'CODE'ISR_TEXT ends_s@ equ s@extrn _isrc_appel_interne:far extrn _isrc_appel_externe:far
public _isr_passe_etage public _isr_appel_interne public _isr_appel_externe
end
3. L'HORLOGE
VRTX peut offrir un service d'horloge. Pour cela, le matériel doit pouvoir déclencher une ISR périodique qui avertit qu'une nouvelle période de temps est écoulée (UI_TIMER).
ISRTIMER
VECTEURIT
UI_TIMER
VRTX
SC_TSLICESC_STIMESC_TDELAYSC_STIMESC_GTIME
cpt 32bits
UI_EXIT
Cette période s'appelle le "tick". VRTX gère un compteur du nombre de "ticks" écoulés depuis le démarrage de l'application.
Tous les temps spécifiés à VRTX (ex : SC_TSLICE, période de temps alloué à chaque application) s'exprime dans cette unité.
Il est possible de lire (SC_GTIME) ou d'initialiser (SC_STIME) ce compteur.
Une tâche peut se suspendre pendant un nombre de "ticks" spécifié. (SC_TDELAY)
Déclarations extern long sc_gtime(void);extern void sc_stime(long tick);extern void sc_delay(long tick);
11/09/2023
18
Le temps réel - VRTX
extern void sc_tslice(unsigned int ticks);
4. LES ENTREES SORTIES CARACTERES
Malgré l'absence de son complément d'entrée sortie IFX, VRTX peut gérer une entrée et une sortie caractère.
ISRRECEPTIONCARACTERE
ISREMISSION
CARACTERE
TXRDYDRIVER
ITRECEPTION
ITEMISSION
TAMPON 64 CAR.
TAMPON 64 CAR.
UI_RXCHR
UI_TXRDY
TACHE
SC_GETC
SC_WAITC
SC_PUTC
CONF
L'application doit fournir deux ISR qui s'occupent de détecter la fin d'émission d'un octet ou de recevoir un octet et préviennent VRTX (UI_TXRDY & UI_RXCHR). Elle doit également fournir un sous-programme TXRDY qui transmet un caractère.
Les tâches peut écrire (SC_PUTC) ou lire (SC_GETC) un caractère, attendre un caractère spécifique (SC_WAITC)
VRTX gère des buffers tournant de 64 caractères en tampon entre les tâches et les ISR.
Ces fonctions sont généralement utilisées pour relier l'application à un clavier et à un écran.
Déclarations extern int sc_getc(void);extern void sc_putc(int chr);extern void sc_waitc(int chr, int *err);
11/09/2023
19
Le temps réel - VRTX
B. DEVELOPPER SOUS VRTX
1. DEVELOPPER SUR CIBLE
VRTX MPVIFX
TNX RTSCOPE CIBLE
RTSCOPE
RTL
APPLI
Hyperlink
RTC STATION
~
VELOCITY
Sur cible, le schéma de développement peut être le suivant : Développer sur une station avec un compilateur croisé (rtc, microtec) en utilisant la
bibliothèque standard C RTL. Transférer le code dans la cible soit via ligne série, soit par réseau tcp/ip (hyper
link).L'application peut utiliser :
Le noyau VRTX. L'extension d'entrée sortie IFX Le debugger RTSCOPE La couche réseau (nécessaire pour le téléchargement réseau) L'extension MPV pour le multi-processing.
2. LA CONFIGURATION DE VRTX
VRTX est un composant logiciel dont le code est entièrement relogeable (adressage relatif au PC).
Les appels systèmes se font à travers une interruption logiciel (TRAP) choisie par l'utilisateur. Des bibliothèques d'interface en C sont fournies.
Une table de configuration permet d'indiquer au moniteur ses paramètres de travail : position et taille de la zone des données de travail de VRTX, la taille de la pile système et de la pile ISR, la taille de la pile d'une tâche, le nombre maximum de groupes d'événements et de sémaphores, le niveau de masquage des interruptions à positionner en mode système VRTX, le nombre maximum de tâches, l'adresse de TXRDY (si elle existe), les adresse d'extensions optionnelles (routine utilisateur pour des traitements
complémentaires lors de la création, la destruction ou le changement de tâches) la table des composants additionnels de VRTX, (ex : IFX).
Au démarrage, après ses propres initialisation, l'application appelle VRTX_INIT puis réalise les créations de tâches ou de ressources jugées nécessaires dès le début puis VRTX_GO.
11/09/2023
20
Le temps réel - VRTX
VRTX_INIT
CREATION TACHES...
VRTX_GO
INIT HARD
RESET
VRTX comporte également une table (CVT) contenant les adresses des composants additionnels.
3. DEVELOPPER SUR P.C.
APPLICATION = TACHES + ISR + DRIVERS IFX
RTLBibliothèque C
IFXEntrées/Sortiesdisque/stream
WIXFenêtres
PCX
BIOS
RTSCOPEDebug
~
driver IFX
VRTX
driver VRTXAppel Bios
Autour du noyau VRTX, les composants additionnels sont : IFX : Entrées sorties évoluées disques et stream WIX : Système d'affichage multi-fenêtrés caractère. RTSCOPE : Outil de débug.
Chaque composant additionnels comporte des tâches et/ou des isr qui vont cohabitér avec les tâches de l'application.La bibliothèque RTL permet à une application d'accéder aux entrées-sorties par des appels en C standards. A l'exception de WIX tous ces composants sont standards.
PCX constitue l'adaptation de tous les composants VRTX au matériel P.C. C'est le board support package :
Drivers IFX Accès au DOS
11/09/2023
21
Le temps réel - VRTX
Drivers VRTX
Ainsi une application peut utiliser en fonction de la portabilité souhaitée : Tout système : La bibliothèque C RTL. Accès disque multi-tâches sous IFX : IFX P.C. + VRTX : WIX Noyau réduit VRTX : drivers VRTX
4. CONTEXTE DES EXERCICES
a) ARCHITECTURE
L'objectif de ce module étant de maîtriser les bases du temps réel, le noyau est suffisant pour celles-ci. Nous nous limiterons donc à une utilisation minimum :
APPLICATION = TACHES + ISR
RTLBibliothèque C
WIXFenêtres
RTSCOPEDebugVRTX
MATERIEL SPECIFIQUE
b) ECRAN
On utilisera le composant WIX afin de découper l'écran du P.C. en au moins deux zones :
VRTX
RTSCOPE
Les entrées sorties se feront dans la fenêtre VRTX lors de l'appel des fonctions standards C.La fenêtre RTSCOPE sera réservée à la mise au point du programme.
Les exercices ou projets s'exécuteront dans le sous-répertoire projet de VRTX.
c) INITIALISATION
PCX qui exécute la séquence de lancement vue plus haut subdivise celle-ci en quatre appel de fonction que doit fournir l'application :
user_init1 : initialisation de matériel spécifique user_init2 : ouverture des fenêtres VRTX et RTSCOPE user_init3 : création objets/tâches vrtx
11/09/2023
22
Le temps réel - VRTX
user_init4 : P.C. IFX PCX driversLe dernier appel est utilisé lors de la sorte de programme
user_end : restauration du matériel avant retour sous DOS.
L'application doit aussi définir une fonction user_main appellée par la tâche principale et recevant les arguments d'appel comme la fonciton classique main.
ex user_init2void user_init2(){ int err;
/* open VRTX and RTscope windows */dsp_vrtx_window = wiopen(2, 3, 19, 70, (char *)0, 0, WOVRTX, &err); if (err != 0) dsp_C_init_error("Wix VRTX-window open error ", err) ;dsp_rts_window = wiopen(8, 0, 24, 79, (char *)0, 0, WODB, &err); if (err != 0) dsp_C_init_error("Wix RTscope-window open error ", err) ;} /* end of user_init2() */
void user_init4(){int err;
#if (VRTX_screen == WIX_screen) /* select VRTX window */ wiselect(dsp_vrtx_window, WRSECUR, &err); if (err != 0) dsp_C_init_error("Wix VRTX-window select error ", err) ;#else #if (RTSC_screen == WIX_screen) /* select RTscope window */ wiselect(dsp_rts_window, WRSECUR, &err); if (err != 0) dsp_C_init_error("Wix RTscope-window select error ", err) ;#endif}
user_end(err)int err;{
/* INSERT REQUIRED OPERATIONS HERE */ flush_buffs(); /* flush DOS disk buffers, see ifxsprt.asm */ return err;}
11/09/2023
23
Le temps réel - VRTX
d) CONFIGURATION
Il faut renseigner dans \vrtx\tool.def :
# TOOLDIR defines the path were TURBO tools can be found. TOOLDIR = d:\bc4
ASMDIR = c:\vrtx\tasm
et dans \vrtx\project\makefile :OBJS1 = $(STARTUP) $(STARTUP1) $(PROG)
OBJS2 = autres sources
L'utilitaire CONFIG appli permet la configuration d'une application contenant au moins le fichier appli.c avec la fonction user_main plus le fichier userinit.c.Il permet de paramétrer (fonciton 1 à 12) la configuration de VRTX.Conserver les sélection de IFX, clibnofp.lib (pas de calcul sur des réels), RTSCOPE, WIX.
En fonction 8 Component and DOS configuration : VRTX : Vérifier que les valeurs maximales sont cohérentes avec l'application. IFX et RTSCOPE : laisser les paramètres WIX : Priorité de wix ? DOS : accès concurents ou non ?
En Task Id assignement, conserver les numéros des tâches rtscopes...En IO conserver les sélections screen.Conserver la sélection pas de co-processeur.En sortie de configuration, (15), CONFIG lance la génération des fichiers assembleurs liés à celle-ci et génère l'application sur le fichier makefile.
e) BORLAND IDE
On peut aussi travailler en environnement intégré borland en intégrant dans le projet les éléments suivants :
\vrtx\project\startup.obj : Objet résultat de l'assemblage de startup.asm généré par config.
userinit.c et autres sources. \vrtx\lib\vrtxosc.lib : bibliothèque \vrtx\lib\vrtxlib.lib : bibliothèque générée par config \vrtx\lib\clibnofp : bibliothèque rtl sans flottant borland...\lib\ch.lib : bibliothèque borland
Le projet doit utiliser le modèle HUGE, ne pas incorporer les bibliothèques par défaut (remplacement du démarrage par startup), ne pas introduire de code de vérification de pile.
En cas d'utilisation du makefile, il doit comporter les sélections des outils borland compilateur et assembleur.
11/09/2023
24
Le temps réel - VRTX
C. AUTRES CONCEPTS DU NOYAU
Les communications ont lieu entre tâches ou entre ISR et tâches. Elles peuvent servir plusieurs objectif : échange de données, synchronisation :
unilatérale : T2 doit attendre que T1 est atteind un certain point, bilatérale : T1 et T2 doivent mutuellement s'attendre en un point de leur traitement, conjonctive : T est en attente d'un ensemble d'événements, disjonctive : T est en attente du premier événement parmi un ensemble,
exclusion mutuelle d'accès à une ressource.
1. LA BOITE AUX LETTRES
La boite aux lettres ou mailbox permet un échange d'informations. Une boite aux lettres ne peut accepter qu'un seul message à la fois.
ISR TASK
MAILBOX
SC_PEND
SC_ACCEPT
SC_ACCEPT
SC_POST
32 bits <>0
SC_POST
VRTX n'autorise qu'un message d'un mot de 32 bits non nul. Ce mot servira donc le plus souvent de pointeur vers le véritable message.
Physiquement une mailbox est un mot mémoire réservé par l'utilisateur, nul si la mailbox est vide. Toutes les requêtes s'effectuent donc en donnant l'adresse de ce mot.
Une tâche ou une ISR peut envoyer un message vers la boite aux lettres (SC_POST). Si celle-ci n'est pas vide un code d'erreur est renvoyé.
Une autre tâche ou ISR peut recevoir le message par une demande de lecture sans attente (SC_ACCEPT), avec attente (SC_PEND seulement pour les tâches) avec ou sans time-out.
Si plusieurs tâches sont en attente de la même boite aux lettres, la plus prioritaire recevra le premier message.
Les boites aux lettres servent donc surtout à des transmissions d'information lorsque le récepteur est capable de les traiter à la cadence de l'émetteur.
Déclarations :
extern char *sc_accept(char ** mbox, int *err);extern char *sc_pend(char ** mbox, long timeout, int *err);extern void sc_post(char ** mbox, char *msg, int *err);
11/09/2023
25
Le temps réel - VRTX
2. LA FILE
La file (queue) permet de mémoriser plusieurs messages entre les émetteurs et le récepteur.
ISR TASK
QUEUE (n+1)*32 bits
SC_QPEND
SC_QACCEPT
SC_ACCEPT
SC_QPOST
SC_QJAM
SC_QJAM
SC_QPOST
SC_QCREATE(ID,N)SC_QDELETE(ID)SC_QINQUIRY(ID)
Une file doit être créée en faisant une demande auprès de VRTX (SC_QCREATE/SC_QECREATE) spécifiant un numéro d'identification et le nombre maximum de messages acceptés par la file à un instant donné.
Là encore le message échangé est un mot de 32 bits. Une file à une seule position est équivalente à une boite aux lettres.
Une tâche ou une ISR peut envoyer un message vers la file (SC_QPOST FIFO). Si celle-ci est pleine un code d'erreur est renvoyé.
Une autre tâche ou ISR peut lire un message (en principe le premier envoyé FIFO) par une demande de lecture sans attente (SC_QACCEPT), avec attente (SC_QPEND seulement pour les tâches) avec ou sans time-out.
Un message urgent peut être placé en tête de liste (SC_QJAM LIFO). Même si la file est pleine, VRTX autorise encore un message de type urgent, mais un seul.
Il est possible de connaître le nombre de messages dans la file et le contenu du premier sans le dépiler (SC_QINQUIRY)
Lorsque plusieurs tâches attendent, la première arrivée ou la plus prioritaire sera servie la première suivant une option à la création de la file.
Une file sert donc surtout à réguler les transmissions d'information lorsque le récepteur n'est capable de les traiter à la cadence de l'émetteur qu'en moyenne.
Déclarations :extern void sc_qcreate(int qid, int qsize, int *err); /* priorité */extern void sc_qecreate(int qid, int qsize, int opt, int *err); /* 0=priorité 1=fifo */extern char *sc_qaccept(int qid, int *err);extern char *sc_qinquiry(int qid, int *count, int *err);extern void sc_qjam(int qid, char *msg, int *err);extern char *sc_qpend(int qid, long timeout, int *err);extern void sc_qpost(int qid, char *msg, int *err);
11/09/2023
26
Le temps réel - VRTX
3. LES GROUPES D'EVENEMENT
Un événement (event flag) est un signal binaire.
ISR
0 1 0
SC_FPOST
TASK
EVENT FLAGET
OU
SC_FPEND
SC_FPOST
ID = SC_FCREATESC_FDELETE(ID)SC_FINQUIRY(ID)
VRTX gère des groupes de 32 événements codés sur un mot de 32 bits.
Un groupe d'événement est créé sur demande à VRTX (SC_FCREATE) qui retourne un numéro d'identification, et peut être détruit (SC_FDELETE).
Une tâche ou une ISR peut positionner (SC_FPOST) ou effacer (SC_FCLEAR)un sous-ensemble du groupe.
Une tâche peut se mettre en attente d'un sous-ensemble du groupe d'événement (SC_FPEND) sur une disjonction (OU) ou une conjonction (ET) des événements, avec ou sans time out Un test plus fin peut ensuite être réalisé par une lecture du groupe (SC_FINQUIRY).
L'événement est le mécanisme tout désigné pour un déclenchement sans information d'une tâche ou l'attente d'un ensemble de conditions.
Déclarations :extern int sc_fcreate(int *err);extern void sc_fdelete(int group_id, int force, int *err); /* force : 0 si vide, 1 delete task pending */extern long sc_finquiry(int group_id, int *err);extern long sc_fpend(int group_id, long timeout, long mask, int opt, int*err); /* 0=or 1=and */extern void sc_fpost(int group_id, long mask, int *err);extern long sc_fclear(int group_id, long, int *err);
4. LE SEMAPHORE
Le sémaphore un mécanisme d'exclusion mutuelle pour l'accès à une ressource. C'est probablement le premier utilisé par les systèmes d'exploitation.
11/09/2023
27
Le temps réel - VRTX
TACHE A
TACHE B
RESSOURCE
1
0SC_SPEND
SC_SPENDSC_SPOST
ID = SC_SCREATESC_SDELETE(ID)SC_SINQUIRY
VRTX crée un sémaphore sur demande (SC_SCREATE) et retourne un numéro d'identification. Il peut également le détruire par (SC_SDELETE).
Lorsqu'une tâche veut accéder à la ressource protégée, elle le demande (SC_SPEND). Si la ressource est déjà occupée, la tâche est mise en attente (avec ou sans time out), sinon elle continue à s'exécuter, la ressource lui est alors réservée. Lorsque son travail est terminé, elle doit le libérer (SC_SPOST).
Certaines ressources peuvent supporter plusieurs utilisations simultanés. Le nombre d'utilisateurs simultanés acceptés doit être indiqué à la création.
Le sémaphore est en fait un compteur initialisé avec le nombre d'utilisateurs admis, décrémenté lors des réservations, incrémenté lors des libérations, et dont la valeur nulle indique un blocage de l'accès à la ressource.
Enfin, l'état d'un sémaphore peut être testé (SC_SINQUIRY).
Il est préférable d'utiliser une tâche ou une ISR accessible par une boite aux lettre ou une file pour gérer une ressource. Le sémaphore doit rester réserver dans les cas de CONTRAINTES temporelles qui exigent de limiter les transitions entre tâches.
Déclarations :extern int sc_screate(int sem_init, int opt, int *err); /* opt 0=priorité 1= fifo */extern void sc_sdelete(int sem_id, int opt, int *err); /* opt 0=ssi vide 1=task pending */extern int sc_sinquiry(int sem_id, int *err);extern void sc_spend(int sem_id, long timeout, int *err);extern void sc_spost(int sem_id, int *err);
11/09/2023
28
Le temps réel - VRTX
5. L'ALLOCATION DYNAMIQUE DE MEMOIRE
SC_PCREATE
SC_PEXTEND
TACHEA
TACHEB
SC_GBLOCK SC_RBLOCK
Pour ses besoins personnels VRTX utilise des tables de dimension fixe.Lorsqu'on utilise une file, le mot de 32 bits mémorisé est bien sûr insuffisant. Il ne peut contenir que l'adresse du bloc de données constituant réellement le message.
Pour ce type de besoin, VRTX fournit des fonctions d'allocation dynamique de mémoire. La tâche émettrice réserve un bloc de mémoire qu'elle initialise avec les information à transmettre, qu'elle envoie dans la file. La tâche réceptrice peut libérer cette mémoire lorsque elle a finit de la traiter.
L'allocation et la libération de zones variables met en oeuvre des algorithmes parfois incompatibles avec le temps réel. exemple les algorithmes de compactage des "trous" qui bloquent un système quelques secondes lorsque des suites de réservation-libération ont transformé la mémoire en un vaste gruyère.
VRTX propose des ressources de partitions mémoire dont chacune contient un ensemble de blocs de taille identique.
L'utilisateur crée la ressource en donnant un numéro d'identification, l'adresse de début de la zone contiguë, la taille de la partition, la taille d'un bloc (SC_PCREATE). La partition peut être étendue (SC_PEXTEND) avec d'autres zones contiguës.
Un bloc peut ensuite être réservé (SC_GBLOCK) par une tâche ou une ISR, puis libérée (SC_RBLOCK).
Déclarations :extern void sc_pcreate(int pid, char *paddr, long psize, long bsize, int *err);extern void sc_pextend(int pid, char *paddr, long psize, int * err);extern char *sc_gblock(int pid, int * err);extern void sc_rblock(int pid, char *block, int * err);
11/09/2023
29
Le temps réel - VRTX
VI. LES EXTENSIONS DE VRTX
VRTX comporte un certain nombre de couches additionnelles :
A. IFX
IFX (Input/output and File eXecutive) offre des services d'entrée sortie classiques mais en garantissant toutes les caractéristiques temps réel de VRTX.
Les requêtes sont analysées par un dispatcher qui les oriente suivant la catégorie :
DISQUES
FILES BUFFERISEES1. GESTION DE DISQUE
Cette gestion est compatible MSDOS jusqu'à la version 4.0.
Plusieurs modèles de drivers sont disponibles pour disque dur, disque souple et RAM disque.
NOMFICHIER
CACHE
NOMCACHE
NOMPHYSIQUE
SERIE
DRIVER PHYSIQUE
2. GESTION DE FILES BUFFERISEES
Ces files permettent de gérer des périphériques octets, avec gestion de buffer tournant et d'édition de ligne.
On dispose des mêmes fonctions de base que pour la gestion de disque à l'exclusion de celle spécifiques des disques (disque, fichier, volume, etc)
Plusieurs modèles de drivers sont disponibles pour liaison série, terminaux sur liaison série (écho, backspace/erase, line erase, tab conversion...), pipe (tampon tournant unix), périphérique nul, gestion d'horloge.
11/09/2023
30
Le temps réel - VRTX
Il est également possible de gérer des imprimantes, des périphériques en accès par blocs avec des drivers qu'il faut écrire ou se procurer auprès d'autres fournisseurs.
Ces files sont utilisable comme des fichiers, simplement le nom du périphérique est donné à la place du nom de fichier
3. LES FONCTIONS D'IFX
Pour chaque volume, ligne asynchrone, ou terminal, IFX peut créer des tâches ordinaires VRTX en serveur.
Il existe plusieurs niveaux d'accès à un périphérique sélectionné par un nom donné en argument : - nom du fichier : gestion logique de fichiers (style disque), - nom du cache : gestion binaire à travers une mémoire cache (ssi disque), donner le - nom de périphérique physique : accès direct au driver,
La gestion compatible MSDOS de IFX comprend :
l'installation d'un périphérique association nom logique, nom physique (ifx_install), montage de volume avec gestion de cache (ifx_mount ) et formatage possible. la desinstallation (ifx_remove) ou la mise hors ligne (ifx_offline), l'installation/la desinstall de driver (ifx_driver/ ifx_rmdriver)
un périphérique système commun à toutes les tâches (ifx_ssystem, ifx_gsystem), un périphérique par défaut par tâche utilisatrice (ifx_sdefault, ifx_gdefault), gestion de catalogue (ifx_mkdir, ifx_rmdir, ifx_rename), catalogue par défaut (ifx_swkdir, ifx_gwkdir), gestion fichier (ifx_create, ifx_delete, ifx_gpath, ifx_rename, ifx_open, ifx_close,
ifx_devnam, ifx_gaccmode, ifx_dup, ifx_close, ifx_closed), lecture/écriture avec attente (mode synchrone)
mode normal (ifx_read, ifx_write), par secteur (ifx_reads, ifx_writes), avec positionnement (ifx_readp, ifxwritep) opérations diverses (ifx_ioctl, ifx_devctl) sans attente en scrutation ou réception d'événement (mode asynchrone : ifx_open,
ifx_astart, ifx_afstart, ifx_inquiry, ifx_await, ifx_acancel, ifx_close)
attributs de fichiers (ifx_gfalloc, ifx_sfalloc, ifx_gfattr, ifx_sfattr, ifx_gftime, ifx_sftime, ifx_gflength, ifx_sflength, ifx_gfreserved, ifx_sfreserved, ifxgfextent, ifxlockf, ifx_unlockf)
4. LE BOARD SUPPORT PACKAGE
L'utilisateur doit fournir un "board support package" comprenant : initialisation, tables de configuration, les drivers.
Ce board support package est réutilisable par toute application utilisant le même matériel.
Un driver travail en association avec un descripteur (IFXDCB). Il peut utiliser les mécanismes standards de VRTX plus une implantation plus rapide des sémaphores (ifxvisi.h)
11/09/2023
31
Le temps réel - VRTX
Le driver doit être composé : d'une fonction qui reçoit les ordre d'IFX, d'ISR qui peuvent réaliser les traitements sous interruption complémentaires.
La fonction doit traiter les fonctions : installation / désinstallation de driver / périphérique, opérations de contrôle, arrêt d'opération asynchrone, fonctions spécifiques disques :
lecture écritures de secteurs, opérations de contrôle, formatage de piste, nettoyage de tampon, vidage de tampon, arrêt d'opération asynchrone,
fonctions spécifiques lignes séries : installation de périphérique, opérations de contrôle, arrêt d'opérations asynchrone,
fonctions spécifiques horloge : lecture écriture de l'heure,
fonctions spécifiques catalogue (en option): création de fichier/catalogue, destruction de fichier/catalogue, renommer, catalogue courant, marquage de secteur erroné, ouverture (obligatoire)
B. RTSCOPE
RTscope est un debugger temps réel associé avec VRTX.
Caractéristiques principales : opère en parallèle avec le système multitâche, affichage en clair des structures de données VRTX, positionnement de points d'arrêt sur les appels VRTX, appel interactif des primitives de VRTX (test), pilotage d'un calculateur, à travers le terminal de commande de RTSCOPE, syntaxe et affichage configurable, affichage et modification des registres (680XX, 6888X), désassemblage, assemblage ligne, 16 points d'arrêt, pas à pas, téléchargement de binaire, console RTSCOPE et console VRTX communes ou indépendantes, interruption possible de l'application, définition de symboles, installation sans VRTX possible,
C. MPV
MPV est un complément mulprocesseurs de VRTX, avec 25 primitives nouvelles : passage de message et synchronisation, noms globaux d'objets, mémoire globale et gestion de ressource, appel de procédures sur d'autres processeurs, transferts de données, gestion de mémoire commune.
11/09/2023
32
Le temps réel - VRTX
La communication est indépendante de la liaison disponible : la mémoire globale, liaison RS232,
mais une zone de mémoire commune est indispensable.
D. RESEAUX
Ces composent exigent un contrôleur Excelan 202 ou 302 Ethernet :
TNX est un complément permettant la communication de l'application VRTX sur un réseau suivant le protocole TC/IP.
Hyperlink permet un téléchargement rapide en provenance d'une station SUN unix, VMSLink permet un téléchargement rapide en provenance d'une machine VAX,
E. WIX
Ce composant ne sert que sur P.C. Il consiste en une tâche VRTX qui gère un ensemble de fenêtres alphanumériques se partageant l'écran du P.C. Il est surtout utilisé en interne par VRTX pour l'entrée sortie console et par RTSCOPE pour ses multiples fenêtres de travail.
Dans le cadre du mini-projet, on pourra utiliser les fonctions : ouverture de fenêtre : fenetre_id = wiopen(int ligdeb, int coldeb, int ligfin, colfin, (char
*)titre, int option=0, int flag=WOVRTX, int *err); affichage de chaîne : extern void wiput(int fenetre_id ,char *chaine,int ligne,int
colonne,int couleur=0 , int opt=WPCPOS,int* err);
11/09/2023
33
Le temps réel - VRTX
VII. LA CONCEPTION
La conception s'exécute en trois étapes : L'architecture logique qui donne les fonctionnalités indépendement des ressources
disponibles, L'architecture dynamique qui donne le découpage en tâches et les communications inter-
tâches ou driver, L'architecture physique qui donne le découpage en modules et l'interface de ces modules,
Un exécutif temps réel est concerné par la seconde architecture. Un outil de conception CARDTOOLS dispose d'un symbole graphique pour chaque concept de VRTX, avec en plus : la notion de sous-système permettant à un niveau de regroupper dans un seul rectangle un
ensemble cohérent de tâches, décomposées au niveau inférieur, la notion de rendez-vous ADA.
CARDTOOLS connait les temps d'exécution des primitives VRTX et est capable de calculer le temps d'un chemin de données ou de sortir des chronogrammes pour les versions les plus évoluées.
11/09/2023
34
Le temps réel - VRTX
VIII. LES AUTRES MONITEURS
11/09/2023
35
Le temps réel - VRTX
IX. ANNEXES
A. PROTOTYPE DES FONCTIONS VRTX
#ifndef TCBB#include "vrtxvisi.h"#endif
TACHESextern void sc_tcreate(void (*)task(), int tid, int pri, int *err);extern void sc_tdelete(int tid_pri, int code, int *err);extern struct TCB *sc_tinquiry( int*info, int tid, int *err);extern void sc_tpriority(int tid, int pri, int *err);extern void sc_tresume(int tid_pri, int code, int *err); /* code =0 tid / code = 'A' priorité */extern void sc_tsuspend(int tid_pri, int code, int *err);extern void sc_lock(void);extern void sc_unlock(void); MAILBOXextern char *sc_accept(char ** mbox, int *err);extern char *sc_pend(char ** mbox, long timeout, int *err);extern void sc_post(char ** mbox, char *msg, int *err); FILEextern void sc_qcreate(int qid, int qsize, int *err); /* priorité */extern void sc_qecreate(int qid, int qsize, int opt, int *err); /* 0=priorité 1=fifo */extern char *sc_qaccept(int qid, int *err);extern char *sc_qinquiry(int qid, int *count, int *err);extern void sc_qjam(int qid, char *msg, int *err);extern char *sc_qpend(int qid, long timeout, int *err);extern void sc_qpost(int qid, char *msg, int *err); EVENT FLAGextern int sc_fcreate(int *err);extern void sc_fdelete(int group_id, int force, int *err); /* force : 0 si vide, 1 delete task pending */extern long sc_finquiry(int group_id, int *err);extern long sc_fpend(int group_id, long timeout, long mask, int opt, int*err); /* 0=or 1=and */extern void sc_fpost(int group_id, long mask, int *err);extern long sc_fclear(int group_id, long, int *err); SEMAPHOREextern int sc_screate(int sem_init, int opt, int *err); /* opt 0=priorité 1= fifo */extern void sc_sdelete(int sem_id, int opt, int *err); /* opt 0=ssi vide 1=task pending */extern int sc_sinquiry(int sem_id, int *err);extern void sc_spend(int sem_id, long timeout, int *err);extern void sc_spost(int sem_id, int *err); HORLOGEextern long sc_gtime(void);extern void sc_stime(long tick);
11/09/2023
36
Le temps réel - VRTX
extern void sc_delay(long tick);extern void sc_tslice(unsigned int ticks); MEMOIREextern void sc_pcreate(int pid, char *paddr, long psize, long bsize, int *err);extern void sc_pextend(int pid, char *paddr, long psize, int * err);extern char *sc_gblock(int pid, int * err);extern void sc_rblock(int pid, char *block, int * err); ENTREE/SORTIEextern int sc_getc(void);extern void sc_putc(int chr);extern void sc_waitc(int chr, int *err); EXTENSIONSextern void sc_call(int fcode, void * pkt,int *err);
B. COMPLEMENT SUR VRTX
1. LICENCE DE DEVELOPPEMENT :
Cette licence est calculée en fonction du nombre de developpeurs et pour un microprocesseur. (68000, 60020, etc)
- VRTX : 35 kf + 7 kf/utilisateur supplémentaire - IFX : 26 kf + 5.2 kf/u - RTSCOP : 15 kf + 3 kf/u - MPV : identique à IFX
Nous possédons une licence de développements illimités pour VRTX, IFX, RTSCOPE pour 68000/68020.
Licence de recopie par unité de vrtx implantée en PROM :
Elles sont dépendantes du nombre total d'unités.
- VRTX 2650 frs/u (1 à 24), 1990 frs/u (25 à 99), 950 frs au delà - IFX 1610 frs/u (1 à 24), 1135 frs/u (25 à 99), 710 frs au delà Licence de recopies illimitées / site VRTX 1applicatio
nnapplications
1micro 360kf 850kf2micros 650kf 1250kf3micros 900kf 1500kf '
IFX 1application
napplications
1micro 300kf 700kf2micros 540kf 950kf3micros 760kf 1100kf '* attention 68000 68020 = 2 micros
11/09/2023
37
Le temps réel - VRTX
2 cartes CPU programmées différemment = 2 applications Assistance maintenance 12%/an d'une licence de développement unitaire. Nous achetons les licences VRTX IFX 1500frs / unité
2. CARACTERISTIQUES PHYSIQUE
Moniteur CESAR
PSOS VRTX
Multi processeur nb/option 127 max
pRISM opt.MPV
Taches nombre maximum 1023 64 ? 255Taille Noyau 12 Ko 5 Ko 8 koMultiproc. 00 Ko 10Ko 16 KoE/S 38 Ko Fichiers 16ko 26 KoPerformances fixes ? non ouicalculables ouiTemps de masquage des its en us
? 29 33
max.primitive systeme 300 299? 299chang.de contexte 200? 70 40Supp. de tache ? 233 194avec chang.de tache ? 299 225Changement priorite ? 133 238avec chang.de tache ? 200 278Réception sur file ? 102 84Emission sur file ? 132 85file non vide ? 152 133Positionn.evenement ? 83 85avec chang.de tache 504 205 219Pause depause tache 448 324 525
Les temps ont ete alignes sur cible 68000/68010 a 10 Mhz.
3. PERFORMANCES
Moniteur CESAR PSOS VRTXTime slicing possible non oui ouiSéquencement Circulaire non non ouiBlocage du Séquencement non non ouiNb d'événement dans un 1 15 31groupe combinables ? ? et/ouSémaphores non non Dijkst.Boite aux lettres non non ouiFiles FIFO oui oui ouiavec gestion priorite non oui ouiinsertion LIFO non oui ouiblocs d'e/s oui non nonGestion Mémoire Dynamique
oui oui oui
partitionnée oui possib ouiAssociable a une e/s oui non non
11/09/2023
38
Le temps réel - VRTX
Gestion d'Horloge oui oui ouiCadencement oui non nonAttente de delai oui oui ouiTime out intégrés aux appels non
oui oui
4. FONCTIONS
Moniteur CESAR PSOS VRTXEntrees Nombre 255 ? 1e 1s/sorties Taille des blocs varia. ? 1Taille de la file varia. 1 64Entrees en option IOX/sorties tampons
circu.Option gestion de disque
non phile FMX
compatibilitee commandes
Unix
compatibilitee format IBM/PC MSDOS3.3taille max des disques ? 4 gigabufferisation oui ouiFonctions ana.perform. non ? ouicomplement. co processeur
oui ? oui circu.
C. BIBLIOGRAPHIE
Support de cours TEMPS REEL - READY SYSTEMS france Apside technologie
Sceptre : proposition de noyau normalisé pour les exécutifs temps réelVRTX32 user's guide READY SYSTEMSEvaluation des exécutifs multitâches-tâches temps réel et systèmes d'exploitation multitâches-tâches temps réel sur IBM PC ou compatible, LEMAIRE GérardVRTX32:680X0 Timing Reference Software Release 1 Document Number 540011001 May 1987
11/09/2023
39
top related