CV Expert Linux embarqué

Transcription

CV Expert Linux embarqué
Jérôme Pouiller
4 rue Alain Gerbault
35000 Rennes – France
——
Tel. : +33 (0)6 64 18 99 61
[email protected]
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:
• Odyssée Systèmes: Portage du noyau Linux sur un SoC de Kontron (PowerPC 8541)
• Enensys: Audit sur une régression de performance d'une nouvelle plateforme matérielle. Optimisation
des timings de la DDR.
• Eolane: Audit sur un bug sur le DMA du controleur d'image de l'iMX6. Isolation des accès disque sur un
CPU afin d'amélioré les temps de réponses des autres CPU.
• Bouygues Telecom: Audit des obligations légales liées à la réutilisation de projets open source dans les
produits fixes de Bouygues Telecom
• 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, Buildroot, 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
Décembre
2013
Merck Millipore. Optimisation des performances de rendu HTML5 sur iMX53. Optimisation du moteur
Webkit de Qt5. Création d'un BSP optimisé pour les besoins de Merck.
Mots clé:
• Développement: Buildroot, Qt5, EFL, Webkit, OpenGL, Xorg, Wayland, Freedreno, tslib, fontconfig,
gcc...
Septembre
2013
Canon Research. Etude de fesabilité : Modification d'un firmware de chipset Wifi afin d'implémenter un
protocole Wifi expérimental :
• Etude des firmwares et des drivers des chipsets Broadcom et Atheros
• Etude du protocole d'expérimentation
Avril 2013 — Canon Research. Optimisaion du codec H265 (aka HEVC) pour les vidéos de très haute définition
Septembre
(7840x4320). Tout l'enjeux de cette optimisation se situe sur la bonne parallèleisation des traitements
2013
(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
• Utilisation des instructions SSE4 et AVX2
• Conception nouvelle architecture de parallélisation des calculs
• 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 2013 — Enensys. Développement d'un driver pour une interface d'acquisition vidéo MPEG :
Avril 2013
• 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 — Areva souhaitait le développement d’une nouvelle version d’un de ces systèmes de supervision de réacteur
Octobre 2012 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 — En 2008, Bouygues Telecom devient fournisseur d'accès internet. En 2010, l'entreprise décide d'internaliser
Juin 2012
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 2009Nagra Vision, société spécialisée dans la fourniture d'outils cryptographique pour la diffusion audiovisuelle,
— Mai 2010 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 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
Hybrid MC est une PME de 7 personnes vendant des solutions de virtualisation de décors pour
2006 —
l'audiovisuel. La virtualisation consiste à instrumenter les caméras afin de connaitre très précisément leur
Février 2009 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…
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, …
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).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 — Stage chez Dassault Aviation section Défense
Décembre
• Mise en place d'une chaîne de conception pour le système numérique du Mirage-2000 et du Rafale
2003
• Analyse de besoins
• Rédaction d'un rapport d'analyse des besoins
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
Juillet 2001
Maintenance informatique chez AFNOR (Association Française de Normalisation)
Août 2001
Maintenance informatique chez PSA (Peugeot-Citroën)
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.
Juin 2000
Obtention avec mention Bien du Bac Scientifique option Technologie Industrielle Spécialité Physique
Langues étrangères:
• Anglais, parlé/écrit
• Espagnol, intermédiaire
• Allemand, scolaire
Autres Activités
•
•
•
•
•
•
•
•
Mobilité internationale
Goût pour les voyages
Défenseur du mouvement ``libre''
Jongle (Balles, Poïs, Swinging, Massues)
Escalade, Randonnée
Snowboard
Aquariophilie
Permis de conduire B