Retour au sommaire  


  Article écrit le 10/10/2019 (Tous droits réservés - TECHNETEA)  

Article de blog

Développements Electroniques





Chacun a son histoire personnelle

La lecture d'un article sur Internet me rappelle soudain cette anecdote qui doit dater d'environ 2 ans. Au cours d'une conversation téléphonique un ingénieur m'expliquait la structure de son matériel, et je ne comprenais pas pourquoi son matériel pouvait consommer autant. Puis soudain il me lâche l'information :
  - J'utilise une carte PC.
  - Mais pourquoi ?
  - Parce que je n'ai pas envie de m'embêter avec la gestion de la mémoire.

Je ne sais pas s'il y a eu un blanc dans ma conversation, mais dans mon cerveau il s'est affiché des tas de points d'interrogation et d'exclamation en pagaille, peut-être même d'autres signes encore. Cette phrase qui a tinté avec de nombreux échos : "Parce que je n'ai pas envie de m'embêter avec la gestion de la mémoire". Et un grand blanc d'incompréhension.

Pour un programmeur de ma génération, qui a passé presque la moitié de sa vie professionnelle à créer des logiciels embarqués, de plus bien souvent écrits en Assembleur, entendre une telle réponse à de quoi laisser sans voix. A la glorieuse époque du microprocesseur RCA COSMAC CDP1802 que nous utilisions pour faire le logiciel embarqué des postes de radionavigation pour l'avionique ( ADF (1), VOR (2), ILS (3) ), la question de la gestion de la mémoire n'aurait jamais été même évoquée. Pas de malloc() à l'époque ! Nous avions si peu de mémoire sur nos cartes et personne ne s'en plaignait.

C'était finalement une époque où tout était permis, rien ne nous faisait peur. L'objectif était seulement de faire des logiciels de qualité pour être certain qu'ils ne provoqueraient pas un accident. Nous connaissions nos lignes de code par coeur. Ah ce bon vieux CDP1802. Que de souvenirs !... Notamment cette journée qui a duré 22 h d'affilé parce que deux équipements VOR/ILS partaient en démonstration pour Toulouse le lendemain matin. A cette époque, jamais nous n'aurions laissé à un bout de logiciel inconnu le soin de contrôler la mémoire de nos équipements.

Des microprocesseurs j'en ai connu plusieurs et c'est peut-être avec un peu de nostalgie que je me les remémore soudain en écrivant cet article, car le fait de travailler en Assembleur obligeait à connaître parfaitement chacune de leurs caractéristiques (un peu oubliées depuis il faut bien l'avouer). Le RCA CDP1802 et son cousin le CDP1805, le célèbre Zilog® Z80, les Motorola® 6802 et 6809, l'Intel® 8088. Il me reste encore une petite collection de ce genre de choses, mais malheureusement aucun CDP1802, qui a été le premier produit sur lequel j'ai débuté par carrière professionnelle.

Il faut bien avouer que je n'avais jamais accroché sur le Intel® 8080 que nous avions vu vraiment très succinctement à l'école pour faire l'initiation sur les CPU, sans doute les professeurs non plus d'ailleurs, ce qui explique cela ! Mais ce CDP1802.a été vraiment le début de toute mes curiosités dans le domaine de la programmation, en plus d'avoir pu faire mes premiers pas avec un ingénieur qui ne programmait pas comme un cochon. Salut Jean-Pierre ! Ce que tu m'as apporté cette matinée où tu m'as expliqué ligne à ligne tout ton listing, m'a été d'une valeur inestimable. C'est d'ailleurs Jean-Pierre qui a emmené les 2 fameux équipements à Toulouse. Sa journée à lui a duré 38 heures non stop ! Nous étions des vaillants !

L'Intel® 8031 est également un produit avec lequel j'ai beaucoup travaillé, toujours pour l'avionique, également pour le spatial avec un matériel qui devait voler sur la station MIR (que c'est vieux tout ça, mais pourtant encore si présent). Le plaisir de pourvoir enfin travailler les bits très simplement sur ce premier microcontrôleur (et non plus microprocesseur) que j'ai eu entre les mains. Là non plus nous n'avions peur de rien, gestion générale et filtrage numérique temps réel (si, si !), sans oublier un projet qui frisait l'intelligence artificielle et que j'avais appelé le projet Janus, le dieu à 2 têtes, celle qui représente ce que l'on croit voir et l'autre qui représente l'envers insoupçonné.

Deux projets avec un Intel® 80188 qui ont peut-être été mes "chefs-d'oeuvre". Egalement des petits Microchip® PIC® 16F parce que ce microcontrôleur avait le plus petit boîtier de l'époque et une mémoire programme Flash intégrée (une nouveauté pour l'époque !). Des projets avec le Intel386™ EX, qui était également un fabuleux produit et un délice pour la programmation en Assembleur. L'Atmel® AVR® 8-bit, le MSP430™ de Texas Instruments, le dsPIC® de Microchip®, et maintenant un peu d'ARM® Cortex®, en attendant un autre qui m'intéresse beaucoup plus et que je souhaite vivement évaluer sur un projet ...

Mais je dois être anormal, je n'ai jamais été bloqué par la gestion de la mémoire.


Le sujet revient à se demander, si les nouvelles questions que se posent les jeunes ingénieurs en démarrant un projet, ainsi que leurs nouvelles bases de travail, sont liées à l'évolution naturelle des techniques et au progrès, ou à la manière dont ils sont initiés sur les matériels et produits mis à leur disposition.

Programmer uniquement en C ou tenter de programmer en Assembleur des microcontrôleurs RISC (certains ne sont vraiment pas drôles du tout), a de quoi transformer radicalement la vision des choses par rapport à la génération précédente qui découvrait les possibilités inouïes de ces techniques dans un monde encore à dominante analogique. Tout était à inventer. et bien souvent même aussi le sous-programme de multiplication !

Qui sait encore que pour l'évaluation de l'hypoténuse, il suffit de prendre le plus grand coté et d'additionner la moitié du plus petit pour obtenir rapidement un résultat avec une erreur tout à fait acceptable dans la plupart des cas ? Maintenant il est plus tentant de faire sqrt(a2 + b2) en utilisant la librairie mathématique d'un microcontrôleur capable de traiter les flottants. Y a-t-on réellement gagné sur le fond ? Sur ce qui paraissait important à l'époque, comme le temps réel, la gestion des interruptions, le multitâche ?

D'une manière générale, y a-t-il un progrès à se détacher progressivement des bases, pour vouloir toujours aller plus vite ? Y a-t-il plus de technicité à ne voir les choses que succinctement pour bâtir toujours plus haut sans s'occuper des fondations ? Là est la vraie question ...

Mais en attendant que j'en trouve la réponse, je suis encore très fier de pouvoir dire que dans ce domaine spécifique des logiciels embarqués, rien ne me fait encore peur, et que je suis heureux d'avoir eu la chance de pouvoir vraiment vivre le début de l'ère de la généralisation des microprocesseurs dans les matériels électroniques.

Chacun a son histoire, ce qui fait de chacun une richesse unique.



André GAJNY - rédacteur



(1) ADF : Automatic Direction Finder
(2) VOR : VHF Omnidirectional Range
(3) ILS ; Instrument Landing System





------------- Commentaires reçus (0) -------------