Passage à un RTOS : retour d’expérience sur le RP2040
Martijn Braam
- Article de Martijn Braam, qui travaille sur des projets liés à l’informatique
- Mène plusieurs projets autour des microcontrôleurs
- Utilise principalement des cartes Raspberry Pi Pico, avec une bonne expérience de développement
Vue d’ensemble du projet
- Création d’un contrôleur matériel pour piloter des équipements vidéo
- Contrôle de caméras PTZ et d’équipements de commutation vidéo
- Les performances du contrôleur existant étant insuffisantes, il fallait concevoir un nouveau panneau
Conception matérielle
- Comprend 9 boutons RGB, un joystick analogique et un écran
- Utilise des modules de communication RS-485 et Ethernet
- Les fonctionnalités ont été mises en œuvre après plusieurs révisions matérielles
Logiciel initial
- Démarrage avec un projet cmake utilisant pico-sdk
- Le deuxième cœur est affecté au module Wiznet, tandis que le premier gère les E/S de l’interface utilisateur
- La complexité augmente avec la nécessité de traiter plusieurs tâches simultanément
FreeRTOS
- Utilisation de FreeRTOS pour exécuter plusieurs tâches en parallèle
- Création de plusieurs tâches (tasks) : boutons, LED, réseau, DHCP, mDNS, ATEM, VISCA
- Problèmes rencontrés avec FreeRTOS : le système se bloque lors de l’utilisation de
printf, manque d’abstraction matérielle
Apache NuttX
- Fournit un environnement proche d’un système Unix
- Après la configuration initiale, un vrai shell peut être utilisé
- Configuration matérielle possible via le système menuconfig/Kconfig
- Les fonctions de base ne marchaient pas à cause d’un problème de configuration du bus i2c
- Les chemins du système de fichiers et le shell ne sont pas nécessaires
Zephyr
- Fournit des utilitaires Python pour la configuration du projet
- Nécessite le téléchargement d’un dépôt git de 5 Go
- Exige l’installation du SDK Zephyr, mais il est possible d’utiliser une toolchain ARM existante
- Prise en charge insuffisante du Raspberry Pi Pico, tentative d’utilisation d’autres cartes
- Ne fonctionne toujours pas, même après la résolution d’erreurs et d’avertissements de build
Conclusion
- Certaines applications ont pu être compilées avec FreeRTOS
- Une implémentation de remplacement pour
printf est nécessaire
- L’auteur va continuer à utiliser FreeRTOS pour essayer d’obtenir les fonctionnalités souhaitées
Résumé de GN⁺
- Cet article traite du passage à un RTOS dans un projet de microcontrôleur
- Compare les avantages et inconvénients de FreeRTOS, Apache NuttX et Zephyr
- Conclut que FreeRTOS est le choix le plus adapté
- Aide à comprendre les différents éléments à prendre en compte dans le choix d’un RTOS
- Parmi les projets aux fonctionnalités similaires figurent FreeRTOS et Zephyr
1 commentaires
Avis Hacker News
Cet auteur semble s’attendre à ce qu’un RTOS fonctionne comme dans l’environnement Arduino
Résumé rapide des RTOS :
Installer une toolchain sur tout le système à la manière UNIX traditionnelle est pénible
PlatformIO va dans la bonne direction
Je suis en train de faire passer un projet RP2040 à Rust et Embassy
Zephyr prend en charge le Pi Pico à 100 %
ThreadX est open source
J’aimerais essayer Hubris dans un vrai projet
Je pense que microPython est une voie plus simple
J’ai bricolé un simple timer à green threads
FreeRTOS est essentiellement le standard de l’industrie
Rust RTIC prend en charge rp2040 et est très léger