ELE-542 Sysèmes ordinés en emps réels ours # 11 onfigurer l OS e ampon circulaire Jean-Marc Beaulieu e Bruno De Kelper Sie inerne: hp://www.ele.esml.ca/academique/ele542/ Sysèmes ordinés en emps réel ours 11 1 Adaper u/os-ii à nos besoins - Les OS emps réel (RTOS) fournissen souven rop de foncionnaliés pour les besoins d applicaions simples. - Les ressources disponibles sur une cible emps réel ne permeen pas de supporer oues les foncionnaliés du RTOS. - Les RTOS son habiuellemen configurables aux besoins, aux ressources. Par exemple: OS_FG.H OS_PU_. OS_PU_A.ASM u/os-ii Perme de choisir les services e configurer l OS. Fourni des foncions croches qui ajouen des foncionnaliés à l OS. Regroupe les foncions clés de l OS qui doiven êre adapées à la cible. Sysèmes ordinés en emps réel ours 11 2 onfigurer OS e ampon circulaire cours 11 1
Adaper u/os-ii aux besoins/ressources Réducion des besoins en mémoire : Espace des données : diminuer la aille des variables de u/os-ii #define OS_LOWEST_PRIO 63 #define OS_MAX_EVENTS 10 #define OS_MAX_FLAGS 5 #define OS_MAX_MEM_PART 5 #define OS_MAX_QS 5 #define OS_MAX_TASKS 16 #define OS_TASK_IDLE_STK_SIZE 512 Espace du code : éliminer le code des services non uilisés #define OS_SEM_EN 1 #define OS_SEM_AEPT_EN 1 #define OS_SEM_DEL_EN 1 #define OS_SEM_QUERY_EN 1 Exemple pour les sémaphores Sysèmes ordinés en emps réel ours 11 3 Adaper u/os-ii aux besoins/ressources Modifier les foncionnaliés des services : Les croches (Hook) Dans OS_FG.H ode du service #define OS_PU_HOOKS_EN 1 Dans OS_PU_. void OSTaskreaeHook (OS_TB *pcb) void OSTaskDelHook (OS_TB *pcb) void OSTaskSaHook (void) void OSTBIniHook (OS_TB *pcb) roche() ode usager void OSIniHookBegin (void) void OSIniHookEnd (void) void OSTaskIdleHook (void) Uile pour iniialiser des périphériques Uile pour éeindre des périphériques Uile pour faire une âche de diagnosique d arrière-plan Sysèmes ordinés en emps réel ours 11 4 onfigurer OS e ampon circulaire cours 11 2
Adaper u/os-ii aux besoins/ressources Adaper u/os-ii à une cible : - Le ravail le plus criique es fai dans 4 ISR. - Les ISR dépenden du maériel uilisé, donc de la cible. - Les rouines suivanes doiven êre adapées : void inerrup OSSarHighRdy(void) void inerrup OSxSw(void) void inerrup OSInxSw(void) void inerrup OSTickISR(void) Démarre la âche plus prioriaire hange le conexe à parir d une âche vers une aure âche hange le conexe à parir d une ISR vers une aure âche ISR de l horloge Écri en assembleur dans u/os-ii Sysèmes ordinés en emps réel ours 11 5 Temporisaion par ampon circulaire Tampon circulaire Produceur onsommaeur - Très uiles lorsque le produceur e le consommaeur n on pas la même cadence. - Foncionnemen de ype 1 er arrivé 1 er servi (FIFO) assuré par 2 foncions : in Enqueue (char daa) char Dequeue (void) Place une donnée à la fin du ampon Reire une donnée au débu du ampon e 2 validaions : Queue Vide Queue Pleine Sysèmes ordinés en emps réel ours 11 6 onfigurer OS e ampon circulaire cours 11 3
Temporisaion par ampon circulaire Tampon Queue #define TAILLE_MAX 1024 char ampon[taille_max]; in queue = 0, ee = 0; char ampon_vide = 1, ampon_plein = 0; Têe in Enqueue(char daa) { ampon_vide = 0; if (ampon_plein) reurn 0; ampon[queue] = daa; queue = (queue+1) % TAILLE_MAX; if (queue == ee) ampon_plein = 1; reurn 1; } char Dequeue(void) { char daa; ampon_plein = 0; if (ampon_vide) reurn -1; daa = ampon[ee]; ee = (ee+1) % TAILLE_MAX; if (ee == queue) ampon_vide = 1; reurn daa; } Sysèmes ordinés en emps réel ours 11 7 Temporisaion par ampon circulaire aracérisiques du ampon : B = Taille du Tampon (byes) Produceur P = Taux de producion (byes/sec) as simple : onsommaeur = Taux de consommaion (byes/sec) P e son supposés consans. Alors B() = (P-) + B o Quanié de données dans le ampon à l insan où B o = quanié de données iniiale dans le ampon, à l insan = 0 Sysèmes ordinés en emps réel ours 11 8 onfigurer OS e ampon circulaire cours 11 4
Temporisaion par ampon circulaire as coninu : (cas peu inéressan) Le consommaeur consomme ou le emps P Le produceur produi ou le emps Alors 1) si P <, le consommaeur manque de donnée. P 1 Temps perdu en aene = quesionnemen à vide P pour chaque donnée 2) si P >, le ampon va déborder. Bmax Temps avan un débordemen = P débordemen Sysèmes ordinés en emps réel ours 11 9 as par salve : (cas habiuel) Temporisaion par ampon circulaire Le consommaeur consomme an qu il y a des données P T = durée d une salve = période des salves Le produceur produi par salve Alors 1) si P <, idenique au cas coninu 2) si P >, le consommaeur manque de donnée, alors B ( P ) T max = Quanié maximum de données en même emps dans le ampon (Taille du ampon minimum) avec la conraine e Sysèmes ordinés en emps réel ours 11 10 T aene S PT = T S PT Période minimale des salves Temps d aene enre deux salves onfigurer OS e ampon circulaire cours 11 5
as général : Temporisaion par ampon circulaire P T = durée d une salve Le aux de consommaion varie dans le emps = période des salves Le aux de producion varie dans le emps Alors = 0 + [ ] B() B P() () d o Quanié de données dans le ampon à l insan où o = insan du débu de la salve B o = quanié de données dans le ampon au débu de la salve Sysèmes ordinés en emps réel ours 11 11 onfigurer OS e ampon circulaire cours 11 6