L’ajout d’une couche temps réel

A l’époque où la recherche de la frange centrale n’était pas encore une procédure fiable, il m’a été demandé d’ajouter parallèlement à la tâche d’asservissement, une fonctionnalité permettant de sauvegarder sur disque un extrait d’une durée configurable, de la moyenne ou de l’écart type du signal DS. Cette option était destinée à garder une trace du résultat de l’asservissement et donc à pouvoir le qualifier a posteriori par l’utilisation de logiciels d’analyse tels que IDL ou Mathematica. Toutefois, cette fonctionnalité initialement imprévue m’a posé un double problème vis-à-vis du temps réel.

Comme je l’explique dans le rapport technique du stage I2, la réalisation du temps réel sous Windows 3.1 a demandé de ma part un travail conséquent: le découpage en trois niveaux de priorité d’un système non préemptif n’a pas été chose aisée. Rappelons que la couche la plus basse vis à vis du système et donc la plus prioritaire repose sur l’utilisation du timer des ressources multimédia. Ceci constitue le maximum de résolution CPU que l’on peut attendre du système . Par conséquent, l’ajout de cette quatrième couche de remplissage du disque heurtait les limites de ma conception initiale. C’est pourquoi, il m’a fallu réécrire la partie de la couche temps réel de sorte à multiplexer « à la main » les deux couches précédemment citées.

L’autre problème réside dans l’incapacité du système à accéder aux ressources telles que le disque, au niveau de la couche multimédia, ici utilisée. Par conséquent, j’ai dû m’inspirer de la technique de l’enregistrement audio. Cette technique consiste à créer un tampon mémoire, le remplir jusqu’à saturation, le déléguer à une seconde tâche asynchrone qui assure son transfert sur disque, et pendant ce temps en créer un autre et recommencer l’opération jusqu’à obtention du nombre d’échantillons désiré. Heureusement, les ressources de la machine utilisée et les besoins des chercheurs ont fait que j’ai pu simplifier la procédure en n’allouant qu’un seul tampon mémoire.