Expérience professionnelle
De fév. 2021 – en cours : Devialet, Développeur Embarqué
Projet : Pony– Enceinte intelligente SFR HOMESOUND
Développements sur le projet Liszt :
• Programmation des Pipelines pour le support du son multi-canal 5.1
• Création d’un algorithme de filtrage des synchronisations d’horloges SoC et WiFi/Timestamp
• Meetings avec l’intégrateur Sagemcom
Environnement : langage C; buildroot, gcc; Gstreamer, gdb, git; GitHub; minicom, Jtag; WiFi; Cortex
De oct. 2020 – dec, 2020 : Microport, Expert Architecture x86
Projet : SmartView – Tablette médicale / Intel SoC Bay Trail
Expertise à la résolution de bug kernel :
• Développement C & ASM du boucle de monitoring des états C-States du N2930 au sein de mon
driver Linux CoreFreq pour un troubleshooting du processeur
• Étude des datasheets du SoC, du contrôleur HPET et conformité ACPI
• Meetings avec le fabricant sur son implémentation firmware et des états S-States
Environnement : Windows-10, Kernel Linux; C; ASM x86 ; Intel SoC
De nov. 2018 à fév. 2020 : BERTIN IT, Développeur Kernel Embarqué
Projet : SHES – Hyperviseur embarqué
Création d’un driver de cryptographie :
• Spécification des besoins, en terme de registres AES, PRNG, SHA, pour le réalisateur du FPGA
• Développement du kernel module et du Client de commandes associées au pilotage des IP
• Pilote de sonde température via I2C/FPGA
Création d’un framework d’injections :
Développement d’un kernel module et de son Client de contrôle:
• Tracing par RCU, en temps réel, du call-flow du driver cible. Arbre d’appels restitué au format JSON
• Injection sur les entrées/sorties des fonctions à pénétrer. Cibles: Xen backend disk et réseaux
• Soumission de règles JSON pour altérer le parcours conditionnel du driver cible
• Rédaction des spécifications UML et de la stratégie de tests
Boostrap du Kernel Android sur Xilinx ZCU102
• Troubleshooting de la virtualisation d’Android et de l’affichage GPU via Mesa
Environnement : Xen; Linux ; langage C ; buildroot, gcc, gdb, GIT; GitLab; Vivado SDK; minicom; Jtag
De avril 2018 à ce jour : SAGEMCOM, Développeur Kernel
Projet : SetTopBox – Broadcom SOC
Programmation de Kernel module, mise en oeuvre :
• Réalisation et documentation d’un double driver pour la génération Hardware de nombres aléatoires:
(1) Bare system Broadcom cryptographic library; (2) Driver Nexus par ioctl
• Evolutions de la buildroot pour le portage du vidéo frame buffer et code Perl de la Toolchain
• Résolution du crash boot Kernel Android sur plateforme embedded + eMMC/NOR
Environnement : Kernel Broadcom Linux ; langage C et C++; cross-compiling, buildroot, gcc, gdb, SVN, GIT; Bugzilla, Forge Sagemcom; BOLT, minicom,
De avril 2017 à nov 2017 : Finances des marchés, Consultant Perfomance
Projet : Expertise sur les performances des serveurs de trading
• Spécialisation du code de CoreFreq pour l’analyse des serveurs haute-performance
• Tunning et recompilation du kernel et optimisation BIOS Hardware
Environnement : Linux RHEL; CIARA, Supermicro; 10G SolarFlare, Mellanox; compilateur standard gcc ; libc ; deboggueur gdb ; éditeur vi
De juin 2015 à en-cours : CYRIL INGENIERIE, Développeur Kernel
Projet : CoreFreq - Conception d’un logiciel de Perfomance pour Processeur multi-coeurs
Programmation de Kernel module - mise en oeuvre :
• l’initialisation dynamique du driver : device, region, class, arguments,
• les allocations mémoires en multiples varations: page, kmalloc, slab cache aligned
• automate de timers haute résolution par affinité CPU : hrtimer, smp_call_function()
• la projection sécurisée de mémoires partagés en user-space: remap_pfn_range()
• la synchronisation atomique du parallélisme d’exécution en mode Producteur-Consommateur des User-Space threads (bibliothèque assembleur LOCKLESS)
• l’enregistrement aux événements CPU hot-plugging et Kernel suspend/resume : register_hotcpu_notifier; les structures notifier_block et pm_ops, les affinités CPU
• l’établissement de la topologie CPU et Caches ; le requêtage du BUS PCI
• le décodage des informations Processeur par CPUID et registres MSR
• de l’algorithmie de collecte des compteurs de cycles C-States du PMU, des TSC, SMI, Power & Energie RAPL et Voltage VID
• la confection d’une SysGate pour la récupération périodique des informations Kernel: RCU des structures de tâches, RAM, gouverneur idle, policy cpufreq
• le traitement des ordres User-Space par Kernel IOCTL
Programmation des démons d’aggrégation et de contrôle
• la réception des pages mémoire de collecte via mmap() et en Posix threads
• l’agrégation des compteurs de cycles en indicateurs statistiques dont IPC, ratios, C-States, mesures
en cycles de fonctions benchmark
• le calcul en temps des fréquences Core, Uncore, Turbo et idle
• le décodage des ressources hardware en autre DRAM, Bus QPI, Hyper-Transport
• le découplage temporel et en double mémoires SHM des échanges producteur-consommateur,
synchronisé atomiquement et logique de bascules flip-flop
• un double anneau de gestion des ordres, respectivements driver et démons, faisant office du traitement des signaux UNIX
Programmation IHM de monitoring
• une bibliothèque de fenêtrage par accélération triple buffering (algorithme de jeux)
• le contrôle du logiciel et interractions utilisateurs (via traitement Ring)
• le rendu de l’ensemble des indicateurs statistiques et des informations Processeur au travers du mapping SHM avec les démons
• un mode de fonctionnement type cli et l’export des indicateurs en JSON
Environnement : Kernel Linux compatible 3.x et 4.x ; langage C et inline ASM; suite de compilation standard gcc, libc ; debugging gdb, valgrind ; versionning GIT
Étude des ouvrages de référence :
Intel Architectures Software Developer’s Manual ;
AMD64 Architecture Programmer’s Manual ;
ARM1176JZF-S Technical Reference Manual ;
ARM Vector Floating Point Instruction Set ;
Décodage de Datasheets (non exhaustif):
Intel Core ix Series dont micro-architectures Nehalem, SandyBridge, IVB, Haswell, SKL ; Intel X58
Express Chipset ; Intel Chipset & Memory Controller Families 965, P35 (Core 2), Xeon
BIOS and Kernel Developer's Guide for AMD Processor (des familles 0Fh à Ryzen) et Hyper-
Transport
Micron Technical Notes DRAM DDR2, DDR3 architecture and registers
De févr 2015 à juil 2016 : CYRIL INGENIERIE, Développeur iOS
Projet : Programmation Fullstack d’une application mobile pour une Start-Up
Programmation MVC des vues métiers suivantes
• le profilage des utilisateurs et algorithmes de recherches multi-critères
• le rendu du fil des évènements et des notifications de présence
• la création d’une messagerie privative et du tChat en 2 à 2 ou conférence
• le rendu de la Map ainsi que de la localisation GPS des contacts
• consultation, modification, suppression des assets photos, des droits d’accès
• la gestion des in-app purchase et coupons de rechargement
Développement du Backend en NodeJS et NoSQL
• le modèle relationnel entre utilisateurs (ami, enemi, invité)
• la conception des fonctions Backend-Database en API Cloud JS
• les spécifications du setup de l’architecture serveur, réseau
Environnement : Langage objet Swift UIKit, StoreKit, MapKit, CoreLocation, Foundation, MongoDB, JS, Nginx, Amazon EC2 Linux ; ide Xcode sous OS X
De janv 2012 à déc 2014 : CYRIL INGENIERIE, Développeur C Linux & FreeBSD
Projet : Xfreq Conception d’une GUI de monitoring Processeur multi-coeurs
Programmation en User-Space du Démon et de l’IHM pour X-Window
• la collecte des compteurs du PMU est similaire à celle de CoreFreq mais se réalise via l’interface
« lente » de Linux : msr.ko ; par read/write de mot 64 bits
• décodage du SmBIOS, CPUID et MSR pour l’obtention d’informations hardware
• énumérations des données d’usage Kernel au travers des devices FS et IOCTL
• mode producteur-consommateur des threads serveurs et GUI via SHM
• la conception des Widgets de la GUI, boutons, décorations et graphiques 2D s’appuie sur la seule librairie Xlib, en employant une technique de double buffering pour limiter le flickering
• du multi-threading est employé pour dissocier le rendu et les évènements Xlib, ainsi que les échanges avec le démon
Environnement : Posix threads Linux et FreeBSD ; langage C et inline ASM; compilation gcc, clang ; x-lib, libc ; debugging gdb, ddd, valgrind ; ide Code::Blocks
Projet : Raspberry-Pi
Étude du mini-computer ARM
• programmation de l’assembleur ARM
• portage d’une application mathématique de rendu des coniques en OpenGL
• distribution Linux de la charge de compilation ARM via distcc sur x86
Environnement : ArchLinux ARM ; langage C et inline ASM; suite de compilation standard gcc, libc; debugging gdb ; distcc ; OpenGL
Étude des ouvrages de référence :
ARM1176JZF-S Technical Référence Manual ;
ARM Vector Floating Point Instruction Set ;
De 2008 à 2014 : CYRIL INGENIERIE, Chef de Projet IT
Projet : Chef de projets Telecom & Web
• SFR : projet de transformation des flux XML en JSON du CTI Genesys pour Canal+
• Orange : projet de scripting du vectoring des ACD AVAYA de NESPRESSO
• Orange : scrum-master de la refonte Web Entreprise pour EuropCar
• GDF-SUEZ : MOA projet de transformation des routages ACD AVAYA et nouvelle IHM agent
• La Banque Postale : MOA projet de couplage des ACD avec CTI et VoIP Genesys
Environnement : CTI Genesys ; ACD AVAYA ; Agile
De 2004 à 2007 : SFR, Consultant IT
Projet : Selfcare Web ; SI La Carte
• Expression des besoins et VABF du nouveau portail Web de Rechargement La Carte
• Intégration de livrables TMA dans les traitements et bases SQL de la gestion des comptes pré-payés
La Carte
Environnement : Oracle SQL ; Websphere ; MS-Project; Visio
De 1997 à 2003 : Bouygues Telecom, Architecte SVI
Projet : Programmation de serveurs vocaux télécoms
• Conception des applications vocales SVI : "680 Arrêté de consommation", "636 fidélisation", "0.800.29.1000 code...