Architecte en logiciels embarqués, j'ai plus de 17 ans d'expérience dans la conception de solutions logicielles critiques et performantes. Spécialisé dans les systèmes temps réel, je suis expert en gestion des contraintes de performance, de sécurité et de fiabilité pour des applications industrielles, automobiles et médicales. Mon approche se concentre sur l'optimisation de la qualité, de la robustesse et de la maintenabilité des logiciels. Passionné par les défis technologiques, je guide les équipes dans la réalisation de solutions innovantes et sur mesure.
Expériences professionnelles
Responsable technique logiciel
Maatel, Moirans
2017 - aujourd'hui
• Management de l’équipe logiciel
• Assignation des membres de l’équipe logiciel sur les différents projets
• Chiffrage des offres
⢠Architecte logiciel
• Conception d’un auto-transfuseur de sang (projet médical classe C, ~1 million de lignes de code)
â Rédaction des spécifications de la machine
â Architecture sur deux microcontrôleurs et assignation des périphériques (STM32F767 +
STM32F205)
â Assignation des périphériques et des fonctions hardware
â Codage des briques logicielles bas niveau
⪠Contrôle moteur pas à pas
⪠Détecteur de type de liquide (ADC + timers)
⪠Mesure de poids (pesons avec ADC externe)
⪠Gestion d’une douchette code-barres série
⪠Gestion haut-parleur avec vérification son joué basé sur la réécoute via microphone
⪠Gestion d’un chargeur de batterie SM-BUS (I2C)
⪠Lecteur hématocrite basé sur l’utilisation de LEDs infrarouge (ADC + timers)
⪠Gestion de la communication USB entre les deux microcontrôleurs
⪠Gestion système de redondance entre les deux microcontrôleurs
⪠Mise à jour via USB (device)
⪠Gestion périphériques Usb Host (Hub, dalle tactile HID, Mass Storage USB, CDC)
â Codage des briques logicielles haut niveau
⪠Machine d’état
⪠Gestion des écrans
⪠Gestion d’un historique machine dans une Emmc
â Conception d’un bootloader permettant la mise à jour des deux logiciels via USB et Uart
â Ecriture des test unitaires (LDRA)
â Rédaction documents qualité (SRS, SAD, SUS, SPVU, RPVU, SPV, SRPV, SLOC, …)
• Conception d’une machine de conservation des cornées (projet médical classe A)
â Rédaction des spécifications de la machine
â Architecture machine (1 micro STM32F767 + 12 STM32F205)
â Assignation des périphériques et des fonctions hardware
â Codage des briques logicielles
⪠Mise en place d’une communication CAN entre les 13 microcontrôleurs
⪠Développement firmware gestion mémoire Flash externe (QSPI)
⪠Gestion de 124 électrovannes
⪠Gestion capteur pression (ADC et I2C)
⪠Gestion régulateurs pression
⪠Gestion communication Ethernet
⪠Gestion d’une douchette code-barres USB
⪠Gestion écran (272x480 16 bits)
⪠Conception des écrans
⪠Gestion dalle tactile
⪠Codage machine d’état de la machine
⪠Design graphique des écrans
â Conception de deux bootloarders permettant la mise à jour suivantes :
⪠STM32H767 : USB, Ethernet et Uart
⪠STM32F205 : CAN + Uart
â Ecriture des test unitaires (LDRA)
â Rédaction documents qualité (SRS, SAD, SPV, SRPV, …)
• Conception d’un logiciel permettant de contrôler une rainureuse (projet industriel)
â Rédaction des spécifications
Architecture logiciel (STM32G431)
â Assignation des périphériques et des fonctions hardware
â Codage des briques logicielles
⪠Gestion moteur BrushLess 230V (2kW) avec et sans capteur effets Hall
⪠Gestion de la sécurité électronique (température MOS, tension alim, …)
â Rédaction documents qualité (SRS, SAD, SPV, SRPV)
• Conception d’un logiciel permettant de déterminer l’élasticité de la peau (projet industriel)
â Rédaction des spécifications
â Architecture logiciel (STM32G473)
â Assignation des périphériques et des fonctions hardware
â Codage des briques logicielles
⪠Gestion capteur de position de précision avec un ADC externe
⪠Gestion capteur de pression avec un ADC interne
⪠Gestion communication Usb device CDC
• Conception d’un logiciel permettant de contrôler un détecteur de bonne mise en place d’implants
dentaires (projet médical de classe C)
â Rédaction des spécifications
â Architecture logiciel (STM32G474)
â Assignation des périphériques et des fonctions hardware
â Codage des briques logicielles
⪠Gestion ADC avec une fréquence d’échantillonnage de 10 MHz sur 12 bits
⪠Gestion alimentation 100V avec régulateur contrôlé par le microcontrôleur
⪠Gestion des gains avec des DACs
⪠Gestion d’un écran 128 x 32 pixels I2C
⪠Gestion d’une base de données (des implants) dans une mémoire QSPI
⪠Gestion d’un chargeur de batterie I2C
⪠Conception des écrans du dispositif
â Gestion d’un bootloader avec mise à jour par USB (dépose d’un fichier dans un répertoire)
â Ecriture des test unitaires (LDRA)
â Rédaction documents qualité (SRS, SAD, SUS, SPVU, RPVU, SPV, SRPV, SLOC, …)
• Conception d’un logiciel permettant de contrôler un module de tableau électrique de mesure de terre
(projet industriel)
â Rédaction des spécifications
â Architecture logiciel (EFR32MG13)
â Assignation des périphériques et des fonctions hardware
â Assignation des périphériques et des fonctions hardware
â Codage des briques logicielles
⪠Gestion ADC pour la capture des tensions de ligne et de terre
⪠Gestion Triac pour la détection de terre
⪠Gestion protocole Bluetooth GATT
⪠Elaboration de l’algorithme de détection de la présence de la terre
â Rédaction documents qualité (SRS, SAD, SUS, SPV, SRPV, …)
â Utilisation d’un OS temps réel (FreeRTOS)
Environnement technique :
o IAR, Simplicity Studio, Stm32CubeIDE
o Langage C, Assembleur, Batch, Python, Svn
Responsable intégration logicielle
Trepia(sous-traitance chez Fresenius Kabi), Saint-Geoires
2015 - aujourd'hui
• Management de l’équipe d’intégration
• Assignation des membres de l’équipe logiciel sur les différents projets
• Mise en place et sélection des outils d’intégration logiciel (Jira, Jenkins, …)
• Mise en place et optimisation d’une chaine de compilation GCC sous Linux pour cible RM48 et AM335x
• Mise en place des tests unitaires avec CUnit
• Mise en place du taux de couverture de code avec GCov
⢠Architecte logiciel (11 mois)
• Rédaction des spécifications (UML)
• Développement de briques logicielles sur microcontrôleur RM48 et sur os temps réel SafeRTOS
• Développement de briques logicielles sur processeur AM335x et sur Linux
Environnement technique :
o GCC, Eclipse
o Langage C, C++, Assembleur, Bash, Python, Git, Svn, ClearCase
o Jenkins, Jira, Confluence
Ingénieur expert logiciel embaqué
Portalp International, Fontaine
2012 - aujourd'hui
• Maintenance d’un logiciel pour porte piétonne coulissantes (HCS12)
â Ajout de fonctionnalités sur code existant
â Amélioration des algorithmes et maintenance du logiciel existant
â Respect de la norme EN16005
â Mise en place de tests unitaires
• Développement d’un logiciel pour porte piétonne battante (HCS12)
â Amélioration du cahier des charges de la porte
â Refonte complète du logiciel de la porte en repartant du cahier des charges
â Respect de la norme EN16005
• Développement d’un logiciel pour porte piétonne coulissante nouvelle génération (STM32)
â Rédaction du cahier des charges
â Mise en place du système de compilation basé sur GCC et Makefile
â Développement des briques bas niveau sur STM32F205
⪠ADC, I2C, Timers, …
⪠Mémoires externes (QSPI)
⪠USB Device
⪠Interfaces série pour la communication avec les accessoires
Environnement technique :
o GCC, Eclipse, CodeWarrior
o Langage C, Assembleur, Cvs
Architecte logiciel embaqué
Hypnos-Solutions, Grenoble –
2012 - aujourd'hui
• Conception d’un OS temps réel modulaire
â Rédaction spécification du système d’exploitation
â Codage de briques logicielles
⪠Scheduler bas niveau (sur cible Cortex-M0, Cortex-M0+, Cortex-M3 et Cortex-M4)
⪠Mise en place d’un BSP sur cible STM32F205, STM32F407, STM32F051
⪠Codage système de fichier virtuel
⪠Codage d’une bibliothèque USB Host sur STM32
⪠Codage d’une bibliothèque USB Device sur STM32
â Mise en place de tests unitaire
â Mise en place d’une intégration continue avec compilation quotidienne
â Mise en place d’une chaine de compilation basé sur GCC
• Conception d’un site internet basé sur Symfony pour la création du BSP bas niveau
â Codage des contrôleurs permettant de construire les pages du site internet
â Conception graphique des pages du site
â Gestion dans une base de données SQL des données du site
â Mise en place d’une api REST permettant la création d’objets distant
â Gestion de la sécurité du site internet avec plusieurs niveaux de privilège
Environnement technique :
o GCC, Linux
o Langage C, Bash, Assembleur, Git, PHP, SQL
o Symfony, HTML, CSS
Ingénieur logicie
Hypnos3D, Grenoble
2010 - aujourd'hui
• Conception d’un moteur 3D multiplateforme en Objective-C et C#
â Rédaction spécification du moteur 3D
â Codage de briques logicielles
⪠Codage des mécanismes des Shaders
⪠Codage des fonctions de bases en OpenGL
⪠Codage du framework ABI permettant de faire tourner le moteur 3D en C# sur cible
MacOS et IOS
⪠Codage d’un outil permettant de charger les grille (triangles) des objets 3D
⪠Codage d’un algorithme permettant de créer des cartes en relief
⪠Codage d’algorithmes permettant l’illumination des scènes
⪠Codage d’algorithmes permettant de déterminer les collisions entre les objets
â Mise en place de tests unitaire
â Rédaction documentation de la librairie
â Mise en place d’une intégration continue avec compilation quotidienne
Environnement technique :
o XCode, Visual Studio, Gcc, Linux, MacOs, IOS, Android, XBox
o Langage C, C#, ObjectiveC, Bash, OpenGL, Git
Ingénieur logiciel embarqué
Avisto, Sophia Antipolis
2010 - aujourd'hui
• Conception d’un cluster numérique pour Jaguar et Land Rover
â Rédaction des spécifications (UML)
â Développement sur environnement QNX
â Développement de fonctions graphique (jauge vitesse voiture et tours minute moteur)
Environnement technique :
o GCC, Eclipse
o Langage C, C++, Assembleur, PERL, Svn
Ingénieur recherche et développement en logiciel
Milpix, Montbonnot-Saint-Martin
2009 - aujourd'hui
• Optimisation bas niveau d’algorithmes appliqué à la recherche d’images
â Optimisation sur carte graphique de type TESLA en langage CUDA
• Portage du code Python vers du code C++ pour optimiser la vitesse de traitement des images
• Mise en place d’un serveur multi-thread permettant de traiter plus de 10 recherches d’images par
secondes.
• Conception d’un moteur d’indexation d’images en C++ et SQL
• Conception d’un back office permettant de configurer différents types de recherches en fonction de
clients tiers (PHP, HTML, CSS, JavaScript)
Environnement technique :
o GCC, Linux
o Langage C, C++, Assembleur, CUDA, Svn, SQL, PHP, JavaScript
o Carte graphique TESLA
o HTML, CSS
Ingénieur outils développement (ODL)
INRIA, Montbonnot-Saint-Martin
2007 - aujourd'hui
Optimisation bas niveau d’algorithmes appliqué à la recherche d’images
â Refonte du code source en C pour rendre le code industrialisable (ancien code de recherche) →
multiplication par 2 des performances par rapport au code initial
â Optimisation en assembleur X86 avec les jeux d’instructions SIMD (MMS, SSE2, SSE3, SSE4) →
multiplication par 5 des performances par rapport au code C
â Optimisation sur carte graphique NVIDIA GTX en langage CUDA → multiplication par 18 des
performances par rapport au code en assembleur
â Multiplication des performances globales de l’algorithme par un facteur 180.
• Conception d’un démonstrateur Web pour montrer les performances de l’algorithme sur une recherche
sur le net.
â Le back est écrit en Python
â Le front est écrit en HTML, CSS et JavaScript (bare-metal)
Environnement technique :
o GCC, Linux
o Langage C, Assembleur, CUDA, Svn, Python, JavaScript
o Carte graphique NVIDIA GTX
o HTML, CSS
Etudiant en électronique et logiciel embarqué
JuniorEntreprise (ENSERG), Grenoble
2007 - aujourd'hui
• Conception d’un logiciel permettant ce contrôler un outil comptage de personne dans les supermarchés
â Analyse du cahier des charges
â Développement sur cible ATMEGA128
â Développement d’une pile TCP/IP
â Mise en place d’algorithmes de comptage
Environnement technique :
o ATMega128
o Langage C
Etudiant en électronique et logiciel embarqué
ENSERG, Grenoble
2006 - aujourd'hui
• Conception d’un afficheur graphique sphérique à LED
â Rédaction du cahier des charges
â Conception du schéma électronique
â Routage du circuit imprimé (2 couches)
â Câblage de la carte électronique
â Programmation du microcontrôleur PIC en assembleur
â Programmation des FPGAs en VHDL
â Programmation du logiciel PC en Java
Environnement technique :
o Windows, Linux
o Langage Assembleur, VHDL, Java
Études et formations
Diplôme d’ingénieur électronique et radioélectricité –
Grenoble-INP ENSERG
Langues
Anglais - C2
Autres compétences
COMPETENCES
Langages C, C++, Assembleur, C#, ObjectiveC, Python, PHP, HTML, CSS, JavaScript
Protocoles USB device, USB Host, CAN, I2C, SPI, UART, MQTT, Bluetooth, Ethernet, OneWire, EthernetIP,
ProfiBus, ProfiNet
Composants ARM Cortex M0+/M3/M4/M7, RM48, STM32, Linux embarqué Yocto
Outils IAR, Eclipse, STM32CubeIDE, Visual Studio Code
SVN, GIT, CVS, ClearCase
Instrumentation Générateurs de signaux, Alimentation continue, oscilloscope, analyseur de spectre, multimètre,
analyseur logique, …
LANGUES
Français Langue Maternelle
Anglais Professionnel