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.
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.
Voici les différentes étapes à suivre:
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.
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
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:
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.
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:
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:
Nous remplaçons donc ces lignes de commandes par les suivantes:
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.
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 |
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 |
Contacts:
| Adresse mail |
|---|
| François Godreau |
| Xavier Portefaix |