– Prendre en main le Raspberry Pi pour installer une distribution standard (Raspberry OS).
– Ajuster et configurer le système en fonction de ses besoins spécifiques.
– Développer des applications personnalisées et performantes pour Linux
embarqué en C/C++ et en utilisant la bibliothèque pigpio.
– Maîtriser la communication avec les interfaces offertes par la Raspberry Pi
– Maîtriser la programmation concurrentielle pour le contexte des applications embarquées
– Développer et ajouter des drivers supplémentaires (modules noyau)
– Introduction : présentation du Raspberry Pi, des systems-on-chip
BCM2835/2836/2837 et du processeur Arm 1176.
– Distribution Linux pour Raspberry Pi : téléchargement, installation, test.
– Découverte de la distribution : paramètres essentiels, outils standard.
– Utilisation de base : configuration système, utilisateurs, interface graphique.
– Utilisation de Linux sur Raspberry Pi : avantages et inconvénient d’un système sur carte SD
Travaux pratiques
Installation et test d’une distribution standard sur Raspberry Pi et
configuration headless de la carte
– Réseau : configuration du réseau (Ethernet+WiFi), Internet,
connexion distante.
– Services réseau : démarrage des services, choix adapté à un système embarqué : configuration des services DHCP et de partage de fichiers avec SAMBA
– Mise à jour : installation de paquets, mise à jour.
– Serveurs : configuration d’un serveur Web sur le Raspberry Pi.
– Contrôle à distance
Travaux pratiques
Configuration optimale du système, du réseau et des services
– Programmation en C/C++ : compilation native ou compilation croisée, débogage
– Installation et configuration d’une chaîne de compilation croisée
– Débogage distant avec GDB
– Configuration d’Eclipse IDE pour la compilation croisée, débogage et déploiement
– Principales bibliothèques pour le développement en C/C++ sur Raspberry Pi
– Présentation et installation de la bibliothèque pigpio
Travaux pratiques
Configuration et intégration de la chaine de compilation croisée avec Eclipse
IDE
– Présentation détaillée des entrées-sorties GPIO
– Utilisation depuis le Shell des Entrées-sorties GPIO
– Utilisation de la bibliothèque pigpio
– Interruptions et GPIO : détection des changements d’état d’une GPIO.
– Génération d’un signal PWM
Travaux pratiques
Manipulation des entrées sorties avec des programmes écrits en C/C++ :
récupération de la température et l’humidité avec le capteur DHT11 (avec
et sans interruptions), extension des GPIO en utilisant le registre série
parallèle 74HC595. Contrôle d’un servomoteur avec un signal PWM, etc.
– Communication série avec l’UART : connexion avec PC, traces de boot, communication
– SPI : dialogue en SPI
– Le bus I²C
– Bluetooth : identification, connexion, communication.
Travaux pratiques
Développement de plusieurs programmes utilisant les différentes interfaces
de communication : lecteur de carte RFID, communication entre Raspberry
Pi et Arduino Uno (UART et SPI), Capteur MCP9808 sur I2C, écran LCD
16×2 sur le bus I2C, etc.
– Threads et Mutexes
– Utilisation de la bibliothèque pthread (POSIX threads)
– Les apports de C++17 pour la programmation multi-threadée
Travaux pratiques
Exploitation des threads pour réaliser des applications gérant efficacement
plusieurs tâches
– Recompilation du noyau : intérêts de la recompilation, configuration
ajustée.
– Drivers supplémentaires : compilation et d’installation de drivers
externes.
– Développement et installation d’un driver
Travaux pratiques
Ajout de drivers supplémentaires (extension des GPIO).
Référence : EMB003
Type de Stage : Pratique
Durée : 3 jours
Développeurs, chefs de projets
techniques.
Connaissances de Linux et en
développement en C/C++ sont
un plus.