OrchestraPython

From ArmadeusWiki
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ées 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/complétée pour supporter:

  • l'utilisation de fichiers scripts,
  • les commentaires,
  • le décodage des arguments,
  • être insensible à la casse.

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,
  • la gestion de fichier ZIP en RAM,
  • l'ajout/suppression de répertoires/sous-répertoires.