OrchestraPython

From ArmadeusWiki
Revision as of 22:12, 13 February 2008 by FabriceM (Talk | contribs) (Détails de la mise en oeuvre)

Jump to: navigation, search

Plan de développement

Cette page a pour objectif de clarifier le développement d'Orchestra en Python. Pourquoi Python ? Parce que c'est le langage que j'ai choisi pour le développement tout simplement. Et aussi parce qu'il:

  • intègre déjà beaucoup de fonctions;
  • est multi-platerforme (Unix/Linux, MacOS, Windows, BSD, etc.);
  • est facilement extensible
  • etc...

Le développement du projet Orchestra se fait sous licence GPL v3 et suivantes.

Après une petite analyse des possibilités du langage Python et divers projets existants, j'ai décidé de découper le développement de cette façon:

  • orchestra.py: ce module est le module principal qui va lancer/initialiser le progamme
  • orchestralib: cette librairie est le coeur de l'application, c'est ici que se situe toute l'intelligence.

La librairie orchestralib est composée des sous-librairies suivantes:

  • core : cette librairie contient toutes les classes de base utilisées par Orchestra
  • components : cette librairie contient toutes les classes nécessaires au traitement des "Armadeus Ready Components"
  • thirdparty : cette librairie contient toutes les librairies tierces utilisées pour le développement et ne faisant pas partie des librairies standards de Python
  • vhdl : cette librairie contient les classes nécessaires pour le traitement des fichiers VHDL

Convention de codage

Pour le développement des classes, la convention de codage suivante a été utilisée:

  • Tous les noms sont en anglais, courts et le plus expressifs possibles;
  • Le nom des variables est en minuscule avec '_' pour la séparation des mots;
  • Le nom des constantes est en majuscule avec '_' pour la séparation des mots;
  • Le nom des fonctions est en camelCase, avec la première lettre en minuscule;
  • Le nom des classes est en CamelCase, avec la première lettre en majuscule.
  • Utilisation de DocString (en anglais) pour documenter un maximum le code pour garantir la maintenance du code.

Détails de la mise en oeuvre

Les composants Armadeus

Les composants Armadeus sont placés dans le sous répertoire "components" du projet. Chaque composant est regroupé dans une archive ZIP et contient:

  • Un fichier XML de description
  • Un ou plusieurs fichiers VHDL/Verilog (l'IP)
  • Un ou plusieurs fichiers C/H (un driver)

Pour l'instant ceux sont uniquement le fichier XML et les fichiers VHDL qui sont traités.

Les plateformes

Les plateformes Armadeus sont placés dans le sous répertoire "boards" du projet. Chaque plateforme est décrite par un fichier XML.

Fonctionnement du programme

Pour rendre le programme le plus simple d'utilisation possible, tout le fonctionnement est basé sur un interpréteur de commandes. Cet interpréteur est basé sur le module cmd qui fait partie des modules de base de la distribution Python. Cette classe de base a été modifiée pour supporter l'utilisation de fichiers scripts, commentaires et le décodage des arguments. Le traitement des fichiers XML est fait par ElementTree, qui ne fait pas partie de la distribution Python. Le traitement des fichiers ZIP est basé sur le module zipfile de la distribution Python. Ce module a été complété et modifié par mes soins pour ajouter la gestion de la suppression et du remplacement de fichiers dans une archive ZIP.