Franck - Chef de projet C
Ref : 130903H001-
92400 COURBEVOIE
-
Chef de projet, Consultant, Développeur (44 ans)
-
Freelance
Expérience
2013-2020 Consultant indépendant en logiciel embarqué
Depuis 01/2018 - Samsung / HARMAN (région parisienne)
Développement et maintenance de l’hyperviseur de type 1 de Samsung/HARMAN utilisé dans le domaine automobile (Audi, Daimler)
Virtualisation de systèmes Cockpit/Infotainment pour différent projets automobiles à base de processeurs ARMv8 de Samsung ou Mediatek.
Développement du driver de virtualisation des clocks Linux
2013-2016 Consultant indépendant en logiciel embarqué
Depuis 08/2015 - Coyote System (Paris)
⦁ Développement du dernier produit connecté de Coyote : filesystem buildroot, conception de la mise à jour fiabilisée du système, tests de production (GPS, bluetooth, wifi, GPIOs, ...).
⦁ Développement des systèmes Androïd des boîtiers Coyote.
⦁ Re-design du support de la video du Coyote S après étude comparative des différents codecs et de leur accélération matérielle (MPEG4 Visual et H264).
⦁ Support de la mise à jour du système par USB sur le Coyote Mini
⦁ Support de la mise à jour de la cartographie par USB (création d’un format de fichier de cartographie signé et sécurisé, RSA, SHA-2, AES-256 CBC).
⦁ Prototypage d’un dock bluetooth permettant d’implémenter un kit main libre
11/2013 - 08/2015 - Etrali Trading Solutions (Paris)
⦁ Développement et maintenance du système embarqué de téléphonie sur IP multicast : distribution linux “maison”, mécanisme de mise à jour, serveur de gestion de flux audio écrit en C basé sur ALSA, RTP, SRTP).
⦁ Support d’une nouvelle carte CPU x86: travail avec le fournisseur, revue des schémas, mise à jour du noyau linux, choix de la flash, drivers de GPIOs.
⦁ Optimisations majeures : division de la latence audio par deux, et multiplication des capacités audio par 8 (nombre de flux UDP).
Mars 2014 - Projet de startup
⦁ Projet de bracelet connecté pour le contrôle d’accès
⦁ Etude de différents SoC bluetooth LE
2012–2013 Responsable technique – Cy-Play (Paris)
2008–2012 Embedded Software Engineer – NVIDIA (Munich, USA, France)
● Portage du driver graphique de NVIDIA sur un hyperviseur (PikeOS).
● Développement logiciel embarqué Infotainment BMW (CA: $100M).
● Développement et maintenance logiciel embarqué Infotainment Audi.
● Portage du driver graphique de NVIDIA sur QNX.
● Écriture d'un pilote graphique pour NVIDIA Geforce 4 depuis zéro pour une borne d'arcade à base de processeur 68k (CA: $3-4M).
2002-2008 Ingénieur en systèmes embarqués – VisioWave, General Electric (Lausanne, Suisse)
Développement d'une plate-forme embarquée Linux / ARM
Développement d'une plate-forme d'encodage / décodage vidéo basée sur un processeur TI DaVinci (double coeur ARM/DSP) et un système MontaVista Linux :
● Excellente compréhension du système allant du matériel à l'applicatif.
● Adaptation du chargeur d'amorçage (u-boot) et du noyau linux au nouveau
matériel (DDR, flash, EEPROM).
● Construction d'un système de fichier sur mesure en mémoire vive (initrd).
● Développement d'un mécanisme fiable de mise à jour de la flash, basculant
sur système linux minimaliste en cas d'interruption.
● Développement de pilotes de périphériques linux pour le décodeur vidéo
ADV7180, les contrôleurs GPIO, I2C et PWM du DaVinci.
● Interfaçage avec les codecs audio / video (PCM / H264).
● Ecriture d’un outil de détection de fuites mémoires à distance.
● Maintenance sur le streaming video (version maison de RTSP/RTP)
● Maintenance du pilote d'entrée vidéo (basé sur l'interface video for linux) et
de sortie vidéo (basé sur l'interface linux framebuffer) fournis par
MontaVista.
● Utilisation intensive des compilateurs croisés(gcc), débogueurs à distance
(gdb/gdbserver), des outils d'analyse de binaires (objdump, nm, …),
d'émulateurs et débogueurs JTAG.
● Utilisation des options de make, gcc et ld pour développer un système de
compilation automatique optimisé.
Développement d'un système d'exploitation simplifié pour Intel
En tant que projet personnel, développement d'un système d'exploitation simplifié
pour processeurs x86 :
● Modèle de segmentation plate
● Passage en mode protégé
● Lecture du noyau sur le premier disque dur ATA
● Activation de la pagination
● Pilote VGA simplifié
● Pilote de clavier simplifié
● Ordonnanceur simplifié et lancement de deux tâches
Développement d'une bibliothèque en C++ contrôlant les entrées / sorties
vidéo de nos serveurs
Conception et implémentation d'un module C++ permettant aux couches logicielles
supérieures d'énumérer et de contrôler les entrées / sorties vidéo des anciennes et
nouvelles générations de cartes.
Développement d'une plate-forme Windows XP embarquée
● Développement d'outils pour évaluer les performances des cartes réseaux et
des disques durs.
● Excellente compréhension de l'architecture du PC.
● Développement de pilotes ISA et PCI sous Windows pour le contrôle des
ventilateurs, des voltages et des températures de la carte mère.
● Génération d'images Windows XP embarquées.
Développement d'applications de test en C++
● Développement d'applications de test basées sur XML pour nos serveurs
audio/vidéo.
● Développement d'une application en C++ permettant de modéliser le
comportement de nos systèmes embarqués (relation entre l'utilisation du
processeur, le nombre d'entrées / sorties vidéo, les stockages, ...).
Développement d'une plate-forme embarquée Linux / Power PC
Développement et maintenance d'un serveur audio / vidéo en C++ sur un système
MontaVista Linux. Implémentation d’une API système cross-plateforme Windows /
Linux. Implémentation de pilotes GPIO et I2C sous Linux.
2000-2002 Stages / Projets étudiants
Développement d'une application java client/serveur
Projet étudiant à l'EPFL: développement d'une application java client/serveur de
gestion d'alarmes (basée sur RMI et une base de données SQL).
Développement en VHDL
Projet étudiant à l'EPFL: développements en VHDL d'un “jeu de la vie” sur FPGA,
incluant un contrôleur VGA pour l'affichage, un UART pour la transmission de l'état
initial, et un contrôleur mémoire.
Une expérience en OpenGL
Projet de fin d'année a l'ENSEIRB: convertisseur DirectX/OpenGL. Portage de la
partie cliente de GLX (le support OpenGL pour X) sur MS Windows.
Affichage vidéo optimisé sous Linux
Stage chez VisioWave R&D – Lausanne, Suisse. Développement d'un module
d'affichage vidéo en C/C++ sous Linux (utilisant XVideo, XShm, ou l'interface
Framebuffer). Développement d'un module JNI (Java Native Interface) pour fournir
une interface sous Java.
Compétences
Générales
Très bonne culture générale informatique : systèmes d'exploitation, programmation
(impérative, fonctionnelle, logique, objet, HDL), architecture des systèmes
embarqués, théorie des réseaux, bases de données, théorie de la compilation,
cryptographie, interfaces homme-machine, ... Gestion de projet, excellent
relationnel.
Environnements
Capable de travailler sous Linux et Windows: GNU Emacs/Makefile/GCC/GDB,
Microsoft Visual C++/Word, Perforce/GIT. Linux reste mon environnement de
développement favori.
Langages & Bibliothèques
Bonnes connaissances en C/C++. Expériences réactivables en Java, Ada, Pascal,
Scheme, Prolog, Asm 68k/ARM/x86, Bash, Uml, Html/CSS, différents formats XML
du W3C. Bonne connaissance de l'API POSIX. Expériences réactivables de l'API
Windows, Xlib, Opengl, Qt, OpenKode.
Langues
● Français (langue maternelle)
● Anglais (très bon niveau, a vécu un an et demi en Californie)
● Allemand (bon niveau, a vécu un an à Munich)
Éducation
2002-2003 – EPFL
Étudiant d'échange en informatique à l'EPFL (École Polytechnique Fédérale de
Lausanne) - Suisse.
2000-2003 - ENSEIRB
Diplôme d'ingénieur en informatique avec mention bien à l'ENSEIRB (École Nationale
Supérieure d'Électronique, Informatique, et Radiocommunications de Bordeaux),
Talence. Dernière année passée à l'EPFL en tant qu'étudiant d'échange.
1997-2000 – Classes préparatoires aux grandes écoles
MPSI puis MP* au lycée Fabert à Metz.
1997 – Baccalauréat scientifique, mention bien
Lycée Fabert à Metz.