Jérôme Pouiller

4 rue Alain Gerbault

35000 Rennes – France

——

Tel. : +33 (0)6 64 18 99 61

jerome.pouiller@sysmic.org

Nationalité: Française

Expert Linux embarqué

Domaines d'intervention

  • Architecture de systèmes à fortes contraintes (puissance, mémoire, temps réel, ...).

  • Configuration et personnalisation du noyau Linux (intégration temps réel, réduction du temps de boot, couche réseau spécifique, réduction de la consommation électrique, ...).

  • Ecriture de drivers. Debug matériel. Développement de firmwares.

  • Gestion de la qualité sur systèmes embarqués ou temps réels. Optimisation, instrumentation et profiling de systèmes.

  • Portage de noyaux ou d'applications. Développement de BSP.

  • Support technique des équipes de développement, transfert de connaissances, gestion de projet.

Expériences

Depuis 2009

Fondateur de Sysmic, société spécialisée sur Linux embarqué. Quelques références:

  • Eolane/Areva: Architecture et développement d'un système de supervision d'un réacteur nucléaire (ARM Cortex)

  • Odyssée Systèmes: Portage du noyau Linux sur un SoC de Kontron (PowerPC 8541)

  • Nagra : Mise en œuvre d’un système par simulation des environnements embarqués (Carte à puce)

  • Tokhatec: Expertise technique pour l'intégration du drivers Poulsbo sur Linux (majoritairement Atom). Expertise technique pour l'amélioration de consommation électrique des chipset Atom (P-states et C-states non-fonctionnels).

  • Thales: Résolution de bugs noyau (régression sur le l'appel système « reboot »)

  • IER: Conseil en ingénierie logicielle. Développement RFID (ARM)

  • Key Consulting: Expertise pour l'architecture logicielle d'un satellite (Sparc)

  • Substantiel: Gestion de problèmes d'intégration de matériel: touchpad, touchscreen, accélération graphique, webcams, wifi… Développement noyau. Conseil pour la mise en place d'une QA. Déploiement du noyau et des différents pilotes sur le parc de 10000 machines distantes (x86)

  • Sysmic: Création d'un envioronnement de développement pour Linux emabqrué à base de Buildroot, Eclipse, cmake, Qt et git

  • Ingénico: Debug, conseil en architecture logicielle

  • Buildroot: Ajout de paquets, ajout de la possibilité de créer automaiquement un dépôt de paquets.

Mots clé:

  • Intégration: Noyau Linux, Jtags, Bootloader, BSP, gdb, shell, Debian, git

  • Qualité: BTS, pbuilder, gcov, valgrind

  • Développement: Kernel, assembleur, C++, UML, STL, pthreads

  • Matériel: PPC8541, ethernet, poulsbo, atom, wmi, acpi, pci, rs232, caches CPU

Avril 2012 — Octobre 2012

Canon Research. Optimisaion du codec H265 (aka HEVC) pour les vidéos de très haute définition (7840x4320). Tout l'enjeux de cette optimisation se situe sur la bonne parallèleisation des traitements (certains problème de cohérence de cahce entre CPU peuvent ralentir les calculs):

  • Instrumentation du code à l'aide de perf et de vtune : nombre de cycles CPU, cache misses, NMI, etc...

  • Utilisation des shaders pour certains traitements vidéo

  • Utilsiation des instructions SSE

  • Optimisation de compilation : arc profiling, link time optimization, OpenMP,...

Mots clé:

  • Développement: C++, OpenMP, gcc, perf, cmake, OpenGL...

  • Matériel: Intel Core i7, nvidia, radeon,…

  • Technologies: H265, HEVC, MPEG

Mars 2012 — Avril 2012

Enensys. Développement d'un driver pour une interface d'acquisition vidéo MPEG :

  • Intégration du DMA avec l'interface Unix

  • Utilisation du Kernel Driver Model et interfaçage avec la norme OpenFirmware

  • Mise en place des Fast IRQ (FIQ) (Mécanisme spécifique aux processeurs ARM. Permet des temps de réponse de l'ordre de 12 cycles d'horloge. L'ISR ne peut alors utiliser que certains registres et aucune autre exception ne peut se déclencher durant son exécution. L'ISR doit alors être dévelopée en assembleur et ne pas faire appel à d'autres fonctions du noyau)

Mots clé:

  • Intégration: Noyau Linux, U-boot, perl...

  • Développement: Kernel, C, FIQ, DMA, OpenFirmware, Kernel Driver Model...

  • Matériel: ARM, Marvel 6281, Transport Stream Interface

  • Technologies : MPEG

Juin 2012 — Octobre 2012

Areva souhaitait le développement d’une nouvelle version d’un de ces systèmes de supervision de réacteur nucléaire. Le projet à été confié à Eolane. Eolane, spécialisé dans le développement électronique, souhaitait profiter de ce projet pour acquérir la maitrise technologique d'un OS de haut niveau comme Linux. Je suis intervenu chez Eolane dans ce contexte. La mission sést déroulée autour d'un Freescale iMX27.

  • Développement système de mise à jour du firmware, drivers, intégration noyau

  • Adaptation du BSP (fourni par Aramdeus, à base de Buildroot) à la porteuse du client

  • Architecture

  • Debug hardware

  • Transfert de compétences

  • Conseil en qualité logicielle

Mots clé:

  • Intégration: Noyau Linux, U-boot, Armadeus, Buidroot, shell, ...

  • Développement: Kernel, C, pthreads, ...

  • Matériel: ARM, iMX27, SPI, rs232, ...

Juillet 2010 — Juin 2012

Bouygues Telecom. Responsable technique de la Quality Assurance des produits sous Linux embarqué (STi70xx, Mips, arm, x86)):

  • Mise en œuvre de la chaîne d’intégration continue. Déploiement automatique des cibles (NFS, TFTP, JTAG, RS232. …).

  • Mise en œuvre des outils de profiling des cibles (ftrace, valgrind). Couverture de code (gcov), mesure de l’empreinte mémoire et des consomation CPU (/proc)

  • Mise en œuvre d’outils de vérification de la robutesse des firmware (ld_preload, C)

  • Mise en œuvre de systèmes de scripting des tests (perl, shell, serveurs de flux vidéo, DVB, MPEG, H264, cartes à puces, SmartVision, CAS, redrat, infrarouge, RS232, etc…)

En 2008, Bouygues Telecom devient fournisseur d'accès internet. En 2010, l'entreprise décide d'internaliser le développement de ses BBox. Dans ce contexte, Bouygues a fait appel à mes compétences dans le domaine du profiling sur les systèmes Linux embarqués afin de les conseiller sur la méthode à appliquer pour garantir la qualité de leurs développements. La première préconisation de mon audit était de mettre en œuvre un système d'intégration continue intégrant :

  • compilation

  • déploiement sur les cibles

  • mesure des performances (mémoire, temps réel, CPU, couverture de code)

  • tests (tests unitaires, tests de charge, tests d'endurance)

  • publication des résultats

Dans ce cadre, je me suis entouré d'une équipe de 5 personnes afin de développer le projet.

  • Mise en œuvre de la chaîne d’intégration continue. Déploiement automatique des cibles (NFS, TFTP, JTAG, RS232. …).

  • Mise en œuvre des outils de profiling des cibles (ftrace, perf, oprofile, dmalloc, valgrind, /proc/*/maps). Couverture de code (gcov), mesure de l’empreinte mémoire et des consommations CPU (/proc/*/stat*)

  • Mise en œuvre d’outils de vérification de la robutesse des firmware (ld_preload, C)

  • Mise en œuvre de systèmes de scripting des tests (perl, shell, serveurs de flux vidéo, DVB, MPEG, H264, cartes à puces, SmartVision, CAS, redrat, infrarouge, RS232, etc…)

J'ai par ailleurs participé à la mise en place du système de publication des patchs appliqué sur les logiciels Open Source (il s'agit d'une obligation légale).

Octobre 2009 — Mai 2010

Nagra Vision, société spécialisée dans la fourniture d'outils cryptographique pour la diffusion audiovisuelle, souhaitait pouvoir maintenir simplement une de leur bibliothèque en fin de vie. J'ai audité leur code et j'ai mis en œuvre un ensemble d'outils et de procédures qualités pour en assurer l’évolutivité tout en guarantissant la compatibilité avec le parc de décodeurs installé. L'outil mis en œuvre fonctionnait autour de gcov auquel j'ai associé une batterie de tests premettant de couvrir 99 % du code. Le système permet ainsi de mettre en évidence les modifications (volontaire ou non) de comportement de la bibliothèque entre deux versions.

Depuis 2009

Formateur Linux embarqué et développement noyau Linux auprès des entreprises (STMicroElectronics, Thales, Davidson, ...). Création de BSP et de drivers, debug application et noyau, utilisation de sondes Jtags, mise en œuvre de Linux temps réel

Intervenant extérieur à l'Insa Rennes, Polytech'Paris (membre du conseil pédagogique) et Polytech'Tours. Cours de temps réel et systèmes d'exploitations.

Différentes activités de formations :

  • Formateur Linux embarqué et développement noyau Linux auprès des entreprises (STMicroElectronics, Thales, Davidson, Affix formations, Apollo formations…). Au programme :

  • Compilation du noyau, de la toolchain, du rootfs et création d'un BSP

  • Techniques de debug et des profiling applicatifs et noyau

  • Rappels de principes généraux des OS

  • Fonctionnement, compilation et personnalisation du noyau

  • Fonctionnement et écriture de modules et de drivers

  • Utilisation de sondes Jtags dans le debug

  • Mise en œuvre de Linux temps réel

  • Professeur de systèmes d’exploitation à l'INSA Rennes (cours disponible sur http://sysmic.org/training/os et http://sysmic.org/training/os-adv)

  • Professeur de temps réel à Polytech’Paris, Polytech’Tours et INSA Rennes (cours disponible sur http://sysmic.org/training/realtime-lecture)

Septembre 2006 — Février 2009

Ingénieur systèmes embarqués chez Hybrid MC, spécialisé en réalité virtuelle pour la TV. Développement des automates pour le déplacement des caméras.(Assembleur, C++, Lua, ...) ...

Hybrid MC est une PME de 7 personnes vendant des solutions de virtualisation de décors pour l'audiovisuel. La virtualisation consiste à instrumenter les caméras afin de connaitre très précisément leur position (dans l'espace et dans le temps). Hybrid MC utilise des caméras robotisés commandés à partir d'un (ou plusieurs) pupitre distant. J'étais responsable du développement matériel et logiciel bas niveau de ces systèmes.

  • Noyau Linux PowerPC

  • Freescale HC08

  • Contraintes temps réelles

  • Mise en place d'un puissant système de scripting en temps réel à base de Lua. Utilisation de Swig pour générer les bindings Lua. Gestion de plusieurs contexte d'execution Lua. Partage des objets entre les instance de Lua et le programme natif. Adaptation du garbage collector pour statisfaire le partage d;objet et les problèmatiques temps réel.

  • Recherche et développement des algorithmes de déplacement des automates (cinématique inversée, calculs matriciels, génération de modèles numériques des lentilles, gestion du scripting de scénario, etc...)

  • Formation des équipes techniques, principalement à l’étranger (Dubaï, Casablanca, Londres, Ajman,…)

  • Travail en collaboration avec divers corps de métier: spécialistes de la 3D, électroniciens, mécatronicien, électro-mécaniciens

Mots clé:

  • Programmation: C++, Assembleur, GNU toolchain (gcc), Eldk, CodeWarrior, Jtag, Autotools, Cmake, Doxygen…

  • Bibliothèques: STL, libpthreads, libeigen, libreadline, Qt, OpenGL, Swig, Lua…

  • Environnement: PowerPC, Freescale, Noyau Linux, U-Boot, Shell, Busybox, Debian, Buildbot, Subversion…

  • Ressourses: CAN, RS, USB, I2C, gpio, ethernet, hid, DOC, régulation PID et RST…

Depuis Mai 2006

Administration de http://sysmic.org et de http://xulfr.org. Plus d'1 million de clics par mois. Administration de Trac, du repository Subversion, des boites mails des utilisateurs, virtual hosts, statistiques, …

Janvier — Septembre 2006

Ingénieur développement système chez Easter-Eggs. SS2L spécialisée en développement et administration de systèmes open sources. Principale mission : développement d’un OCR sur ARM ayant pour but l’aide à la lecture pour les aveugles :

  • Compilation et utilisation de la toolchain Gnu avec une sonde Jtag

  • Initialisation du processeur : initialisation des horloges, gestion du cache d’instructions, mise en service du MMU,…

  • Développement des algorithmes de traitement d’image et de reconnaissance de texte

  • Profiling et optimisation de ceux-ci (15 images en 320x240 traitées par seconde).

  • Mise en place d’une Quality Assurance sur le projet. Compilation automatique, à l’aide des Autotools, et tests automatiques sur les architectures i386 et ARM (Shell et Python).

  • Travail en collaboration avec un électronicien

Mots clé: C, GNU toolchain (gcc), WinIDEA, JTAG, Autotools, Shell, Subversion, Doxygen, packaging Debian, DMA, MMU, ARM920T, …

Août — Octobre 2005

Tour d'Europe en train. Environ 13 pays visités en 9 semaines (Italie, Grèce, Allemagne, République Tchèque, Pologne, Slovaquie, Hongrie, Croatie, Slovénie, Espagne, Portugal, Danemark)

Février — Juillet 2005

Recherches sur la génération automatique de plannings de travail à Prologia.

Stage de fin d'études à Prologia.

  • Recherches sur la génération automatique de de planning de travail.

  • Recherches principalement orientées vers les métaheuristiques

  • Maquette en Java

Depuis 2005

Diverses contributions aux Logicels Libres (rapports de bugs, patchs, packaging,…). Développement d’un environnement de traitement de codes sources par lot. Voir Particulièrement utilisé pour l'évaluation automatique des projets des élèves dans le cadre de mon travail d'assistant pédagogique. Publié sous licence GPL. Détails disponibles sur http://rubygems.org/gems/uttk.

Mots clé: C++, KDE, Qt, Autotools, Subversion, packaging Debian

2004

Projet de fin d’étude : Recherche automatique de similarité de code. Utilisation de différents algorithmes de comparaisons à divers niveaux de la chaîne de compilation. Gestion de l’explosion combinatoire de ce genre de technique à l’aide d’utilisation massive de cache.

2004

Assistant pédagogique en C/UNIX pour les élèves de 1ère année d’ingénierie d’EPITA (∼250 élèves). Formateur Apache, Samba, Shell, Perl et technologies UNIX dans le cadre de la junior entreprise. Choix des contenus, écriture des cours, présentation des cours en amphithéâtre, évaluation des élèves.

Quelques sujets traités : administration Unix basique, Utilisation de d'Emacs et de Vim, CVS, Subversion, Perl, Shell, expressions régulières, sed/awk, IPC, Makefile, les licences logicielles

2004

Réalisation de divers projets liés au calcul scientifique et aux systèmes de prises de décisions dans le cadre d'EPITA:

  • Réalisation d'un Perceptron Multicouche

  • Etudes d'algorithmes (PPC, Métaheuristiques) pour la recherche de phrases réflexives

  • Etude des différents algorithmes de Programmation Par Contraintes

  • Emulateur d'ordinateurs quantiques

  • Génération de résumés automatiques

  • Calcul par cluster

  • Gestion documentaire automatique

  • Calculatrice vocale

  • Génération de forme 3D à partir de vues 2D

Avril 2004

Formateur Apache, Samba, Shell, Perl et technologies UNIX.

Contenu de la formation :

  • Utilisation d'apache comme reverse proxy sur un réseau

  • Load Balancing sur plusieurs serveurs Apache

  • Utilisation Samba comme Serveur de Partage, Serveur d'impression et Contrôleur de Domaine

  • Mise en place d'une base LDAP comme annuaire pour un serveur d'authentification Samba

  • Utilisation d'une station UNIX comme cliente d'un serveur d'authentification NT4

Septembre — Décembre 2003

Stage chez Dassault Aviation section Défense

  • Mise en place d'une chaîne de conception pour le système numérique du Mirage-2000 et du Rafale

  • Analyse de besoins

  • Rédaction d'un rapport d'analyse des besoins

2002 — 2003

Réalisation de beaucoup de projets dans le cadre d'EPITA:

  • Recherches sur la décompilation

  • 42sh : Shell proche de Bash

  • Tiger : Compilateur pour langage fonctionel

  • CoreWar : Machine virtuelle

  • Projet 73: Application d'algorithmes de recuit

  • OpenRaph: Contribution au Projet OpenWebMail. Ajout du support pour la signature de mail.

  • Bistromatique : Calculatrice sur nombres infinis

  • Mho : Démo en C++/C/Assembleur, utilisation d'OpenGL

  • Minimake : clone de Make

  • My_irc : Client + Server IRC

  • My_ftp : Serveur FTP

  • Yakard : Carnet d'adresse (Utilisation des technologies Java et Xml)

  • Ovide : Transformation de predicats (En Caml)

  • General : Recherche d'une strategie pour un jeu de plateau (Utilisation des technologies Java et Xml)

  • Chess : Jeu d'echec

  • Eyecandy : Clone de Tron

  • New : Réimplementation du builtin new

  • Infographie : Reconnaissance des pièces de monnaie a partir d'une photo

  • Analyse Numérique : Application des méthodes directes et algorithmes itératifs sur une équation parabolique

  • Réimplémantaion d'une partie de la Blibliotèque C standard

Juillet 2002

Stage au LISIF (Laboratoire des Instruments et Système d’Ile-de-France).

  • Mise en place d'un serveur de flux vidéo sur réseaux WiFi et Bluetooth

  • Utilisation de Darwin et de RealServer

2001 — 2002

Conception d'un chat sécurisé dans le cadre pédagogique d'EPITA

  • Implémentation d'algorithmes de cryptage RSA/3DES

  • Utilisation de Visual C++

  • http://www.sysmic.org/yoogoo

Juillet 2001

Maintenance informatique chez AFNOR (Association Française de Normalisation)

Août 2001

Maintenance informatique chez PSA (Peugeot-Citroën)

2001 — 2004

Diverses missions de maintenance informatique pour OTSI (IPSOS, AFNOR, Primagaz, Sage, Axa, Equant, Peugeot, Ford, Cartier, UPSA, PSG, Viel, Egg, CCF, UAF, ManFinancial, Fortis, … )

2000 — 2001

Conception d'un shoot'em up 3D dans le cadre pédagogique d'EPITA :

  • Utilisation de Direct X

  • Utilisation de Bordland Delphi

  • Conception d'un moteur 3D

2000 — 2004

Administration d'un réseau local (environ 10 postes).

  • Utilisation de Bind, DHCP, NAT, QoS, …

  • Nombreux services internes

Septembre 2000

Cueillette de pommes dans une exploitation fruitière

Formation

2008 — 2009

Cours d'automatique au CNAM (Conservatoire Nationnal des Arts et Métiers)

Juillet 2005

Diplôme d’ingénieur en informatique à l’EPITA (Ecole Pour l'Informatique et les Technologies Avancées) spécialité sciences cognitives et intelligence artificielle.

2000 — 2002

Cycle préparatoire à l'EPITA (Ecole Pour l'Informatique et les Technologies Avancées)

Juin 2000

Obtention avec mention Bien du Bac Scientifique option Technologie Industrielle Spécialité Physique

1997 — 2000

Cycle secondaire au Lycée Rémi Belleau (Nogent-le-Rotrou, 28)

1997

Obtention du Brevet des Collège au Collège Joachim-du-Bellay (Authon-du-Perche, 28)

Langues étrangères:

Connaissances

Systèmes embarqués

Programmation noyau Linux, cross-compilation, sondes Jtags, architecture de systèmes embarqués et temps réels, profiling et optimisation processeur, boot-on-lan … Experience de Motorola/Freescale, PowerPC, ARM

Systèmes d'exploitation

Expertise du système GNU/Linux (Debian, (K)Ubuntu, Mandrake, RedHat, LFS, … ), *BSD, Irix, ….

Intégration et QA

  • Expertise en méthodes de compilation

  • Pratique quotidienne du Shell et technologies associées (expressions régulières, etc … )

  • Mise en place de QA: BTS, subversion, fermes de compilation automatisées, remplissage automatiques de rapports de bugs, génération de documentation, …

Langages

  • Expertise technique de C et C++, Shell

  • Connaissance de Java, Perl, Assembleur (x86, 6800, 68000, Z80, ARM920T, PowerPC, Mips, …), Ruby, Caml, Delphi, Pascal

  • Expérience de Lisp, VHDL, Tiger, …

Intelligence Artificielle

Métaheuristiques, Programmation dynamique, Réseaux de neurones, Data mining, Raisonnements à base de règles Systèmes experts, Théorie des jeux, Programmation par contraintes, Traitement d'image, Calculs scientifiques, …

Réseaux

  • Maîtrise des services réseau courants: NetFilter, tftp, NFS, IpTables, Apache, MySQL, …

  • Mise en place de VPNs

Divers

  • UML

  • Technologies du web

  • Cryptographie

  • Contrôle et régulation de systèmes

  • Optique

  • 3D, réalité virtuelle

  • LaTeX

  • Autotools

  • Flex/Bison

  • Kde, Qt, DCOP

  • Emacs, Vim

Autres Activités