0% ont trouvé ce document utile (0 vote)
4 vues79 pages

Introduction aux systèmes d'exploitation embarqués

Ce document décrit les systèmes d'exploitation embarqués, leurs composants et caractéristiques, ainsi que les systèmes d'exploitation en temps réel.

Transféré par

Amadou GAYE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues79 pages

Introduction aux systèmes d'exploitation embarqués

Ce document décrit les systèmes d'exploitation embarqués, leurs composants et caractéristiques, ainsi que les systèmes d'exploitation en temps réel.

Transféré par

Amadou GAYE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Systèmes d’exploitation

embarqués

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Plan
• Introduction aux systèmes d'exploitation
embarqués
– Comparaison avec les systèmes d'exploitation de bureau
– Caractéristiques des systèmes d'exploitation embarqués
• SE en temps réel
– Exigences
– Classification des SETR (RTOS)
• Introduction à MQX, SYS/BIOS et exemples de
code

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Système d’exploitation?
• Ensemble de logiciels pour l’exploitation
des ressources d’un système ordiné
• Forme une interface
entre applications et
matériel
– Pilotes des périphériques
– Fonctions de service pour les applications
• Les versions de
bureautique incluent
minimalement des
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
fonctions de gestion du clavier, de l’écran
et d’un système de fichiers sur disque

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Composants d’un SE
• Le noyau (kernel)
– Fonctions de base pour gérer la mémoire, les tâches
exécutées, les fichiers, les entrées‐sorties principales, et
les fonctionnalités de communication.
• L'interpréteur de commande (shell)
– Permet de communiquer avec le noyau via un langage
de commande prédéfini
• Une version à ligne de commande alphanumérique
coexiste souvent avec une version à interface
graphique (GUI)
• Le système de fichiers (file system ou FS)
– Permet d’enregistrement des fichiers dans une structure

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
de répertoires arborescente.

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Topologie générale d’un SE
• Trois couches logicielles entre les applications et le matériel

Applications

Plate-forme
Professionnelle
Interface
Biblio HM
Programmes
Services
Gestion
Base Gestion
Données
fichiers
Noyau Objets
Gestion
Ordonnanceur
Horloge Gestion
Messagerie Gestion MV Gestion
Gestion IT
mémoire Tâches
Pilotes
Sémaphores
Matériel

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Types de SE
• Monoprocesseur, monotâche
– Le SE alloue le CPU à un seul programme à la fois.
Tant que celui‐ci est en exécution, aucun autre ne
peut s’exécuter (MS‐DOS)
• Monoprocesseur, multitâche
– Le SE répartit le temps de CPU entre plusieurs
tâches, en utilisant un mécanisme de préemption
(priorité ; Windows, Unix, Mac OS)
• Multiprocesseur, multitâche
– Le SE répartit l’exécution de tâches multiples sur
plusieurs CPUs et assure leur synchronisation pour le
partage des ressources (SE parallèles et exécutifs à
temps réel)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Application, tâche et état
• Un programme (application) consiste en tâches
qui travaillent de concert pour réaliser l’objectif
visé
• Le noyau du SE place chaque tâche dans 4
états d’exécution possibles.
– Active : est en cours d’exécution (1 seule à la fois et par
CPU)
– Prête : en attente de temps CPU (il peut y avoir plusieurs)
– Suspendue : en attente d’un évènement pour la rendre
prête (il peut y en avoir plusieurs)
– Inactive: ne participe plus à l’activité du système (il peut
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
y en avoir plusieurs)

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Dynamique des états
• Évolue suivant un automate logiciel à états finis
active

Terminer Condition d’attente

inactive sélection attente


préemption
Arrêter Condition de libération
Démarrer
tâche
tâche

Prête

• L’information pertinente par rapport à l’environnement


d’exécution est sauvée dans des structures de contexte (Task
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
control blocks)

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Environnement d’execution
des
tâches
• Comprend trois zone en mémoire
• Zone de programme accessible en mode lecture
– Volatile (RAM) ou non volatile (Flash)
• Zone de données accessible en
mode lecture/écriture
– Volatile en général
• Zone de pile pour stocker les informations
temporaires, accessible en mode lecture/écriture
– Volatile

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Bloc de contrôle de tâche
• Structure indiquant le statut Bloc de contrôle de tâche Pile

d’une tâche dans Pointeur de pile Registres

l’environnement d’exécution Priorité Restant de la pile…

– Contenus des registres du CPU État

– Contenu des pointeurs de Autres données

programme, de données et de la
pile
– Identifiant, priorité, droits d’accès,
et état d’exécution courant

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Ordonnancement des tâches
• Fonction majeure du noyau
• Fait par un répartiteur logiciel qui intervient à
chaque fois qu’une modification d’état doit avoir
lieu
– Alloue le CPU à une tâche parmi celles admissibles
– Gère le déblocage de tâches en attente et la
commutation de tâches actives
• Mécanismes
– Préemption de la tâche active suite à un évènement
(droit de priorité)
– Allocation de temps de CPU égalitaire (round robin)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
– Commutation de contexte programmée

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Le répartiteur (dispatcher)
• Réalise le choix de la tâche active et le
changement de contexte associé

Processeur
Ordonnanceur

Tâche élue

Répartiteur
File d’attente des tâches suspendues
File d’attente des
tâches admissibles

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Commutation de tâche et
commutation de contexte
• Commutation des tâches
– Arrêt du traitement de la tâche en cours au profit d’une
autre
– Provoquée par
• demande explicite de la tâche en cours (attente,..)
• décision de l’ordonnanceur (tâche plus prioritaire active)
• réponse prioritaire à un phénomène externe
• Commutation de contexte
– Sauvegarde de l’état des registres du processus courant
et restauration de l’état des registres d’un nouveau
processus
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
– Effectuée lors d’un appel au noyau ou lors de
l’occurrence d’une interruption

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Commutation de tâche et de
contexte

• Modèle préemptif
Recherche de la tâche en
attente de plus haute priorité
Sauvegarde Restauration
Contexte tâche 1 Contexte tâche 2

p mp
tâche 1 r tif
é
Évènement e
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
tâche 2 Priori
té de
tâch
e

temps

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Commutation de tâche et de
contexte

• Modèle non-préemptif

Recherche de la tâche en
attente de plus haute priorité
Changement d’état
de tâche 2 à prête

n réemp
tâche 1 o tif
n
Évènement tâche 1
p
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
tâche 2 Pri
orit
é
Commutation de
de
contexte
tâc
he

temps

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Les critères de sélection
• La politique de sélection de l’ordonnanceur
répond à des contraintes spécifiques :
– Temps de CPU donné pour chaque tâche
– Respect de l’ordre de priorité des tâches
– Respect d’un temps de réponse donné
– Préemption d’une tâche qui monopolise le processeur
• En général, l’invocation de l’ordonnanceur s’effectue
sur :
– Mise en attente ou réveil d’une tâche
– Changement de priorité d’une tâche
– Réquisition du CPU au profit d’une tâche plus prioritaire
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
L’ordonnancement
• La manière de gérer les files d’états à une incidence sur
les performances d’un système.
• LIFO (pile) ou FIFO (liste, file, queue)
– Les tâches prêtes sont organisées en files doublement chaînées
par l’intermédiaire de leur blocs descripteurs
Tâche active
Ordonnanceur

File des tâches prêtes

Tableau pointeur File des tâches en


vers les différentes attente d’événements
files
File des tâches en attente
sur sémaphore (mutex)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Système Codage Mono‐utilisateur Multi‐utilisateur Mono‐tâche Multitâche

DOS 16 bits X X

Windows3.1 16/32 bits X non


préemptif

Windows95/98/Me 32 bits X coopératif

WindowsNT/2000 32 bits X préemptif

WindowsXP/7/8 32/64 bits X préemptif

Unix / Linux 32/64 bits X préemptif

MAC/OS X 32 bits X préemptif

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Système d’exploitation embarqué
• L’application et le SE sont fusionnés
• Caractéristiques :
– Le code du SE et celui de l’application résident
dans de la mémoire non volatile
– La gestion des ressources
est spécifique à celles
présentes
– Moins de surcharge
de traitement
(overhead)

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
SE de bureau vs. SE embarqué
• SE de bureau : l’application est
compilée/assemblée séparément du
SE
– Au démarrage du système, le SE est lancé en premier
• SE embarqué : l’application est
compilée/ assemblée et liée de
concert avec le SE
– Au démarrage du système, l’application est lancée en
premier; elle part le SE ensuite
– Seuls les composants du SE (services, routines, ou
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
fonctions) requis par l’application sont ajoutés au code
exécutable par l’éditeur de lien

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Caractéristiques des SE embarqués
• Configurabilité nécessaire
– Pas de SE pour tous, configurabilité nécessaire pour
éviter les surcharges/gaspillages dus à du code non
utilisé
• Techniques pour implémenter la configurabilité
– Ne pas inclure les fonctions non utilisées (fait par
l’éditeur de liens)
– Compilation/assemblage conditionnel (directives #if
et #ifdef)
de la
– Évaluation et optimisation au
moment compilation/assemblage

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Caractéristiques des SE embarqués
• Les pilotes de périphériques sont typiquement
laissés au développeur
– Applications spécifiques  Pilotes à développer soi‐même
• Dans le cas des SE du bureau, des dispositifs standards
sont supposes toujours présents (disques, Ethernet,
audio, etc.)
 les pilotes font partie de la dernière couche basse du SE

Embedded OS Standard OS

kernel
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Caractéristiques des SE embarqués
• Protection pas toujours obligatoire
– Dû aux applications dédiées, les programmes
non testés sont rares et le logiciel est
considéré fiable
• Donc, pas besoin d’accès privilégiés aux d’E/S et
les tâches s’en occupent

Par exemple, l’accès à une adresse d’e/s switch est


fait par l’instruction
mov register,switch
au lieu d’utiliser un appel au SE

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Caractéristiques des SE embarqués
• Les interruptions ne sont pas restreintes au seul SE
– Les programmes embarqués sont supposés être testés
 pas besoin de protection contre les mauvais usages
– De plus, le contrôle efficace des ressources est requis
 on peut démarrer et arrêter des tâches par
interruptions  commutation de tâches plus
efficace que des appels de service au SE
• Dans les SE standard, serait une source de non‐fiabilité

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Caractéristiques des SE embarqués
• Fonctionnement en temps réel typique
– Plusieurs systèmes embarqués opèrent en temps réel ‐>
Le SE permet des temps de réponse déterministes
(SETR ou RTOS)
• Caractéristiques générales d’un SETR:
– Gestion de l’exécution de tâches multiples
– Ordonnancement de tâches priorisé
– Synchronisation des accès au matériel
– Déterminisme temporel
– Gestion des interruptions

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Plan
• Introduction aux systèmes d'exploitation
embarqués
– comparaison avec les systèmes d'exploitation de bureau
– caractéristiques des systèmes d'exploitation embarqués
• Introduction aux SE en temps réel (RTOS)
– exigences pour un SE d'être en temps réel
– Classification des RTOS
• Introduction à MQX et exemple de code

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Système à temps réel
• Système ordiné comprenant des tâches avec des
contraintes temporelles.
• Garantit des réponses avec des échéances
fixées (contraintes strictes) ou des temps de
réponse bornés (contraintes relatives)
• Exemples
▪ Systèmes de contrôle de procédé : usines, centralesélectriques;
▪ Systèmes aéronautiques : guidage missiles, avions, satellites;
▪ Équipements industriels : machines/outils, robots de production
;
▪ Systèmes multimédia mobiles : webcam, réalité virtuelle

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Exécution déterministe
• Comportement du SE prévisible et borné dans
le temps
• Limite supérieure pour le temps d’exécution
des services offerts
• Périodes de blocage des interruptions courtes
(pour garantir le traitement à temps d’évènement
critiques)
• Fourniture de services de durée prédéterminée
et synchronisable
• Important si la synchronisation doit être
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
maintenue avec une horloge externe

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Pour garantir le respect de limites temporelles:

• les différents traitements ne dépassent pas leurs


limites temporelles  vérifié à l'aide d’un test
d'acceptabilité

• Une tâche est généralement caractérisée par un temps


de calcul Ci, et par une période d’exécution Ti.

• Pour tout système de n tâches :

• Une valeur > 1 signifie un temps d'exécution > à ce que


le uP peut fournir.
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Modèle de système en temps réel

Modèle de tâches périodiques


Les paramètres sont connus à priori

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Modèle en temps réel (suite)
Modèle temporel
le plus utilisé
Efficace
Plus d’espace temporel
ex. exécution
cyclique 0 3 6

Modèle par priorité


Priorité dynamique
ex. “earliest deadline
first”
Priorité statique
ex. “rate monotonic” 0 3 6

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Système d’exploitation en temps réel
e La division en tâches multiples peut créer
des problèmes !
—Compétition entre tâches
—Verrouillage
—Réentrance du code
—Délais de communications
—Etc.
e Les systèmes d”expIoitation en temps réel offrent
les mécanismes de gestion adéquats
I/O Perils

Task 1
“Hi There”

Terminal

Task 2 “HHio wTdhyere”

“Howdy”

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Fonctions du noyau RTOS
• Gestion de
:
Resources
– CPU
– Mémoire
– Horloges de temporisation
– Exécution des tâches (lancement, suspension,
arrêt, reprise, etc.)
– Communication et synchronisation inter tâches

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Pourquoi utiliser un RTOS?
• Concentration sur l’application, et non sur
l’exécution de tâches
– Gestion automatique du temps de CPU entre
unités d’exécution (threads), suivant un critère de
sélection prédéfini (priorité ou autre)
– Synchronisation de l’accès aux ressources
• Ajout/retrait de modules fonctionnels sans
modifier l’application existante
• Services aux périphériques quand
disponibles, incluant des protocoles de
communication:
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
– TCP/IP, USB, serveurs Web, WI‐FI, communication CAN,
etc.

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Classification des RTOS
• RTOS à noyau RT
– Généralement conçu pour la rapidité de réponse.
– Peut être inadapté aux systèmes complexes, car
priorisation de la rapidité sur la prédictibilité
– En général propriétaire : QNX, PDOS, VCOS,
VTRX32, VxWORKS
• SE standard à noyau non‐RT modifié
– Extension RT gère l’exécution des tâches et considère le noyau
standard comme l’une d’elles pour les réponses en temps réel
• Interface de programmation d’applications
(API) standard versus dédiés
– p. ex. POSIX extension‐RT d’Unix, ITRON, OSEK
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Ex.: RT‐Linux
Init Bash Mozilla
• RT‐tasks
ne peuvent pas utiliser d’appels
SE standard
scheduler
([Link])
Linux-Kernel
RT-Task RT-Task
driver
interrupts
RT-Scheduler
RT-Linux interrupts
I/O
interrupts

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Hardwar

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Ex.: Posix RT‐extensions à Linux
• Le céduleur POSIX remplace le céduleur standard
pour implémenter des priorités d’exécution en
temps réel
RT-Task RT-Task Init Bash Mozilla

 Appels au SE temps réel


POSIX 1.b scheduler et standard disponibles
Linux-Kernel  Programmation facile,
driver mais sans garantie de
respect absolu des délais

I/O, interrupts

Hardware
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Plan
• Introduction aux systèmes d'exploitation
embarqués
– comparaison avec les systèmes d'exploitation de bureau
– caractéristiques des systèmes d'exploitation embarqués
• Introduction aux SE en temps réel
– exigences pour un SE d'être en temps réel
– Classification des SETR (RTOS)
• Introduction à MQX, SYS/BIOS et exemples de
code

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
40

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
MQX
• RTOS à temps réel de Freescale
• Gestion d’unités d’exécution multiples
(threads)
organisées par priorité
– Ordonnancement des tâches et gestion des états
– Gestion des interruptions
– Synchronisation des tâches par mutex,
sémaphores, évènements, messages
– Gestion de la mémoire
– Services d’e/s
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
– Journal des activités

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Facilités offerte par MQX
Requis

Optionnel

Les différent composants


forment un ensemble de
fichiers en c qui forment une
librairie liée à l’application de
l’usager et compilée dans le
même espace mémoire.
Seules les fonctions utilisées
sont incluses dans le code
exécutable

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
The Mutex

Acquire_mutex;
Access_device;
Release_mutex;

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Semaphores

AtoD_Read (uint16 *result)


{
start ADC conversion ADC_ISR (void)
wait for semaphore {
Read A/D release semaphore
return result clear interrupt
} }

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Message Queues

Rx ISR
Message queue

Serial Stream
Rx Task

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Tâches dans MQX
• Les applications exécutées sous MQX
sont organisées en tâches diverses
• Les tâches tournent à tout de rôle, avec
une seule active (exécutée par le CPU) à tout
moment
– MQX gère les commutations de contexte
qui partagent le temps de CPU entre les
tâches
• Contexte d’une tâche
– Structure logicielle définie pour chaque
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
tâche, stockant les registres, pile, état et les
ressources propres à la tâche

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Hello World
#include <mqx.h>
#include <bsp.h>
#include <fio.h>
/* Task IDs */
#define HELLO_TASK 5
extern void hello_task(uint_32);
const TASK_TEMPLATE_STRUCT MQX_template_list[] = {
/* Task Index, Function, Stack, Priority, Name,
Attributes, Parameters, Time Slice
*/
{HELLO_TASK, hello_task, 1500, 8, "hello",
MQX_AUTO_START_TASK, 0, 0 },
{ 0 }
};

void hello_task(uint_32 initial_data)


{ printf("Hello World\n");
_task_block();
}

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Hello World 2 (1/2)

#include <mqx.h>
#include <bsp.h>
#include <fio.h>
/* Task IDs */
#define HELLO_TASK 5
#define WORLD_TASK 6
extern void hello_task(uint_32);
extern void world_task(uint_32);
const TASK_TEMPLATE_STRUCT MQX_template_list[] = {
/* Task Index, Function, Stack, Priority, Name,
Attributes, Parameters, Time Slice */
{WORLD_TASK, world_task, 1000, 9, "world",
MQX_AUTO_START_TASK, 0, 0},
{HELLO_TASK, hello_task, 1000, 8, "hello", 0,0,0},
{ 0 }
};

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Hello World 2 on MQX (2/2)

/* world_task:create hello_task & print " World " */


void world_task(uint_32 initial_data) {

_task_id hello_task_id;

hello_task_id = _task_create(0, HELLO_TASK, 0);

if (hello_task_id == MQX_NULL_TASK_ID) {
printf ("\n Could not create hello_task\n");
} else {
printf(" World \n");
}
_task_block();
}

void hello_task(uint_32 initial_data)


{ printf("\n Hello\n");
_task_block();
}
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
SYS/BIOS
• Exécutif de Texas Instruments (TI) pour les
applications nécessitant un ordonnancement et
synchronisation de tâches en temps‐réel
• Noyau échelonnable permettant la gestion d’unités
d’exécution multiples avec commutation
préemptive
• Abstraction du matériel
• Suivi de l’exécution en temps réel

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
SYS‐BIOS
TI‐RTOS
 Kernel
Gestion de (ou(stack,
la mémoire SYS/BIOS)
heap, cache)
: librairie
 de services
Analyse en temps de TI charges)
réel (logs, graphes,
que
 l’usager peut
Ordonnancement ajouter
(différent types deà threads)
 Synchronization (ex. sémaphores,
son applicationpour
évènements)
gérer
l’execution de tâches multiples

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Le noyau TI‐RTOS
 Ordonnancement préemptif avec possibilité de
changement dynamiques de priorités de tâches
 Opération pilotée par évènements : toute
source d’interruption peut invoquer
l’ordonnanceur.
 Les méthodes du noyau sont orienté‐objet pour un
couplage faible et une cohésion élevée.
 L’orientation objet permet à la plupart des appels au
noyau d’être déterministes quant au temps de
réponse.
 Fonctions d’analyse en temps réel (ex. Logs) petites et
rapides
– permettant de les garder dans le code final
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Mode d’exécution avec TI
‐SYS/BIOS

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Audio
Exemple d’application
(100KHz)

KeyPad
(10 Hz)
Une application comprend
deux
 tâches
Existe‐il desindépendantes
conflits possiblesà ?
TI MCU exécuter
 Comment ordonnancer les deux tâches?

 Existe‐il une priorité d’exécution?

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
main()
{
Solution 1 : super boucle
while(1)
{
On metest‐il
Qu’en les deux tâches
des deux à
contraintes
Audio
l’intérieur d’une boucle
de temps différentes ? infinie
• Audio – 100kHz (10μs)
KeyPad
} • KeyPad – 10Hz (100ms)
}  Que se passe‐il si une des tâches
“affame” l’autre ou retarde sa
réponse?

Utiliser un temporisateur pour déclencher chaque tâche par interruption!

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Solution 2 – Interruptions
TimerA_ISR() Chaque tâche est déclenché par un
{
read sample;
temporisteur dédié
Audio Period Compute Usage
} Audio 10μS 5μS 50%
Keypad 100ms 1ms 1%
TimerB_ISR()
{ 51%
read keypad;  Une interruption peut bloquer l’autre!
KeyPad
}
Interruption
main() ratée
{
while(1);
}
Comment prévenir cela?
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Solution 3 – IRQs
TimerA_ISR()
{
emboitables
Permettre des interruptions
read sample; emboitables
Audio
}

A
TimerB_ISR() B
{
read keypad;
KeyPad
}  Les périphériques ont généralement des
priorités préétablies, à moins d’utiliser un
contrôleur spécialisé
main()  Les routine d’IRQ de basse priorité doivent céder la
{
while(1);
Traduit
King
et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
place dans le code – difficile à suivre pour le
débogage ou la
validation
L’emboitage des irq est motivé par l’exécution
des tâches dans les routines de service

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Solution 4 ? – Processus et ISR
séparés
TimerA_ISR()  Même avec l’emboitage des IRQ, on
{ peut toujours rater des irq quand la tâche
read sample; de plus haute priorité est executée
Audio Hard Real Time
} C/S (Read)
Nest? Process Data C/R
TimerB_ISR()
{
Global ints disabled
read keypad;
KeyPad  On peut mitiger le problème est séparant
} la partie utile de la routine de service du
reste
Hard Real Time
C/S (Read) Post C/R
Swi Process Data
main() Nest?
{ (in Software Interrupt)
Global ints disabled rather than all this time
while(1);
} et/ou adapté de matériel recueilli sur Internet, dont les notes de ChungT-Tha Kisingis what the BIOS Scheduler is all about…
Traduit
Solution 4 – Ordonnancement par
SYS/BIOS
Audio_ISR() HI
{ Hwi – Hardware Si on découple le
read sample; INT traitement du
post_Audio; • Context déclencheur (Hwi):
} save/restore (done
La routine de 
by BIOS)
service devient
Keypad_ISR() • Hard real‐time très courte (plus
{ “read” besoin
read keypad; Swi – Software INT d’emboitement)
• Post Swi for follow‐
post_KeyPad; Posted by software
up  La priorité des
} PROCESS data
User can select priority tâches est fixée par
logiciel
main()  On peut lancer
{ autant de tâches que
Idle – Background
init_stuff; while(1); BIOS_start(); l’on veut
} Runs multiple fxns inside of a while(1) loop

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
 Le code
de
chaque
tâche
demeur
e
indépe
ndant
des
LO autres

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Création de tâche dans SYS/BIOS
 Users can create threads (BIOS resources or “objects”):
• Statically (via the GUI or .cfg script)
• Dynamically (via C code) – more details in the “memory mgmt” chapter
• BIOS doesn’t care – but you Dynamic (C Code)
might… #include <ti/sysbios/knl/Swi.h>
Static (GUI or Script) Swi_Params swiParams; app.c
Swi_Params_init(&swiParams);
[Link] = 2;
Swi_create(ledToggle, &swiParams, NULL);

var Swi = [Link]('[Link]');


var swi0Params = new [Link](); [Link]
[Link] = "MyNewSwi";
[Link] = 2;
[Link] = [Link]("&ledToggle", swi0Params);

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King
Communications entre les tâches

Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta
King

Vous aimerez peut-être aussi