SE4 2024/2025 EC3
Objectifs
Vous allez concevoir, réaliser et programmer un système embarqué de remise à zéro d'équipements réseau.
Les équipement réseau visés sont des éléments Cisco. Pour remettre à zéro un élément réseau Cisco, il faut passer en mode administrateur
et envoyer la commande erase startup-config
. Ensuite si l'équipement est un commutateur il faut effacer la liste des VLAN avec la commande del vlan.dat
. Si l'équipement est un point d'accès WiFi il faut supprimer l'adresse IP sur l'interface BVI1
.
L'épreuve complémentaire sera considérée comme un succès si votre système embarqué arrive à réinitialiser un ISR4221, un Aironet 1600 et un C9200.
Vous commencerez par concevoir votre carte dont le coeur doit être un microcontrôleur AVR et qui doit pouvoir converser avec un périphérique série (que ce soit via USB ou en utilisant un port RJ45). L'utilisateur doit aussi pouvoir relancer la mise à zéro via un bouton et connaitre l'état de la mise à zéro via des LED. Une réflexion doit être menée sur l'alimentation de la carte. Vous avez le droit à un budget de 50 euros pour la carte, les composants et le port.
Une fois la carte conçue et validée par l'encadrant vous pourrez vous pencher sur la programmation de la carte. Cette programmation se fera uniquement en utilisant la version AVR de gcc
et l'utilitaire dfu-programmer
.
Il s'agit là d'un cahier des charges initial qui peut être revu en cas d'ambigüité. Vous avez jusqu'au 1 septembre pour réaliser le travail demandé. Il vous est explicitement demandé de produire un travail régulier le plus tôt possible *et* de faire des rapports réguliers (obligatoirement au travers de ce Wiki) à votre encadrant. S'y prendre à la dernière minute avec un seul retour à quelques jours de la date limite est une garantie d'échec.
Développement et tests
Pour vous rappeler les commandes IOS Cisco vous pouver utiliser un logiciel de simulation d'éléments réseau comme Packet Tracer.
Ensuite pour tester l'algorithme haut niveau de votre programme embarqué vous pouvez :
- écrire un programme C simulant les quelques commandes IOS Cisco nécessaires pour la remise à zéro ;
- attacher ce programme sur un port série virtuel avec l'utilitaire
socat
; - écrire un programme C classique qui se connecte au port série virtuel, qui communique avec le "périphérique" pour connaître son type et envoyer les ordres nécessaires pour la remise à zéro.
Pour la suite vous écrirez le vrai programme embarqué en intégrant votre algorithme haut-niveau dans le projet LUFA adapté.
Pour tester le programme sur votre carte vous pouvez la connecter à un Arduino Uno programmé pour simuler les quelques commandes Cisco nécessaire pour la remise à zéro.
Enfin vous testerez votre carte en situation reelle sur les équipements Cisco fin août.
Travail réalisé
Avancement du 18/07
Schématique terminé
J'ai finalisé aujourd'hui une première version du schéma électronique de ma carte à base d'ATmega328P-A (boîtier TQFP-32). Tous les éléments essentiels ont été intégrés, en respectant les contraintes du cahier des charges.
Choix de l'alimentation via USB micro-B
Pour l'alimentation de la carte, j'ai opté pour un connecteur micro-USB type B, utilisé uniquement pour fournir du +5V et GND à la carte. Le 5V est ensuite filtré à l'aide d'un condensateur de 10 µF en entrée, et des condensateurs de découplage (100 nF) sont placés près du microcontrôleur pour stabiliser la tension localement.
LED de signalement d'état
J'ai intégré trois LED sur la carte pour signaler visuellement les états du système :
- LED Témoin : Mise sous tension (Power ON)
- LED_JAUNE : Remise à zéro en cours
- LED_VERTE : Remise à zéro terminée avec succès
- LED_ROUGE : Remise à zéro terminée sans succès
Chaque LED est reliée à une broche du microcontrôleur à travers une résistance de limitation de courant.
Communication série avec les équipements Cisco
J'ai choisi d'utiliser un adaptateur FT232RL (module USB ↔ UART TTL) pour assurer la communication entre ma carte et les équipements Cisco à réinitialiser. Le module FTDI sera connecté à un header 2x3 broches (J4) sur la carte (signaux TX, RX, GND, VCC), et une liaison physique sera assurée vers le port console RJ45 des équipements via un câble série.
Avancement du 19/07
Aujourd'hui, des choix techniques importants ont été faits suite au retour de M. REDON, concernant la première version du schéma électronique, pour assurer la compatibilité complète de ma carte avec tous les équipements Cisco visés (Aironet 1600, ISR4221, C9200).
Changement du microcontrôleur
J'ai remplacé le ATmega328P-A initialement utilisé, par un ATmega16U4-A (boîtier CMS TQFP-32). Ce dernier microcontrôleur possède une interface USB native, indispensable pour communiquer directement avec le Cisco C9200, qui ne dispose que d'un port USB console.
Présence de 3 boutons poussoirs
Trois boutons distincts sont intégrés au schéma :
- Bouton RESET : connecté à la broche RESET du microcontrôleur. Il permet de redémarrer le programme en cours.
- Bouton HWB : connecté à la broche HWB du microcontrôleur. Lorsqu'il est maintenu appuyé au moment d’un RESET, il permet de démarrer le microcontrôleur en mode bootloader DFU, pour reprogrammer le firmware via USB.
- Bouton de remise à zéro des équipements Cisco : connecté à la broche PD5. C’est l'utilisateur qui l’actionne pour déclencher, via le firmware LUFA, l'envoi des commandes nécessaires à la remise à zéro de l’équipement cisco.
Connexions USB
Un connecteur USB micro-B est utilisé pour :
- Alimenter la carte (5V via VBUS)
- Communiquer avec les équipements cisco (C9200 ici) via l’interface USB native
Connexions série UART
Un connecteur 2x3 broches est conservé pour accéder aux lignes TX/RX/GND/VCC. Il servira à communiquer avec les équipements Cisco disposant d’un port console série RJ45, comme les ISR4221 et Aironet 1600.
Avancement du 22/07
Remplacement du microcontrôleur ATmega16U4-A par un AT90USB1287, afin de rendre ma carte capable de fonctionner comme un hôte USB (USB Host). Ce changement est essentiel pour pouvoir communiquer avec des équipements Cisco comme le C9200, qui n'ont qu'un port USB console.
J’ai compris que les microcontrôleurs comme le 16U4 ne peuvent agir que comme périphériques USB (USB Device), alors que le 1287 est capable d'agir comme un contrôleur USB (USB Host), ce qui est requis par le projet. Ce choix me permet d'utiliser directement la démonstration LUFA Host/ClassDriver/VirtualSerialHost.
La carte est désormais conçue pour être alimentée et programmée par un seul port USB (mâle), et elle pourra ensuite communiquer avec un équipement réseau via un second port USB (femelle), en mode hôte.
Documents Rendus
Projet KiCAD de la carte
Vous pouvez trouver ci dessous la première version du schéma électronique de ma carte réalisée le 18/07.
vous pouvez trouver ci-dessous la seconde version du schéma électronique de ma carte realisée le 19/07.
vous pouvez trouver ci-dessous la troisième version du schéma électronique de ma carte (avec un at90usb1287) réalisée le 20/07.
vous pouvez trouver ci-dessous la quatrième version du schéma électronique de ma carte réalisée le 22/07.
vous pouvez trouver ci-dessous la 5e version du schéma électronique de ma carte réalisée le 24/07.
Commandes Cisco
Listez les commandes Cisco nécessaires pour la remise à zéro des équipements visés.
Programme de simulation d'IOS Cisco
Joindre l'archive du programme C (avec Makefile) permettant de simuler les ordres Cisco permettant la remise à zéro.
Programme préliminaire de remise à zéro
Joindre l'archive du programme C (avec Makefile).
Programme embarqué LUFA
Archive attachée avec Makefile
intégré.
Vidéos de démonstration.
Programme Arduino Uno
Programme simulant un élément Cisco avec un Arduino Uno.