DSP BIOS (Mode de Compatibilité)
DSP BIOS (Mode de Compatibilité)
DSP BIOS (Mode de Compatibilité)
12 - 1
Objectifs du Cours
Fonctions périodiques
12 - 6
Pourquoi le noyau DSP / BIOS ?
Le logiciel requis dans les systèmes embarqués DSP typiques
comprend deux composants: l'application et le logiciel système.
12 - 7
Pourquoi le noyau DSP / BIOS ?
En utilisant le noyau DSP / BIOS, vous :
• Gérer efficacement le MIPS DSP en utilisant le multithreading.
• Utilisez des interfaces standard pour les E / S et les interruptions
matérielles HWI.
• Définir et configurer efficacement les ressources système, telles que
la mémoire système.
• Obtenez une visibilité en temps réel sur l'exécution de votre
application en utilisant les outils d'analyse en temps réel.
• Ajoutez une structure à votre application, en l'organisant autour
d'une collection de threads interdépendants.
• Facilitez la migration vers de nouveaux DSP TMS320 puisque les
DSP / BIOS font abstraction de la plupart des
matériel du système.
12 - 8
DSP/BIOS Terminology
12 - 9
Systèmes d'exploitation en temps réel (Real Time
Operating Systems) (RTOS)
Qu'est-ce qu'un RTOS?
Classe particulière de systèmes d'exploitation
pour les systèmes de processeurs numériques
DSP
Capable de servir plusieurs tâches en même
temps ("système d'exploitation multitâche") (
“multi-task OS”)
Toutes les tâches doivent être servies
simultanément («système d'exploitation multi-
tâches») ET opportunes («RTOS»)
Les RTOS sont très populaires dans le contrôle
embarqué 12 - 10
Real Time Operating Systems (RTOS)
What is a Task?
Un programme objet en cours d'exécution ou
exécutable, qui:
est contrôlé par une partie du code machine
'Possède' un ensemble donné de ressources d'exploitation
pour démarrer / reprendre son cours d'action
est caractérisé par un ensemble de variables d'état
(registres, compteur de programme, variables de pile
locales, sémaphores, boîtes aux lettres MailBox)
Les tâches sont programmées et déboguées
indépendamment les unes des autres
Les accès aux périphériques ou les transferts de
données entre les tâches sont effectués par des appels
de fonctions RTOS.
12 - 11
Real Time Operating Systems (RTOS)
Qu'est-ce qu'un modèle tâche-état?
Chaque tâche peut résider dans l'un des états suivants :
1 existant
Pret
5 7
2 3
bloqué terminé
4 6
8
fonctionnement
Pas existant
12 - 12
Real Time Operating Systems (RTOS)
Quand l'état de la tâche change-t-il?
1. Une tâche est créée par une fonction d'initialisation
2. Une tâche est sélectionnée par le planificateur (scheduler) pour
utiliser le CPU
3. Le planificateur (scheduler) effectue un changement de tâche
selon les règles du RTOS
4. La tâche en cours d'exécution attend un événement externe, un
message d'une autre tâche ou d’un signal
5. L'événement qui bloquait une tâche s'est produit
6. La tâche a terminé son programme
7. La tâche est réactivée par une autre tâche ou par un événement
8. La tâche ne sera plus jamais utilisée (tant que le système
embarqué n'est pas éteint)
12 - 13
Real Time Operating Systems (RTOS)
Qu'est-ce qu'une tâche – Planificateur (Task – Scheduler)?
12 - 14
Outil de configuration DSP/BIOS (file .cdb)
New Function
Function 2
Problèmes:
Avons-nous assez de puissance de calcul pour
TI DSP ajouter une autre fonction?
Y a-t-il des conflits de ressources possibles entre la
nouvelle fonction et le système existant?
Le nouveau système respectera-t-il toutes les
restrictions de temps dans un système de contrôle
intégré en temps réel?
Une routine entrera-t-elle en conflit avec l'autre?
12 - 17
Solution 2: utiliser les interruptions
Un système piloté par interruption place
main chaque fonction dans son propre ISR
{
while(1); Period Compute CPU Usage
}
Function 1: 0.05 ms 1 µs 2%
Function1_ISR Function 2: 500 ms 3 µs ~ 0%
{ 2%
Function 1
} running
Function 1
idle
Function2_ISR
{ Function 2
Function 2
}
TI DSP Time 0 1 2 3 4 5 6 7
Function1_ISR
{
Function 1
} Time 0 1 2 3 4 5 6 7
SEM_pend Pause
“run to (blocked
completion” start state)
end end
Similaire à l'interruption SEM_post () déclenche
matérielle, mais déclenchée l'exécution
par SWI_post ()
Tous les logiciels de système Chaque TSK possède sa propre
de partage de SWI pile, ce qui lui permet de faire
une pause (c'est-à-dire de
bloquer)
12 - 21
DSP/BIOS - Software Interrupts (SWI)
Faire de chaque algorithme une interruption
main logicielle indépendante
{… La planification SWI est gérée par DSP / BIOS
// return to O/S;
} Fonction HWI déclenchée par le matériel
Fonction SWI déclenchée par un logiciel
DSP/BIOS e.g. a call to SWI_post()
Pourquoi utiliser un SWI?
Function 1
Aucune limite sur le nombre de SWI, et les
Function 2 priorités pour les SWI sont définies par
l'utilisateur
SWI peut être planifié par événement (s)
matériel ou logiciel
Déplacer le traitement des tâches de HWI
vers SWI
12 - 22
Activation du BIOS - Retour à partir de main ()
12 - 23
DSP/BIOS - HWI Dispatcher for ISRs
Pour le code non-BIOS, nous utilisons le mot-clé d'interruption pour
déclarer un ISR
demande au compilateur d'effectuer un sauvegarde / restauration
interrupt void MyHwi(void)
{
}
Pour le code DSP / BIOS, le répartiteur (dispatcher) effectuera la
sauvegarde / restauration
Supprimer le mot-clé d'interruption de MyHwi ()
Cochez la case "Use Dispatcher" lorsque vous configurez le vecteur
d'interruption dans les outils de configuration DSP / BIOS
12 - 24
DSP/BIOS - Periodic Functions
tick
DSP/BIOS
CLK
period
12 - 25
Créer une fonction périodique
tick
DSP/BIOS
CLK
period
12 - 26
Topologie du code de tâche
Void taskFunction(…)
{
}
TSK peut englober trois phases d'activité (prologue, traitement, épilogue)
Les TSK peuvent être bloqués en utilisant: SEM_pend, MBX_pend,
SIO_reclaim, et plusieurs autres (suspendre l'exécution jusqu'à débloqué)
Les TSK peuvent être débloqués en utilisant: SEM_post, MBX_post,
SIO_issue, etc. 12 - 27
SWI Properties
_myFunction
12 - 28
Managing SWI Priority
Faites glisser et déposez les SWI pour
changer de priorité
Les SWI à priorité égale s'exécutent
dans l'ordre dans lequel ils sont publiés
HWI:
… _myFunction
SWI_or (&SWIname, value);
value
SWI:
temp = SWI_getmbox();
…
Elle peut être interrompue par une tâche de type HWI ou une tâche de type
SWI de priorité supérieure.
Chaque tâche SWI possède une variable sur 32 bits qui sert de « mailbox ».
Les tâches SWI peuvent être validées par la fonction key=SWI_enable() et
invalidées par la fonction SWI_disable(key).
Il est possible d’avoir 15 niveaux de priorité pour les SWI
Il est possible d’utiliser la fonction TSK_setpri() pour changer la priorité
d’une tâche SWI. Ceci n’est pas possible pour les tâches HWI.
12 - 33
Les tâches
Les tâches de type SWI
Les interruptions HWI et SWI utilisent la même pile pour sauver l’état des
registres du DSP : la pile système.
A chaque ajout d’une nouvelle priorité de SWI cette pile augmente.
La pile système possède par défaut 256 mots : il faut veiller à ne pas
dépasser cette taille. (MEM module)
12 - 34
Les tâches
Les tâches de type TSK
Les états et la préemption des tâches TSK
En cours (running)
Prête (ready)
Suspendue (blocked)
Terminée (ternimated)
La préemption des tâches est immédiate dès que la priorité est suffisante.
12 - 35
Les tâches
Les tâches de type IDL
La boucle IDLE est la tâche de fond de DSP BIOS. C’est une
boucle infinie qui peut être interrompue par n’importe quelle autre
tâche de niveau supérieur.
Toutes les tâches placées dans cette boucle s’exécutent les unes
à la suite des autres dans l’ordre défini par l’outil de configuration.
Une Mailbox, boite à lettres, est une zone mémoire partageable par toutes les
tâches.
Demande d’attente sur une boite à lettres MBX_pend()
Ecriture dans une boite à lettres MBX_post()
12 - 37
Ordonnancement de threads basé sur la priorité
Principe de fonctionnement de DSP BIOS
Toute application est construite sur le principe des interruptions. Après une
séquence d’initialisation le programme principal « main » donne la main à la
boucle infinie IDL et on attend une interruption.
Pendant la boucle IDL, le noyau formate dans une petite zone mémoire les
données à envoyer au PC.
12 - 38
Ordonnancement de threads basé sur la priorité
Exemple
Soit une application composée de :
Deux tâches HWI_1et HWI_2
Trois tâches SWI_1, SWI_2 et SWI_3
12 - 39
Ordonnancement de threads basé sur la priorité
post3 rtn
HWI 2 SWI_post(&swi2);
(highest)
post2 rtn
HWI 1
post1 rtn
SWI 3
int2 rtn
SWI 2
SWI 1 rtn
MAIN rtn
IDLE int1
(lowest)
L'utilisateur définit la priorité ... BIOS fait la programmation
Comment créer un SWI et définir des priorités? 12 - 40
Qu'est-ce qu'un fil (Thread) (SWI)?
SWI_post(&mySWI) return
1. Function Call
HWI 2. Context Save/Restore
3. Priority
return
mySWI
context context
HW interrupt
save restore
IDL
12 - 41
HWI avec SWI et IDL
SWI_post(swi_name);
return return
post swi1
post swi2
HWI
return
SWI 2
return
SWI 1
return interrupt
main()
IDL
interrupt
Legend
12 - 42
HWI avec SWI et IDL
return return
post swi1
post swi2
HWI
return
SWI 2
return
SWI 1
return interrupt
main()
IDL
interrupt
12 - 43
Exemple de préemption TSK
SWI 2
return
TSK 1
interrupt interrupt
main()
return
IDL
12 - 44
Exemple de préemption TSK
SWI 2
return
TSK 1
interrupt interrupt
main()
return
IDL
SWI 2
return
TSK 1
interrupt interrupt
main()
return
IDL
12 - 47
Outils d'analyse en temps réel intégrés
Recueillir des données sur la cible
Envoyer des données pendant le BIOS IDLE
Formatage des données sur l'hôte
La collecte de données n'arrête PAS la CPU cible
Execution Graph
Logiciel d'analyse
logique
Débogage de
l'événement et
priorité
12 - 48
Outils d'analyse en temps réel intégrés
Statistics View
Routines de profil sans
arrêter le processeur
Capturer et analyser des
données sans arrêter le
processeur
Message LOG
PC TMS320 DSP
USER CODE
Display
RTDX
EMU
User
JTAG
TI CCS
3rd Party
Third Party
Display
12 - 50
RTDX: Real-Time Data Exchange
12 - 51
Conclusions
Noyau en temps réel libre de droits pour l'utilisation en
production
DSP BIOS possède quatre familles de tâches : HWI – SWI –
TSK – IDL.
Permet un développement rapide du produit à partir du
concept
Peut être intégré avec un autre OS en temps réel
Faible encombrement (peut être aussi petit que 1K words)
Les modules utilisés sont contrôlés par l'utilisateur
Permet un débogage / analyse
Disponible avec les processeurs C6000 C2000 et C5000
12 - 52