Ingénieur en systèmes embarqués et électronique numérique, spécialisé en IA embarquée, cybersécurité et FPGA. Je recherche aujourd’hui une opportunité en R&D pour transformer des contraintes terrain en solutions fiables et industrialisables. Disponible immédiatement, je m’intègre rapidement aux équipes et j’aime faire le lien entre logiciel bas niveau, matériel et IA.
Bonjour, je suis Jawad ALI.
À propos
Je conçois et développe des systèmes embarqués et des solutions d’électronique numérique, de l’étude du besoin jusqu’au démonstrateur sur cible. Mon parcours à l’ENSEIRB-MATMECA, orienté systèmes embarqués, logiciels bas niveau, objets connectés, FPGA et sécurité, m’a permis de construire une base solide aussi bien en matériel qu’en logiciel.
Au fil de mes stages et projets, j’ai travaillé sur l’IA embarquée (TinyML, TensorFlow Lite / ONNX sur plateformes contraintes), la cybersécurité des systèmes embarqués (détection de malwares par IA sur cibles ARM, intégration sous Linux embarqué, Arm TrustZone) et l’électronique pour environnements contraints, notamment dans le cadre du projet nanosatellite IONSAT au Centre Spatial de l’École Polytechnique. J’aime suivre un projet de bout en bout : cadrage technique, choix d’architectures, prototypage sur microcontrôleurs ou FPGA, intégration sous Linux embarqué, tests et validation sur banc.
Ce portfolio présente une sélection de projets en systèmes embarqués, IA embarquée, FPGA et architectures processeur. N’hésite pas à me contacter pour discuter plus en détail d’un projet, d’une techno ou d’un besoin spécifique.
- Localisation France (télétravail possible)
- Domaines systèmes embarqués, IA embarquée / TinyML, électronique numérique, FPGA, Linux embarqué, IoT
- Objectif Nouvelle opportunité en ingénierie / R&D pour contribuer à des projets innovants mêlant embarqué, IA et cybersécurité
- Langues Français, Anglais, Arabe
Formation
Ingénieur (bac +5) – électronique, option systèmes embarqués
- systèmes embarqués, logiciels embarqués, systèmes d’exploitation.
- FPGA et description matérielle, objets connectés, réseaux.
- Intelligence artificielle, programmation, sécurité des systèmes embarqués.
Classes Préparatoires aux Grandes Écoles – TSI
- Formation intensive en mathématiques, physique et sciences de l’ingénieur.
- Préparation aux concours d’écoles d’ingénieurs – filière Technologies et Sciences Industrielles.
Expérience
Stage de fin d’études – Détection de malwares par IA embarquée
- Personnalisation d’une distribution Linux avec Buildroot pour cibles ARM.
- Implémentation et intégration de modèles IA pour la détection embarquée de malwares.
- Développement d’une Trusted Application sécurisée sous Arm TrustZone.
- Construction d’un démonstrateur embarqué complet comprenant l’ensemble de la solution.
Stage – Projet nanosatellite IONSAT
- Conception et embarquement d’une carte d’interface électronique destinée à la passivation du nanosatellite.
- Implémentation de protocoles I2C, UART et CAN pour la communication embarquée.
- Participation au développement d’équipements électroniques pour environnement spatial.
Projets
Cours et projets en systèmes temps réel
- Étude des systèmes temps réel : modèles de tâches, contraintes temporelles (temps de réponse borné) et principales politiques d’ordonnancement.
- Introduction au temps réel sous Linux : comparaison des solutions (PREEMPT-RT, Xenomai), mise en œuvre et mesure de latence sur architectures x86 et ARM (Raspberry Pi).
- Génération d’un RAM disk, compilation et configuration d’un noyau Linux Xenomai, mise en place du boot sur carte Raspberry Pi dédiée.
- Développement en C d’applications temps réel multithread avec les API Xenomai Alchemy et POSIX/Cobalt : tâches périodiques, gestion d’E/S, chenillard, applications de test de latence.
- Mise en œuvre de mécanismes de synchronisation (mutex) et gestion de ressources partagées : rendez-vous entre threads, résolution de problèmes classiques (ex. philosophes).
Programmation réseau & sockets (C – TCP/UDP)
- Mise en œuvre de clients et serveurs TCP/UDP : applications type myftp, mydate, serveurs d’écho/ping.
- Manipulation des appels systèmes réseau : création de sockets, bind, listen, accept, communication client/serveur.
- Analyse réseau via outils UNIX : netstat, telnet, inspection des états TCP.
- Manipulation de services Internet (FTP, HTTP) et réalisation d’un mini-serveur web.
systèmes embarqués, IoT & Linux embarqué
- Concepts et architecture des systèmes embarqués : contraintes temps réel, choix processeur, codesign matériel/logiciel, cycle de vie produit.
- Conception d’objets connectés : capteurs/actionneurs, edge computing, architecture IoT en couches (edge, gateway, cloud), middlewares haut/bas niveau.
- Développement d’objets connectés sur Raspberry Pi Pico W avec MicroPython : acquisition BME680, WiFi, MQTT, dashboard Adafruit IO.
- Mise en œuvre de Linux embarqué sur Raspberry Pi 3B : u-boot, RAM-disk, drivers GPIO, applications C (E/S, client/serveur, HTTP/SMTP).
Abstraction matérielle C++ – carte BASYS MX3 (UART, registres, LCD, audio)
- Développement d’une classe MX3board assurant l’accès aux registres matériels via liaison UART 115 200 bps.
-
Surcharge de
operator[]pour représentation virtuelle des registres (lecture/écriture transparente). - Conception des classes Reg8 / Reg16 / Bit permettant un accès simplifié aux registres et bits matériels.
- Support LCD, LEDs, 7-segments, Flash 4 Mo et FIFO audio selon protocole interne de la carte.
- Gestion d’exceptions matérielles (timeout, accès illégal en lecture/écriture).
TinyML – IA embarquée sur microcontrôleur
- Introduction à TinyML : contraintes de calcul, mémoire, énergie, edge computing et confidentialité des données pour l’IA embarquée.
- Mise en œuvre de modèles TensorFlow/Keras : préparation de dataset, entraînement, validation, conversion en TensorFlow Lite, puis TensorFlow Lite for Micro (TFLM) avec quantification/pruning.
- Déploiement sur microcontrôleur Arduino Nano 33 BLE Sense : génération du modèle .tflite en tableau C, intégration dans un firmware C/C++ avec TFLM, contrôle analogique d’une LED en fonction d’une entrée capteur.
- Utilisation de l’environnement Spyder (Python) pour l’IA et Arduino IDE pour le code embarqué (lecture A0, moyenne, inférence, sortie PWM, visualisation via traceur série).
Exécution d’un modèle IA entièrement en C avec onnx2c
- Conversion d’un modèle ONNX en code C pur via onnx2c, sans runtime ni framework d’inférence.
- Génération d’un unique fichier .c compilé avec GCC, exécutable sur cible légère ou environnement contraint.
- Développement d’une application C chargeant les données, exécutant le réseau et exploitant la sortie comme un programme natif.
- Analyse des bénéfices pour l’embarqué : réduction des dépendances, audit et optimisation du code généré, meilleure portabilité.
- Exploration de cas d’usage pour microcontrôleurs, systèmes sécurisés et plateformes à mémoire limitée.
Acquisition de fichiers binaires via Ethernet & streaming UART – ZedBoard (Zynq)
- Mise en place d’un client TCP/IP avec la bibliothèque LwIP pour recevoir des fichiers binaires via Ethernet.
- Extraction des champs HW, CMD et INFO à partir d’un octet structuré envoyé par le serveur.
- Écriture et lecture des données dans la mémoire DDR3 via le bus AXI du Zynq.
- Coordination processeur–FPGA pour le streaming UART vers un PC de contrôle.
- Développement d’un serveur Python minimal pour simuler les requêtes TCP du groupe distant.
Mise en œuvre d’un SoPC sur FPGA Intel & AMD (Nios II / Zynq)
- Construction d’un SoPC complet avec processeur softcore NIOS II, bus Avalon et contrôleur SDRAM.
- Intégration des périphériques : Timer 32 bits, JTAG UART, interface 7 segments, LEDs et switches.
- Synthèse, place & route, génération HDL et programmation via USB-Blaster sur Cyclone V.
- Déploiement logiciel embarqué : bare-metal, BSP et RTOS µC/OS-II.
Implémentation FFT matérielle – Zynq 7000 (Pynq-Z2)
- Synthèse d’une architecture FFT 8 points avec Vitis HLS (réutilisation du papillon Radix-2).
- Interface AXI4-Stream & transfert DMA intégrés dans une architecture ARM + FPGA Zynq.
- Génération d’architectures séquentielle, pipeline et parallèle via directives HLS pragma.
- Implémentation sous Vivado, génération du bitstream & fichier matériel (.bit / .hwh).
- Validation sur carte PYNQ-Z2 via notebook Jupyter (Python) et comparaison de spectres FFT.
Projet Conception d’architecture numérique sur NEXYS4
- Conception en VHDL d’architectures combinatoires et séquentielles ciblant la carte FPGA NEXYS4 (Digilent).
- Intégration des ressources de la carte : afficheurs 7 segments, LEDs, boutons, horloge, et interfaces d’E/S.
- Écriture et validation des contraintes d’implantation (fichier XDC) : affectation des broches, déclaration de l’horloge 100 MHz, respect des contraintes de timing.
- Étude et prise en compte des modules Pmod (capteurs, audio, UART/USB, mémoire, RF, etc.) pour étendre les capacités d’E/S du système.
- Validation sur carte : synthèse, implantation, tests fonctionnels et mise au point directe sur FPGA.
Conception & implémentation d’un processeur Very-RISC + Bootloader – FPGA
- Architecture complète d’un processeur 8 bits minimal basé sur accumulateur (ACCU), UAL NOR/ADD et machine d’états.
- Définition des blocs : unité opérative, unité de contrôle, mémoire Von Neumann & bus.
- Développement en VHDL du processeur, simulation et validation sur testbench.
- Implémentation FPGA avec bootloader : chargement programme via UART + scan mémoire.
- Synthèse, bitstream Vivado, transfert série et exécution du programme PGCD.
Architecture des processeurs RISC-V – simulation, pipeline et mémoire cache (EN226)
- Mise en place d’un environnement de simulation bare-metal RISC-V (assembleur & C) : chaîne de compilation, script de linkage, organisation mémoire et visualisation des signaux avec GtkWave.
- Développement et analyse de routines assembleur pour opérations arithmétiques, masquage logique et pilotage des GPIO (R/W registres, manipulation de bits, pseudo-instructions).
- Étude du pipeline processeur sur plusieurs microarchitectures : dépendances de données, dépendances de contrôle, pénalités de branchement, parallélisme d’instructions et mécanismes de bypass.
- Expérimentation détaillée des caches L1/L2 (RISC-V) : cache hit/miss, pénalité en cycles, taille & organisation des lignes, impact sur le temps d’exécution de tableaux et matrices.
- Utilisation de compteurs matériels de performance pour corréler chronogrammes, structure du processeur et performances réelles des programmes.
N-body simulation & SIMD optimisation – GalaxEirb
- Implementation of a galaxy simulator based on the N-body gravitational model.
- Runtime acceleration using SIMD vectorisation (ARM NEON & Intel SSE/AVX).
- Performance profiling and numerical kernel optimisation to improve FPS output.
- Real-time rendering with the provided SDL2/OpenGL visualisation framework.
- Multi-architecture compilation: ARM, x86, AVX2, AVX512, performance comparison.
Génération d’images vectorielles au format PPM
- Développement d’une application en C sous environnement UNIX pour générer des images vectorielles au format PPM.
- Implémentation d’algorithmes de tracé de figures fractales (par exemple fougère de Barnsley) et de motifs géométriques.
- Gestion manuelle du format PPM (entête, résolution, codage des pixels) et écriture de fichiers compatibles avec les visionneuses classiques.
- Structuration modulaire du code (lecture paramètres, génération de scène, export) pour une réutilisation facile dans d’autres projets graphiques.
Généralités
Panorama de la formation & projets transverses
Ma formation couvre un socle large et cohérent en traitement du signal, automatique et ingénierie des systèmes, en faisant le lien entre modélisation, analyse de données, architecture logicielle et contraintes matérielles. Cette approche s’est concrétisée à travers des projets appliqués en systèmes embarqués et IoT (serveur web embarqué, middleware d’acquisition capteurs et communication MQTT, déploiement TinyML sur microcontrôleur), ainsi que des travaux avancés mêlant IA embarquée et FPGA (optimisation d’inférence sur Zynq par quantification/pruning/HLS4ML, prototypage d’un microprocesseur 16 bits en VHDL, client TCP/IP sur ZedBoard avec LwIP). L’objectif est de maîtriser la chaîne complète, du modèle et des algorithmes jusqu’à l’intégration sur une plateforme contrainte et validée expérimentalement.
Compétences
Technologies
- C / C++ (bas niveau, drivers, performance, OOP), Python pour prototypage et scripts embarqués.
- Linux & Linux embarqué : Buildroot, bases Yocto, BusyBox, systemd, cross-compilation, intégration services.
- Réseau embarqué : TCP/UDP, sockets, HTTP/REST, MQTT, clients/serveurs, outils UNIX (netstat, tcpdump).
- Microcontrôleurs & SBC : ARM Cortex-M/A, Raspberry Pi, Arduino, ESP-class, bus UART/I2C/SPI/CAN.
- Temps réel : Xenomai, PREEMPT-RT, notions RTOS (FreeRTOS/Zephyr), tâches périodiques, latence, synchronisation.
- IA embarquée : TensorFlow Lite / TFLM, ONNX, quantification, pruning, profiling, contraintes mémoire/énergie.
Conception & systèmes
- Codesign matériel/logiciel, choix d’architecture, contraintes temps réel, mémoire, énergie, fiabilité.
- Prototypage et validation : bancs de test, instrumentation, mesures de latence, analyse de performance.
- IoT & edge : capteurs/actionneurs, pipelines d’acquisition, passerelles, supervision, dashboards.
- SoC/SoPC : Zynq, Nios II, bus AXI/Avalon, DDR, DMA, streaming, co-traitement.
- Architectures processeur : RISC-V, pipeline, caches, assembleur, analyse microarchitecturale.
Outils & collaboration
- Git, GitLab CI, workflows branching, revues de code, documentation technique structurée.
- Toolchains & build systems : GCC, CMake, Make, scripts d’intégration pour cibles contraintes.
- Écosystèmes FPGA : Vivado, Vitis HLS, Quartus, simulation, timing, contraintes XDC/SDC.
- Debug & test : GDB, logs, trace série, analyse réseau, profiling, notebooks et prototypes.
- Travail en équipes pluridisciplinaires (R&D, spatial, labo), restitution claire des résultats.
Cybersécurité & qualité
- Sécurisation Linux embarqué : réduction surface d’attaque, durcissement services, bonnes pratiques.
- Arm TrustZone : isolation logique, Trusted Applications, principes de chaîne de confiance.
- IA pour la cybersécurité : détection de comportements anormaux / malwares sur cibles ARM.
- Qualité logicielle : tests unitaires, intégration continue, traçabilité et rationalisation d’architecture.
- Sensibilité aux enjeux : sécurité-by-design, contraintes industrielles, reproductibilité.
Laisser un message
Contact
Une question, un projet ou une idée dont tu souhaites discuter ? Tu peux m’écrire directement par email ou passer par les réseaux.