OpenC6 BIOS : un nouveau firmware open source pour l’ESP32-C6

OpenC6 BIOS for ESP32 C6

Le projet OpenC6 BIOS, comme le rapporte cnx-software, présente une approche novatrice dans le développement de microcontrôleurs en intégrant un système de type BIOS à l’ESP32-C6. Cette configuration permet de séparer le système d’exploitation du code d’application, offrant ainsi une flexibilité accrue pour les développeurs.

ESP32-C6 avec OpenC6 BIOS : configuration matérielle au choix de 80 à 160 MHz

Dans le cadre du développement traditionnel, la combinaison de la configuration matérielle, du réseau et du code d’application se concrétisait par une image de firmware unique. En revanche, le BIOS OpenC6 adopte un modèle distinct. Fonctionnant comme un noyau sur l’ESP32-C6, il prend en charge l’initialisation des matériels et diverses fonctions système. L’une des caractéristiques clés est la capacité de charger indépendamment de petits programmes utiles, sans nécessiter le firmware complet à chaque mise à jour. Cela se fait aisément via une simple interface binaire d’application (ABI), tournant à partir de la mémoire RAM ou en Flash (XIP), un aspect qui le rapproche d’AkiraOS, mais avec l’avantage d’une interface de type BIOS.

BIOS OpenC6 pour ESP32 C6

Modularité et Flexibilité : jusqu’à 10 Ko pour les charges utiles

L’une des avancées majeures de l’architecture du BIOS OpenC6 est la mise à l’échelle dynamique du processeur, qui ajuste la fréquence de l’ESP32-C6 entre 80, 120 et 160 MHz, selon la charge de travail via FreeRTOS. Au lieu de regrouper tout dans un seul firmware, les applications sont développées sous forme de charges utiles modulaires, variant de 2 à 10 Ko, garantissant ainsi une flexibilité d’implémentation. L’accès aux fonctions Wi-Fi, mathématiques et cryptographiques est possible sans avoir besoin de charger l’ESP-IDF complet, facilitant le processus de développement.

La gestion des états du système est efficace grâce au moteur LP-Core, qui exploite le cœur RISC-V basse consommation de l’ESP32-C6. Ce fonctionnement permet de surveiller les minuteries et les événements d’alimentation indépendamment de l’application principale. En termes de mise à jour, le système prend en charge les mises à jour A/B OTA, permettant ainsi la restauration et évitant de bloquer l’appareil.

Le configurateur Web basé sur l’interface locale (BIOS_SETUP_C6) optimise la réglage des fonctionnalités, offrant une visualisation fluide sur un écran aux dimensions de 1280 x 1024, similaire à celle d’un BIOS de PC classique.

Utilitaire de configuration Web rétro (aspect natif 1280x1024 5:4)
Utilitaire de configuration Web rétro (aspect natif 1280 × 1024 5:4)

Le démarrage du BIOS se produit immédiatement après l’allumage, il initialise le matériel puis expose les services via une ABI définie. Cela permet aux charges utiles compilées d’être téléchargées via un chargeur série UART, d’être démarrées en réseau, ou d’être exécutées directement à partir de Flash sans faire appel à l’ESP-IDF complet. Ce modèle rappelle l’ancien BIOS des PC, qui offrait des fonctions essentielles avant le démarrage du système d’exploitation, mais dans ce cas, il est optimisé pour travailler avec de petits programmes au lieu d’un système d’exploitation complet.

Carte de développement ESP32-C6 zéro
Carte de développement ESP32-C6 zéro

Le développement est actuellement ciblé sur les cartes ESP32-C6 génériques, avec un minimum requis de 8 Mo de mémoire Flash. La carte ESP32-C6 Zero a été utilisée pour les essais de fonctionnement, mais le BIOS OpenC6 devrait être opérationnel avec d’autres cartes comme l’Olimex ESP32-C6-DevKit-Lipo et WeAct ESP32-C6 (8 Mo). Des ajustements peuvent être nécessaires pour l’attribution des broches électronique pour la gestion de l’alimentation, d’une LED RVB pour le diagnostic de l’état, ainsi qu’un UART pour le téléchargement des charges utiles.

Pour débuter avec ce projet, l’installation d’ESP-IDF (version de développement) est requise afin de pouvoir compiler le firmware du BIOS. Les charges utiles doivent être compilées séparément à l’aide des outils disponibles dans le répertoire correspondant. Le démarrage réseau peut se faire simplement grâce à la mise en place d’un serveur HTTP local et en dirigeant l’appareil vers l’URL des charges utiles via l’interface de configuration Web.

Le BIOS OpenC6 est open source sous la licence MIT, rendant le code, la documentation et les instructions d’assemblage des charges utiles accessibles sur GitHub. Son développeur recherche également des contributeurs pour participer à la création d’un système de fichiers légèrement personnalisé pour RISC-V ainsi qu’à d’autres améliorations.

Via Hackaday