Mon travail :)

Alors !!! Attention, article 100% technique :) Pas beaucoup de solutions, mais beaucoup de problèmes ! Blondes passez votre chemin !!!

En ce moment au taff je travaille sur un projet très interressant... Je resitue l'histoire.. L'entreprise dans laquelle je bosse a dévellopé une architcure embarquée, tournant avec un processeur MIPS. Un peu de ram, un peu de mémoire flash, un backplane PCI, un noyau 2.4.22 avec une arborescence de type debian. La dedans, on met plein de cartes PCI de mesures analogiques et/ou digitales ( mesure, température, aquisition... etc )

Le noyau est actuellement patché RTAI Stromboli, ( un micronoyau temps réel) permettant de dévier les interruptions matérielles... Tout ca pour permettre un traitement plus rapide par les drivers(modules). L'intégration d'RTAI est faite très simplement dans ces modules, et c'est pas la peine que je m'attarde là dessus...

Mon travail à moi consiste à porter une application d'automatisation qui est divisée en plusieurs parties. Une partie "workbench" permettant de faire un programme de manière logique (comprendre à la souris, avec des boutons) qui tourne sur un pc normal et une partie Target, un genre de machine virtuelle résidant sur le système embarqué. La machine virtuelle exectuera le code fourni par le workbench. Ce portage a été fait avec succès.

Le problème maintenant, c'est qu'on a 20 ms de latence sur un cycle ( pour 50% des applications, c'est suffisant) mais qu'on veut mieux. Le topo est donc de faire passer la machine virtuelle en dehors de l'ordonnancement "normal" de Linux, et de le passer au dessus, pour approcher des performances proches d'une execution kernel.

Pour ça je vais utiliser LXRT, qui est une extension d'RTAI permettant de faire passer une application User (un programme) en Hard Realtime Mode (au dessus du noyau). Le problème est qu'LXRT a été porté "correctement" (comprdndre indépendant du microprocesseur ) qu'à partir de la version 3.1 de RTAi. Et qu'à partir de la version 3.0 MIPS n'est plus supporté.

Facile me direz vous !! Suffit de faire des copier coller de ce qu'il y avait avant, et PAF! Ca fait des chocapics... Mais non.. Parcequ'entretemps RTAI a changé de système pour s'intégrer au noyau, et utilise maintenant une API s'appelant Adeos, au lieu d'une api propre à RTAI... Or Adeos n'a pas été porté pour Mips...

Donc mon taff, maintenant, est de porter Adeos pour MIPS ( au moins les fonctions nécessaires à rtai ) puis de porter rtai, puis de transformer la Target d'automatisme pour qu'elle entre en HardRealTime et que tous les moyens de communications à coté soient pas broyés..)

Résultat des courses dans 3 mois :)

1 Comments:

Anonymous Anonyme said...

Respect...

29/11/05 23:11  

Enregistrer un commentaire

<< Home