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
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
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
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
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
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
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
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
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
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