Modèle d’exécution
Organiser les tâches, les événements et les opérations sensibles au temps en fonction du comportement réellement attendu de l’appareil.
03 — Systèmes embarqués
Les systèmes embarqués fonctionnent sous des contraintes physiques, de calcul et de communication. AUKIAN conçoit les logiciels, les interfaces matérielles, les protocoles et les architectures connectées comme les composants d’un système cohérent plutôt que comme des couches techniques isolées.
01 — Du composant au système
Un produit embarqué se résume rarement à un programme exécuté sur un microcontrôleur isolé. Il peut combiner processeurs, capteurs, interfaces utilisateur, modules radio, stockage et équipements externes, avec différents composants chargés de traiter, présenter ou transmettre des informations.
L’architecture commence par déterminer quelles opérations doivent être effectuées localement, quelles données doivent être stockées, comment les composants communiquent, quelles fonctions restent disponibles en cas de perte de connectivité et quelles responsabilités appartiennent aux systèmes externes.
Ces décisions façonnent le produit avant même le choix des technologies précises. Une tâche de traitement triviale sur un serveur peut nécessiter une stratégie totalement différente lorsqu’elle doit fonctionner avec une mémoire limitée, une consommation énergétique contrainte ou une communication intermittente.
AUKIAN aborde le système embarqué dans son ensemble : entrées physiques, traitement local, interaction utilisateur, communications et services externes doivent fonctionner ensemble avec des limites clairement définies.
02 — Logiciel embarqué & bas niveau
Un logiciel embarqué peut gérer directement les interfaces matérielles, les événements, le traitement local, la communication entre composants, l’état du système et les tâches concurrentes. La mémoire, le temps CPU, le stockage, la bande passante et la consommation énergétique deviennent des contraintes architecturales plutôt que des ressources que l’on peut simplement considérer comme disponibles.
Organiser les tâches, les événements et les opérations sensibles au temps en fonction du comportement réellement attendu de l’appareil.
Concevoir en fonction de la mémoire disponible, de la puissance de calcul, du stockage, de la bande passante et des contraintes énergétiques.
Maintenir l’état du système explicite afin que le démarrage, l’arrêt, la récupération et le fonctionnement en mode dégradé restent compréhensibles.
Séparer les tâches et les responsabilités de synchronisation lorsque plusieurs opérations doivent progresser simultanément.
Interfaces matérielles & périphériques
Le logiciel embarqué relie le comportement attendu du produit aux capteurs, écrans, contrôleurs, modules de communication, mémoires, périphériques spécialisés ou autres microcontrôleurs. Chaque interface possède sa propre fréquence, son volume de données, sa latence et ses modes de défaillance.
L’accès au matériel est isolé du comportement applicatif lorsque cela est pertinent, afin qu’un changement de capteur, de contrôleur ou de périphérique de communication ne se propage pas inutilement dans l’ensemble du code.
Acquérir, valider et transformer les informations issues de l’environnement physique.
Piloter les écrans et les interfaces embarquées en respectant les contraintes graphiques et mémoire de l’appareil.
Intégrer proprement les bus, les contrôleurs locaux et les composants matériels spécialisés.
Interfaces utilisateur embarquées
La résolution fixe, les ressources graphiques, la mémoire, les méthodes de saisie et les conditions physiques d’utilisation influencent directement la conception de l’interface. L’objectif reste le même : présenter les informations utiles et rendre les actions importantes compréhensibles sans ignorer les limites de l’appareil.
Concevoir en fonction de l’écran réel, des ressources graphiques et de la densité d’informations disponibles sur l’appareil.
Adapter les actions au mode d’entrée et au contexte réel dans lequel le produit est utilisé.
Équilibrer le comportement visuel et le coût de traitement afin que l’interface reste claire et réactive sur un matériel aux ressources limitées.
03 — Communications & protocoles
Transmettre des octets d’un appareil à un autre n’est que le début. Le système doit définir ce qui est envoyé, à qui, dans quel ordre, avec quelle identité, ainsi que la manière dont sont gérés les échecs, les nouvelles tentatives, la fragmentation ou les déconnexions temporaires.
Selon le système, les protocoles peuvent devoir identifier les appareils, structurer les messages, détecter les erreurs, fragmenter les données, préserver leur ordre ou contrôler la durée de validité des informations.
Les réseaux radio et intermittents ajoutent des contraintes supplémentaires : la bande passante peut être limitée, la latence variable et la connectivité temporairement indisponible. Le logiciel doit donc être conçu en considérant les interruptions comme une condition de fonctionnement prévisible plutôt que comme une exception.
Des limites de communication clairement définies facilitent également le diagnostic, l’évolution du système et sa connexion à de futurs appareils ou services.
Systèmes connectés
Les appareils peuvent envoyer des données locales à une API ou une plateforme et recevoir en retour des paramètres, des commandes, des mises à jour ou des informations externes. La décision de conception essentielle concerne alors la frontière entre le logiciel de l’appareil, l’infrastructure de communication et les services environnants.
Capteurs, commandes, actionneurs et contraintes matérielles.
Pilotes, état, traitement local, tâches et interaction utilisateur.
Protocoles, radio, liaisons filaires et comportement réseau.
API, traitement des données, systèmes de contrôle et plateformes externes.
Applications, interfaces web, supervision et outils opérationnels.
04 — Fiabilité
Les systèmes embarqués peuvent fonctionner pendant de longues périodes, être difficiles d’accès une fois installés ou fonctionner dans des environnements où une intervention manuelle n’est pas toujours possible. Les défaillances de communication, les périphériques indisponibles, les données invalides ou les redémarrages ne doivent pas automatiquement placer le produit dans un état incohérent.
Définir comment le système revient à un état de fonctionnement valide après une défaillance, un redémarrage ou une interruption temporaire.
Maintenir les états normaux, dégradés et d’erreur compréhensibles afin que le produit réagisse de manière cohérente.
Utiliser la journalisation, les informations d’état et les contrôles d’intégrité lorsque le diagnostic ne peut pas dépendre d’une connectivité permanente.
Préserver les fonctions locales utiles lorsque les systèmes externes ou les communications sont temporairement indisponibles.
Sécurité
Lorsqu’un appareil échange des informations ou accepte des commandes, l’identité, l’authenticité, la confidentialité et l’autorisation deviennent des enjeux d’architecture. La sécurité doit être adaptée aux capacités du matériel et aux menaces réelles auxquelles le produit est exposé.
Identifier l’appareil ou le composant participant à un échange.
Vérifier que les commandes et informations sensibles proviennent d’une source attendue.
Protéger les informations en transit lorsque le contexte exige des communications confidentielles.
Restreindre les opérations sensibles en fonction du rôle de l’appareil, de l’utilisateur ou du service externe.
Considérer ensemble le firmware, le protocole de communication et les services connectés plutôt que de sécuriser une seule couche isolée.
05 — Ressources & évolution
Dans les systèmes embarqués, les ressources font partie des données d’entrée de la conception. Une fonctionnalité qui paraît triviale sur un serveur peut nécessiter une architecture différente lorsque la mémoire, l’énergie, la bande passante ou la latence sont fortement contraintes.
Modularité
Les capteurs, les modules de communication, les interfaces utilisateur et les générations de microcontrôleurs peuvent évoluer. L’objectif n’est pas de tout abstraire, mais d’isoler les responsabilités susceptibles d’évoluer afin que les futures révisions du produit ne nécessitent pas de reconstruire toute l’architecture logicielle.
Maintenir les interfaces propres au matériel clairement délimitées.
Séparer les responsabilités liées au transport et au protocole.
Maintenir la logique fonctionnelle indépendante lorsque cela est pertinent.
Définir explicitement la persistance et la responsabilité des données.
Séparer les problématiques de présentation de la gestion bas niveau du matériel.
Traiter les plateformes connectées comme des frontières explicites du système.
Prototype, preuve de concept & R&D
Certains systèmes nécessitent une phase d’expérimentation avant qu’une architecture définitive puisse être justifiée : portée des communications, performances du microcontrôleur, comportement de l’interface, utilisation des ressources, protocoles expérimentaux ou coopération entre plusieurs appareils peuvent devoir être testés en conditions réelles.
Identifier l’hypothèse technique qui doit être validée.
Construire le plus petit système réel capable de fournir des résultats exploitables.
Observer les performances, les communications, l’utilisation des ressources et le comportement dans des conditions réalistes.
Conserver ce qui a été validé et restructurer les parties qui nécessitent un niveau de fiabilité et de maintenabilité adapté à la production.
Du prototype au système exploitable
La reproductibilité, la configuration, la gestion des versions, le diagnostic, la journalisation, les tests et les procédures de mise à jour deviennent de plus en plus importants à mesure qu’un projet passe de l’expérimentation à un produit déployable.
Technologie
Les technologies dépendent du matériel, des contraintes temporelles, du modèle de communication, de la durée de vie attendue et de l’environnement de déploiement. Ce sont des outils sélectionnés pour répondre au comportement attendu du système, et non une architecture à elles seules.
Quand AUKIAN peut intervenir
L’expertise en systèmes embarqués peut accompagner la création d’un nouveau produit complet ou intervenir sur une partie spécifique d’un système existant lorsque les performances, les communications, l’architecture ou la maintenabilité deviennent une contrainte.
Concevoir le comportement logiciel d’un produit ou équipement embarqué.
Permettre à plusieurs appareils d’échanger des informations par radio, liaisons filaires ou protocoles personnalisés.
Intégrer des capteurs, des écrans, des mémoires, des contrôleurs ou du matériel spécialisé.
Créer des interfaces utilisateur locales, graphiques ou physiques, adaptées à l’appareil.
Connecter des appareils embarqués à des API, des services logiciels et des plateformes opérationnelles.
Tester les hypothèses techniques incertaines avant de s’engager sur l’architecture définitive du produit.
Une architecture de bout en bout
Les produits embarqués se situent à l’intersection de plusieurs disciplines. Le matériel impose des contraintes, le logiciel définit le comportement, les communications relient les composants, les interfaces rendent le système utilisable et les services externes peuvent superviser ou enrichir les informations produites.
AUKIAN privilégie une approche système : comprendre comment les différentes parties interagissent, définir clairement les responsabilités et construire une architecture dans laquelle le matériel, le logiciel et les communications contribuent à un produit cohérent.
Un système embarqué à concevoir ?
Décrivez le contexte, le matériel envisagé et les contraintes déjà connues. La première étape consiste à déterminer l’architecture réellement adaptée au système.