LLaa CACAOO ÉÉlleecctrtrononiiqquuee ssououss LLiinnuuxx

IT331: Linux embarqué

Xavier NOURISSON Electronique Adrien ZANCAN Systèmes embarqués

14 janvier 2005 ENSEIRB La CAO Électronique sous Linux

SOMMAIRE

INDEX DES ILLUSTRATIONS...... 3

INTRODUCTION...... 4

LES LOGICIELS DE CAO...... 5

I. CONCEPTION DE CIRCUITS 6 I.1. Bartels AutoEngineer® 6 I.2. CadSoft Eagle 7 I.3. gEDA et outils associés 7 I.4. 9 I.5. PCB 9 I.6. SoC GDS 9 I.7. TkGate 10 I.8. Xcircuit 11

II. CONCEPTION LOGICIELLE 11 II.1. AT51Programmer 11 II.2. Mprog 11 II.3. GCC 12 II.4. ICDPROG 12 II.5. GPUTILS + Tools 13 II.5.1. Assembleurs 13 II.5.2. Compilateurs 14 II.5.3. Simulateurs 15 II.5.4. Programmateurs 15 II.5.5. Librairies 16 II.5.6. Environnements de développement (IDEs) 16 II.6. YaPIDE 16

CONCLUSION...... 17

GLOSSAIRE...... 18

RÉFÉRENCES...... 19

ANNEXE – COMPARATIF DES LOGICIELS...... 20

2/20 Index des illustrations Index des illustrations

INDEX DES ILLUSTRATIONS

Illustration 1 - Bartels AUtoEngineer: Layout d'un circuit intégré 6

Illustration 2 - CadSoft Eagle: Routage 7

Illustration 3 - gEDA: Saisie de schémas 7

Illustration 4 - Oregano: Saisie de schéma et simulation 9

Illustration 5 - SoC GDS: Comparaison de layouts 9

Illustration 6 - TkGate: Fenêtre de saisie de schéma 10

Illustration 7 - XCircuit: Fenêtre principale 11

Illustration 8 - GPUTILS 13

Illustration 9 - PiKdev: Gestion d'un projet 16

Illustration 10 - YaPIDE: Visualisation de la mémoire 16

Illustration 11 - Comparatif des différents logiciels présentés 20

3/20 Introduction Introduction

INTRODUCTION

Le développement de Linux a débuté en 1991. Si, il y a quelques temps, son utilisation été réservé à une poignée d'informaticiens prêts à réinventer la roue pour fournir un système d'exploitation open-source assez crédible pour contrer le monopole de Microsoft, avec aujourd'hui plus de 5% des parts de marché des systèmes d'exploitations et les efforts considérables d'une immense communauté de développeurs, il est devenu une alternative non négligeable. Depuis quelques années, les efforts de cette communauté et des entreprises commerciales se multiplient pour fournir des solutions Linux pour tous les corps de métiers.

Ainsi, on trouve aujourd'hui de nombreux outils de CAO électronique disponibles pour Linux. Tout d'abord, des sociétés ont porté leurs logiciels commerciaux depuis Windows ou . Mais aussi, énormément de logiciels, très souvent open-source, sont développés directement pour Linux.

Ce présent rapport a pour but de présenter les différentes solutions de CAO électronique fonctionnant sous Linux. Bien sûr, il est impossible de présenter la totalité des logiciels disponibles, on présentera tout de même un choix de logiciels permettant de couvrir la totalité de la chaîne de développement d'un système électronique, avec la conception matérielle (de la saisie de schéma au routage du circuit imprimé ou du circuit intégré en passant par la simulation) et la conception logicielle (compilation, simulation, programmation, etc.). On privilégiera les solutions open-source.

4/20 Les logiciels de CAO Les logiciels de CAO

LES LOGICIELS DE CAO

On ne peut pas réellement classés ces logiciels dans des catégories distinctes (saisie de schémas, routage, compilation,...). En effet, certains ne feront qu'une seule tâche (ex: saisie de schémas) mais d'autre intégreront plusieurs outils (ex: saisie de schémas + simulation + routage). On peut tout de même séparer les logiciels de CAO électronique en deux grandes catégories : d'une part la conception matérielle (conception de circuits imprimés ou circuits intégrés) et d'autre part la conception logicielle (programmation de microcontrôleurs).

Même si tous ces logiciels fonctionnent sous Linux, il peut-être intéressant de savoir si ils sont disponibles sur d'autres plate-formes, permettant ainsi une meilleurs compatibilité avec d'autres personnes n'utilisant pas Linux.

Pour la plupart des logiciel présentés, il est indiqué si ce sont des logiciels open- source ou commerciaux et sur quels architectures et systèmes d'exploitations il sont disponibles. Aussi, pour les logiciels commerciaux, la disponibilité d'une version d'évaluation ou d'usage non commercial est indiqué avec ses limitations éventuelles.

Enfin, un récapitulatif de tous les logiciels présentés avec leurs principales caractéristiques peut être consulté en Annexe 1.

5/20 Les logiciels de CAO Conception de circuits I. Conception de circuits

I.1. Bartels AutoEngineer®

BAE est un logiciel complet permettant la conception de circuits imprimés ou de circuits intégrés. Il intègre les outils nécessaires à toute la conception : du schéma au routage en passant par la simulation électrique.

Ce n'est pas un logiciel libre et la version professionnelle est assez Illustration 1 - Bartels AUtoEngineer: Layout d'un circuit intégré cher. Il propose tout de même une multitudes de licences avec des prix s'étendant de 86€ à 6490€. Une version d'évaluation, limitée à la saisie du schéma et génération de la netlist est aussi proposée.

En plus de Linux, BAE est disponible sur MS Windows et sur de nombreux systèmes d'exploitations Unix utilisant X11.

6/20 Les logiciels de CAO Conception de circuits

I.2. CadSoft Eagle

EAGLE (Easily Applicable Graphical Layout Editor) est un outil puissant et facile d'utilisation pour la conception de circuits imprimés.

Il comprend trois principaux modules (un éditeur de schémas, un éditeur de PCB et un auto- routeur) qui sont intégrés dans la même interface. Il n'y a ainsi pas besoin de convertir les netlists entre la saisie de schéma et la conception du PCB.

Illustration 2 - CadSoft Eagle: Routage

C'est un logiciel commercial à un prix raisonnable (entre 49$ et 399$). Il offre une version à but non lucratif (ou de démonstration) seulement limitée en taille de PCB (100*80mm, une couche).

Il est disponible sur Linux (i586), MacOSX et Windows.

I.3. gEDA et outils associés

gEDA/gaf est une suite de logiciels CAO en licence GPL (open- source).

gEDA/gaf effectue notamment la saisie de schémas/symboles, la création de netlists et la gestion de projets.

Illustration 3 - gEDA: Saisie de schémas

7/20 Les logiciels de CAO Conception de circuits

Une grosse quantité de logiciel sont développés en association avec gEDA, on peut par exemple citer les logiciels suivants :

• gerbv

Visualiseur de fichiers Gerber.

• gnetman

Outils de manipulation de fichiers netlist.

• gnucap

Simulateur de circuits mixtes.

• GTKWave

Visualiseur de courbes de simulation numériques.

• gwave

Visualiseur de courbes de simulation analogiques.

• Icarus

Simulateur et synthétiseur Verilog.

• PCB (voir le chapitre I.5)

Outils de création de PCB / routage.

• tclspice,

Versions améliorées de Spice.

• VBS

Simulateur Verilog.

• XCircuit (voir le chapitre I.8)

Saisie de schéma avec export postscript de haute qualité.

8/20 Les logiciels de CAO Conception de circuits

I.4. Oregano

Oregano est un logiciel de saisie de schémas et simulation électrique. Il permet aussi de générer les netlists et contient une grande variété de librairies de composants.

Oregano est distribué en licence GPL

Illustration 4 - Oregano: Saisie de schéma et simulation pour Unix / Linux.

I.5. PCB

PCB est, comme son nom l'indique, un éditeur de circuits imprimés. Il intègre les fonctions habituelles d'un tel logiciel, comme l'auto-routage, l'export dans des formats standards de l'industrie (Gerber, Drill,...). Il est distribué pour Unix / Linux sous licence GPL.

I.6. SoC GDS

SoC GDS est un logiciel de visualisation et de traitements rapide de layouts de circuits intégrés. Il intègre des fonctions puissantes permettant entre autre l'automatisation du changement de nom des cellules, la vérification de grilles, la fusion ou la comparaison physique de fichiers GDS II et LEF, les modifications hiérarchiques et la conversion au format texte.

Illustration 5 - SoC GDS: Comparaison de layouts

9/20 Les logiciels de CAO Conception de circuits

SoC GDS est disponible pour plate-formes Linux(x86), HP-UX, SUN/Solaris et Windows sous un licence commerciale. Une version allégée est disponible gratuitement avec une limitation en vitesse de fonctionnement.

I.7. TkGate

TkGate est un simulateur de circuits électroniques numériques. Il supporte une grande quantité d'éléments de bases aussi bien que des modules personnalisés pour la conception hiérarchique. La distribution inclue de nombreux tutoriels et exemples.

Illustration 6 - TkGate: Fenêtre de saisie de schéma

TkGate est disponible pour Unix / Linux sous les termes de la licence GPL.

10/20 Les logiciels de CAO Conception de circuits

I.8. Xcircuit

XCircuit est un logiciel de saisie de schémas permettant de générer des schémas de qualité "imprimerie" tout en autorisant la génération des netlists. Il écrit à la fois la sortie PostScript et la netlists SPICE pour ne pas créer de compromis entre la qualité artistique et la Illustration 7 - XCircuit: Fenêtre principale conception électronique.

XCircuit est disponible pour Unix / Linux sous licence GPL.

II. Conception logicielle

II.1. AT51Programmer

AT51Programmer est un programmateur intelligent universel pour les microcontrôleurs ATMEL 8051 et les mémoires Flash parallèles et EEPROM.

Ce logiciel sous licence GPL est encore en version bêta mais fonctionnelle.

II.2. Mprog

mprog est un logiciel permettant la programmation de microcontrôleurs. Encore en version bêta, ce logiciel open-source ne supporte pour le moment que les microcontrôleurs ATMEL AVR série "mega" programmés via SPI en utilisant la carte STK200. Deux format de fichiers sont supportés : binaire et Intel hex. Une

11/20 Les logiciels de CAO Conception logicielle

interface graphique sera bientôt disponible.

II.3. GCC

GCC (GNU Compiler Collection) est probablement le compilateur le plus connu, le plus utilisé et un des plus efficaces. Il permet de compiler beaucoup de langages (C, C++, Objective-C, Fortran, Java, Ada) et inclue toutes les librairies nécessaires pour ces langages.

L'un des nombreux avantages de GCC pour la conception logicielle électronique est sa possibilité de réaliser les compilations croisées pour de très nombreuses architectures. Parmi les architectures disponibles, on trouve : ARM, ARM-Xscale, Atmel AVR, Intel x86, x86-64bits(AMD64), Motorola 68HC11, 68HC12, famille Motorola 68k, MIPS, IBM-Motorola PowerPC, Sparc et bien d'autres. De plus, on trouve très facilement de la documentation sur la compilation croisée avec GCC.

GCC est disponible en licence GPL pour toutes les architectures d'ordinateurs actuels et la plupart des systèmes d'exploitation.

II.4. ICDPROG

ICDPROG est un programmateur pour Microchip PIC en lignes de commandes utilisant le système de programmation Microchip ICD (In Circuit Debugger).

Cette version bêta sous licence GPL est dors et déjà disponible pour Linux et Windows et supporte les PIC16F87x, (x = [0,1,2,3,4,6,7]).

12/20 Les logiciels de CAO Conception logicielle

II.5. GPUTILS + Tools

GPUTILS (GNU PIC Utilities) est un ensemble d'outils pour les microcontrôleurs Microchip PIC.

Il est composé de trois principaux outils que sont gpasm, gplink et gplib mais de nombreux outils ont été développés autour de GPUTILS, ajoutant de nouvelles fonctionnalités telles que la simulation ou la prise en charge d'autres modèles de microcontrôleurs. GPUTILS est distribué sous licence GPL mais Illustration 8 - GPUTILS certains des outils cités ci-dessous ne sont pas open-source.

Ces outils variés comprennent des assembleurs, désassembleurs, compilateurs, simulateurs, programmateurs, librairies et environnements de développement (IDEs). En voici les principaux :

II.5.1. Assembleurs

• gpasm est l'assembleur par défaut de GPUTILS.

• tpasm est un autre assembleur de grande qualité supportant les Atmel AVR, Motorola 6805 et 68HC11 et les 8051.

• miSim combine un éditeur (avec coloration syntaxique), un macro-

13/20 Les logiciels de CAO Conception logicielle

assembleur, un désassembleur et un simulateur, dans un environnement de développement complet. Écrit en JAVA, il est totalement portable. Malheureusement, il n'est plus distribué comme logiciel libre depuis la version 2.0.

• PTK4L (PIC ToolKit For Linux) inclue un assembleur, un désassembleur et un programmateur.

II.5.2. Compilateurs

• Pyastra (Python to ASembler TRAnslator) est un compilateur Python pour PICs.

• John Favata's picc_cc est un compilateur dédié aux PIC16C84 produisant un code pseudo-8051 seulement reconnu par l'assembleur de Parallax. L'assembleur Parallax est gratuit mais ne fonctionne que sous DOS. Depuis peu, un autre logiciel dérivé (ebs_cc) permet de générer du code compatible avec gpasm.

• Pavel Baranow a écrit un compilateur C/C++ non open-source pour processeurs SX et PICs fonctionnant sous Windows et Linux.

• JAL (Just Another Language) est un compilateur d'un langage de haut niveau ressemblant à du Pascal pour PIC 16x84. Il n'est pas open-source et fonctionne sous Windows et Linux.

• AnyC est un projet de compilateur open-source pour microcontrôleurs.

• SIL est un compilateur dans un langage de haut niveau combinant les langage BASIC, MODULA2 et Pascal.

• SDCC est un compilateur croisé qui supporte les 8051, Z80 et DS390. Il est entrain d'être porté sur PIC.

14/20 Les logiciels de CAO Conception logicielle

II.5.3. Simulateurs

• gpsim (GNUPIC Simulateur) est le simulateur par défaut de GPUTILS. Il supporte les cœurs PICs 12, 14 et 16 bits, presque tous leur périphériques internes et des composants externes (comme les modules LCD).

• Le simulateur de miSim (décrit dans la section "Assembleurs") est très abouti et permet la simulation en temps réel ou plus rapide

• SxSim est simulateur de processeurs Ubicom Sx offrant beaucoup de puissants outils de débogage.

• nitpic est un simulateur de PIC16C84 en construction fonctionnant avec X Windows.

• pictutils combine un simple simulateur et un assembleur pour PICs.

II.5.4. Programmateurs

• picp est le programmateur idéal pour le Microchip Picstart+.

• Odyssey est originellement écrit pour fonctionner avec la carte de programmation EPIC de microEngineering Labs mais est assez flexible pour être utilisé avec d'autres matériels de programmation.

• prog84 permet de programmer les PIC 16c6x/7X/923/924, 1§f87x et 24c16 via un port parallèle. Un version USB est aussi disponible.

• PP06 est un autre programmateur de PIC open-source.

• PTK4L (présenté dans la section "Assembleurs") permet la programmation via un port parallèle.

15/20 Les logiciels de CAO Conception logicielle

• picprg est un programmateur pour port parallèle bien abouti. Il reconnaît beaucoup de modèles de processeurs et de carte de programmation.

II.5.5. Librairies

De nombreuses librairies open-source pour PIC ont été développées. On peut citer les librairies de Mark Crosbie (en C : LCD série, Moteurs), de Antonio Todobom (contrôleur LCD en assembleur), de James Cameron (librairies mathématiques, piles informatiques...) et la librairie PICFLOAT de Mike Gore (opérations en virgule flottante).

II.5.6. Environnements de développement (IDEs)

• PiKdev est un environnement de développement pour PICs basé sur KDE. Il supporte l'édition, la gestion de projet et la programmation de circuits. Il existe une version en ligne de commande nommé pkp. Illustration 9 - PiKdev: Gestion d'un projet

• miSim (présenté dans la section "Assembleurs") présente aussi un environnement de développement.

II.6. YaPIDE

YaPIDE (Yet Another PIC IDE) est un simulateur avec interface graphique pour Microchip PIC fonctionnant sous Unix / Linux.

Illustration 10 - YaPIDE: Visualisation de la mémoire

16/20 Conclusion Conclusion

CONCLUSION

La quantité du nombre de logiciels disponibles montre bien l'activité du monde Linux. Si les logiciels commerciaux sont de bonne facture, les logiciels open-source sont de qualités très diverses. Beaucoup de ces derniers sont en version bêta mais pourraient devenir des solutions efficaces.

Aussi, de nombreux développeurs se lancent dans des projets différents ayant des fonctionnalités identiques. Il en résulte une énorme quantité de logiciels effectuant la même chose mais qui ne sont pas pleinement fonctionnels. On peut citer comme exemple le nombre de simulateurs ou de programmateurs disponibles pour microcontrôleurs PICs.

D'autre part, la plupart des projets ont des objectifs très spécifiques (ex: visualiseur de courbes de simulation numérique), ce qui a pour conséquence de demander une multitudes de logiciels pour réussir à réaliser une chaîne complète de développement. Heureusement, certains projets (comme gEDA ou GPUTILS) essaient de regrouper les logiciels complémentaires. La prochaine étape pour la communauté open-source sera de créer deux logiciels tout-en-un permettant d'un côté la conception matérielle et de l'autre la conception logicielle.

Malgré tout, l'utilisation de logiciels open-source pour la CAO ne doit pas être négligée. En effet, certains d'entre eux sont pleinement fonctionnels (on peut citer par exemple TkGate) voire même mieux que beaucoup d'outils commerciaux, comme c'est le cas de GCC.

Que ce soit avec des logiciels commerciaux ou open-source, la CAO électronique est aujourd'hui tout à fait viable pour toute la chaîne de développement matérielle et logicielle.

17/20 Glossaire Glossaire

GLOSSAIRE

CAO : Conception Assisté par Ordinateur

EDA : Electronics Design Automation

ENSEIRB : École Nationale Supérieure d'Électronique, Informatique et Radiocommunication de Bordeaux (http://www.enseirb.fr/)

GNU : Gnu is Not Unix (http://www.gnu.org/)

GPL : General Public License (http://www.gnu.org/copyleft/gpl.html)

LCD : Liquid Cristal Display

USB : Universal Serial Bus

18/20 Références Références

RÉFÉRENCES

Logiciels de CAO électronique, toutes plate-formes (la plupart sont commerciaux) http://etronics.free.fr/dossiers/softs/soft00/logiciels.htm

Logiciels de CAO électronique pour plate-formes Unix (la plupart sont open-source) http://freshmeat.net/browse/246/

Barttels AutoEngineer http://www.bartels.de/bae.htm

CadSoft Eagle http://www.cadsoftusa.com/ gEDA http://www.geda.seul.org/

Oregano http://arrakis.gforge.lug.fi.uba.ar/

GCC http://gcc.gnu.org/

ICDPROG http://icdprog.sourceforge.net/

PCB http://pcb.sourceforge.net/

PiKdev http://pikdev.free.fr/

YaPIDE http://www.mtoussaint.de/yapide.html gputils http://gputils.sourceforge.net/

SoC GDS http://www.dolphin-integration.com/medal/socgds/socgds_overview.html

TkGate http://www.tkgate.org/

XCircuit http://bach.ece.jhu.edu/~tim/programs/xcircuit/

19/20 Annexe – Comparatif des logiciels Annexe – Comparatif des logiciels

ANNEXE – COMPARATIF DES LOGICIELS

20/20