Compilateur C pour DSPIC



Etude réalisée dans le cadre d'un projet de deuxième année d'école d'ingénieur au CUST à Clermont-Ferrand spécialité Génie électrique.



Plan:


Introduction


Le but de cette page est de vous présenter les différentes étapes à réaliser pour "construire" un compilateur C pour DSPIC.
Aujourd'hui, le logiciel MPLAB n'inclut pas un compilateur C par défaut pour la programmation d'un DSPIC en langage C. C'est la raison pour laquelle notre projet consiste à "construire" un compilateur C pour cible DSPIC.

La "construction" d'un compilateur est réalisable dans notre cas car le compilateur du fabricant Microchip est sous licence GPL, c'est à dire que le constructeur Microchip est obligé de fournir tous les codes associés aux programmes qu'il a réalisé et commercialisé.
Les fichiers sources seront compilés par le compilateur Cygwin. Le téléchargement du compilateur Cygwin ainsi que celui des fichiers sources est décrit par la suite.

Les différentes étapes

Voici les différentes étapes à suivre:



Installation d'un compilateur GCC


Le compilateur choisit est Cygwin. Ce compilateur permet d'obtenir les commandes et les outils de Unix sous interface Windows.

1-Allez sur le site de Cygwin (http://www.cygwin.com) et cliquez sur Install Cygwin now

2-Double-cliquez sur l'icône suivant

3-L'écran suivant apparaît, cliquez sur next:

4-Il vous demande à présent votre choix d'installation des packages:


Si vous voulez installer cygwin sur plusieurs ordinateurs n'ayant pas de connexion Internet, vous devez sélectionner Download from internet. Il suffira, par la suite, de copier les fichiers téléchargés sur les autres machines.
Cliquez sur next.

5-Le répertoire de l'installation par défaut est c:/cygwin. Sélectionnez All users et Dos et cliquez sur next.

6-Il donne maintenant le répertoire où sera copier les packages, par défaut il se nomme c:/cygwin. Cliquez sur next.

7-Sélectionnez votre type de connexion puis cliquez sur next.

8-Sélectionnez le lien à partir duquel vous désirez télécharger les packages.

9-Vous devez choisir maintenant vos packages.
Le plus délicat dans l'installation de Cygwin est le choix des packages appropriés à l'utilisation de Cygwin.
Vous pouvez tous les installer en cliquant sur ALL cependant le téléchargement durera plus de 1h30 à haut débit!
Dans le cas contraire, voici les packages qu'ils faut impérativement choisir en plus de ce déjà sélectionnés :

10- Après avoir cliquez sur next, le processus commence le téléchargement.

11- Cliquez sur le set up pour lancer l'installation.

12-Une fois l'installation terminée, un écran apparaît vous indiquant le choix de mettre un icône sur le bureau ainsi que dans le menu démarrer.

Téléchargez aussi les binutils sur le site suivant: http://www.mingw.org
Référence du binutils: binutils-2.15.91-20040904.tar.gz.

Afin de s'assurer si l'installation c'est bien déroulée, réaliser un code simple en C pour vérifier si la version que vous avez installé possède le gcc permettant de compiler un fichier C.

Obtention des fichiers sources

Cliquez sur le lien suivant et téléchargez les sources.(Attention: les sources, à elles seules, prennent 27Motects.) http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30_v1_20_03.tar.gz

Compilation des fichiers sources


Extraction des fichiers archivés

Pour désarchiver un fichier .tar, utilisez la commande tar -xzf dans la console. Exemple: tar -xzf mplabc30_v1_20_03.tar.gz

Certains fichiers utilisés lors de la compilation ne se trouvent pas dans le bon répertoire ou se nomment différemment des fichiers déjà existants.
Voici les fichiers à renommer:

Préparation de l'environnement

Nous allons maintenant définir des paths pour cygwin , afin que le compilateur puisse créer les "liens" avec les répertoires correspondant.
Pour cela écrire les lignes suivantes à la fin du fichier .bashrc. Cela permet de créer les liens automatiquement à chaque ouverture de la console.

Créez un dossier dans le même répertoire que les fichiers sources décompressées. Voir exemple suivant: nous l'appelons buidc30.


Configuration


Tapez les lignes suivantes pour configurer le compilateur:
../gcc-3.3/configure --target=pic30 --host=migwin32 --build=i386-pc-cygwin --program-prefix=pic30- --enable-languages=c

Explication:

Compilation

Ecrire la ligne suivante pour réaliser la compilation: make all-gcc

Lors de la compilation, différentes erreurs vont apparaître. Voici comment les résoudre.

La première erreur indique que le compilateur ne trouve pas les fichiers libiberty.a et pic30-gcc.exe au chemin donné.
Pour résoudre ce problème copier les fichiers dans les répertoires indiqués:


Relancer à présent la compilation.
L'erreur suivante indique que le compilateur rencontre un problème avec le fichier t-pic30.
Pour pallier le problème nous modifions le fichier existant suivant:

  • LIBGCC1 = libgcc1.null
  • CROSS_LIBGCC1 = libgcc1.null
  • # forget the libgcc1...
  • LIBGCC1_TEST=
  • LIBGCC2 = libgcc1.null
  • Nous remplaçons donc ces lignes de commandes par les suivantes:

  • LIBGCC1_TEST=
  • INSTALL_LIBGCC=
  • Relancer le compilation.
    Dans le cas ou l'erreur suivante apparaîtrai:
    gcc-3.3/gcc-3.3/gcc/cppinit.c:191:error assignement of read-only location
    Alors remplacez dans le fichier cppinit.c const char *executable_path_name par char *executable_path_name.


    Les fichiers utilisés pour réaliser la compilation se trouve dans buildc30/gcc/ et se nomme pic30-cc1.exe.
    Cet exécutable traduira le code C en langage assembleur. Il suffit alors d'utiliser MPLAB pour obtenir le code exécutable.

    Voici le code assembleur obtenu à partir d'un programme C très simple.

    Les améliorations à apporter

    On peut améliorer le compilateur obtenu en utilisant des sources plus récentes. Nous avons essayé d'utiliser ces sources, cependant de nombreuses erreurs surviennent sur les noms des fichiers et de librairies qui sont inconnus pour le compilateur. Une solution pourrai s'avérer plus simple en ajoutant aux fichiers sources antérieurs et les fichiers sources plus récents.
    Voici le lien des fichiers sources plus récents:

    Site Références de source mplab plus récente
    http://www.microchip.com mplabc30v1_33

    Conclusion

    Nous avons donc obtenu un exécutable permettant de compiler un fichier C en code assembleur pour une cible DSPIC.
    La démarche employée reste identique quelle que soit la cible considérée, seule la configuration du compilateur change.
    Voici un lien très intéressant qui vous aidera dans votre démarche.

    Site RésuméLangue;
    http://www.rpc-engineering.de/bin/view/Knowhow/DsPicGcc Réalisation d'un compilateur C pour DSPIC Site anglais



    Page réalisée par: François Godreau et Xavier Portefaix.
    Etudiant en deuxième année d'école d'ingénieur au CUST spécialité génie électrique

    Contacts:

    Adresse mail
    François Godreau
    Xavier Portefaix