Difference between revisions of "OrchestraPython"
m (→Fonctionnement du programme) |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
* est facilement extensible | * est facilement extensible | ||
* etc... | * 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: | 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: | ||
Line 12: | Line 14: | ||
* orchestralib: cette librairie est le coeur de l'application, c'est ici que se situe toute l'intelligence. | * 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: | + | La librairie '''orchestralib''' est composée des sous-librairies suivantes: |
* core : cette librairie contient toutes les classes de base utilisées par Orchestra | * 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" | * components : cette librairie contient toutes les classes nécessaires au traitement des "Armadeus Ready Components" | ||
Line 23: | Line 25: | ||
* Le nom des variables est en minuscule avec '_' pour la séparation des mots; | * 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 constantes est en majuscule avec '_' pour la séparation des mots; | ||
− | * Le nom des | + | * 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. | * 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. |
Latest revision as of 11:36, 22 February 2008
Contents
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.