Distribution Linux embarquée avec Yocto pour une box domotique
Construction d'une distribution Linux sur mesure avec Yocto (Poky) pour la carte STM32MP135F-DK, avec une layer dédiée, une recette image systemd, un SDK et une application C qui lit un capteur I²C.
Contexte
Mini-projet de Master 1 à l'UBS Lorient, dans le cours « Systèmes embarqués avec microprocesseur et General Purpose OS ». Le sujet met en scène un client qui veut développer une box domotique connectée. Il demande sa propre distribution Linux, un outil pour que son équipe développe ses applications, et un déploiement sur une carte STM32MP135F-DK (Cortex-A7).
Le mini-projet n'est pas guidé. Il vient après une série de TP sur Yocto : construire une image avec BitBake, comprendre les recettes et les layers, enrichir l'image avec local.conf, puis accélérer les builds avec un miroir de sources et un cache partagé (sstate).
Ce que j'ai construit
Carte STM32MP135F-DK
└── Distribution Linux construite avec Yocto (base Poky)
└── layer meta-ubs-homeautomation
├── recette image (hérite de core-image)
│ rootfs ext4, paquets ipk, init systemd,
│ accès SSH, compte utilisateur par défaut
└── recette de l'application capteur
└── service systemd ──▶ lit le Si7021 (I²C) ──▶ sortie UART- Une layer dédiée au projet,
meta-ubs-homeautomation, pour garder mes recettes séparées de Poky et des layers de la carte. - Une recette image qui hérite de la classe
core-image, plutôt qu'un simpleincludedecore-image-minimal. L'image est définie dans la layer et non danslocal.conf, donc elle est reproductible par toute l'équipe. - Un rootfs en ext4, des paquets au format ipk, systemd comme système d'init, un accès SSH et un compte utilisateur par défaut.
- Un SDK généré à partir de la distribution, pour que l'équipe du client compile ses applications sur sa machine sans reconstruire l'image.
L'application capteur
L'application est écrite en C. Elle lit périodiquement la température et l'humidité d'un capteur Si7021 sur le bus I²C et écrit les mesures sur l'UART. Elle est lancée comme un service systemd : elle démarre avec la carte, sans intervention.
Ce que j'en retiens
Avec Yocto, on ne configure pas un système à la main : on décrit tout, des paquets à l'init, dans des recettes versionnables. La recette image dans une layer dédiée, plutôt que dans local.conf, fait toute la différence entre un build qui marche sur ma machine et une distribution qu'une équipe peut reconstruire.
Stack
| Couche | Technologie |
|---|---|
| Cible | STM32MP135F-DK (Arm Cortex-A7) |
| Build | Yocto Project, Poky, BitBake |
| Système | Linux, systemd, rootfs ext4, paquets ipk |
| Application | C, I²C, UART |
| Capteur | Adafruit Si7021 (température, humidité) |
Projets proches
Analyse et injection sur bus CAN automobile
Reverse engineering des trames CAN d'une maquette véhicule, cartographie des bus, décodage des signaux moteur/éclairage/confort, base DBC et DLL d'injection en C simulant un système ADAS.
2026Bus CANReverse EngineeringAutomotiveMuxTrace
Attaques sur le protocole Zigbee
Étude offensive de Zigbee sur un banc isolé : écoute passive, puis attaques actives (saturation, usurpation du coordinateur, rejeu, éjection) depuis un dongle nRF52840 piloté par WHAD, sur un banc de test reproductible.
2026ZigbeeIEEE 802.15.4WHADnRF52840
Health Hub : migration d'un moniteur de santé STM32 vers FreeRTOS
Moniteur multi-capteurs sur STM32F411 (fréquence cardiaque, température, mouvement). J'ai migré le code bare-metal vers FreeRTOS, avec six tâches priorisées, des files de messages et un mutex sur le bus I²C.
2025CSTM32FreeRTOSCMSIS-RTOS v2