Debian logo [embedded-µC.LINUX]

13. Outils de développement

Cette section rassemble les références sur les outils utilisés dans ce support. Ce «catalogue» ne prétend pas être exhaustif.

13.1. C/C++ sur Windows : Dev-Cpp

Dev-Cpp est une interface de développement intégrée (IDE ou Integrated Development Environment très connue sur Windows. Elle permet d'utiliser les outils GNU : le compilateur gcc, le debugger gdb, make, etc.

Dev-Cpp est téléchargeable à partir du site SourceForge. Le fichier exécutable de la forme devcpp-x.x.x_x_setup.exe comprend l'interface graphique et tous les outils de développement. Il n'est pas nécessaire d'installer d'outils supplémentaires pour commencer à développer en C/C++.

13.2. C/C++ sur GNU/linux

Les outils de la chaîne de développement C/C++ sont installés par défaut avec le système d'exploitation. On peut le vérifier en interrogeant le gestionnaire de paquets APT.

$ aptitude search gcc-4.1
i   gcc-4.1            - The GNU C compiler
i   gcc-4.1-base       - The GNU Compiler Collection (base package)
p   gcc-4.1-doc        - documentation for the GNU compilers (gcc, gobjc, g++)
i   gcc-4.1-locales    - The GNU C compiler (native language support files)
i   gcc-4.1-multilib   - The GNU C compiler (multilib files)
p   gcc-4.1-source     - Source of the GNU Compiler Collection

13.3. C sur MSC1210 : SDCC

SDCC est un compilateur C multi-cibles conforme à la norme ANSI. Il supporte les microcontrôleurs (MCUs) des familles Intel 8051, Maxim 80DS390, Zilog Z80, Motorola 68HC08, Microchip PIC16 et PIC18.

Ce compilateur est une alternative intéressante pour les microcontrôleurs qui ne sont pas directement supportés par la chaîne d'outils GNU.

Les composants Texas Instruments™ de la famille MSC1210 sont des convertisseurs analogiques/numériques (ADC) qui intègrent un microcontrôleur 8051 avec 2Ko de ROM contenant des fonctions de pilotage de périphériques et de contrôle. Ce type de composant entre donc bien dans les cibles du compilateur SDCC.

Sur Windows XP

Le compilateur et ses bibliothèques sont téléchargeables à partir du site SourceForge. Le fichier exécutable de la forme sdcc-2.6.0-setup.exe disponible à la rubrique sdcc-win32 de la page de téléchargement du projet.

Cette installation ne comprend que les outils de compilation.

Sur Debian GNU/Linux

Le compilateur et ses bibliothèques sont disponibles sous forme de paquets dans la distribution Debian. La liste des paquets utiles est obtenue en interrogeant le gestionnaire de paquets.

$ aptitude search sdcc
p   sdcc                           - Small Device C Compiler
p   sdcc-doc                       - Small Device C Compiler (documentation)
p   sdcc-libraries                 - Small Device C Compiler (libraries)
p   sdcc-ucsim                     - Micro-controller simulator for SDCC

Comme pour tout logiciel libre, les sources de la chaîne de développement sont disponibles à partir des pages Web du projet SDCC - Small Device C Compiler sur SourceForge. Pour bénéficier des toutes dernières avancées de l'équipe de développement, il est possible de compiler la chaîne de développement.

Téléchargement des sources avec Subversion

On commence par créer une arborescence de stockage local des sources.

phil@b0x:~$ mkdir -p SVN/sdcc
phil@b0x:~$ cd SVN/sdcc
phil@b0x:~/SVN/sdcc$

Le premier téléchargement se fait avec la commande svn checkout.

phil@b0x:~/SVN/sdcc$ svn co https://svn.sourceforge.net/svnroot/sdcc/trunk/sdcc sdcc

Toutes les mises à jour suivantes se font avec la commande svn update.

phil@b0x:~/SVN/sdcc$ svn update
À la révision 4788.
Compilation de la chaîne de développement

La compilation sur un système GNU/Linux utilise les outils classiques de la chaîne GNU. On retrouve les trois étapes rituelles : ./configure, make et make install

  • La commande ./configure recense les outils installés sur le poste de travail et les bibliothèques nécessaires à la compilation. Si cette étape se passe correctement, on obtient un résultat du type :

    phil@b0x:~/SVN/sdcc$ ./configure
    <snipped/>
    
    sdcc 2.7.2 is now configured for
    
      Build:                
      Host:                 
      Source directory:     .
      C compiler:           gcc
      CFLAGS:               -pipe -ggdb -g -O2
    
      ENABLED Ports:
        avr                 yes
        ds390               yes
        ds400               yes
        gbz80               yes
        hc08                yes
        mcs51               yes
        pic                 yes
        pic16               yes
        xa51                yes
        z80                 yes
    
      Disable packihx:      0
      Disable ucsim:        0
      Disable device lib:   0
      Disable sdcpp:        0
      Disable sdcdb:        0
      Enable documentation: 0
      Enable libgc:         0
    
      Install paths:
        binary files:       ${prefix}
        include files:      ${datarootdir}/sdcc/include
        library files:      ${datarootdir}/sdcc/lib
        documentation:      ${datarootdir}/doc/${PACKAGE_TARNAME}
    
        prefix:             /usr/local
        datadir:            ${datarootdir}
        datarootdir:        ${prefix}/share
    
      Search paths (incomplete, see manual for all search paths):
        binary files:       $SDCC_HOME/bin
        include files:      /share/sdcc/include
                            path(argv[0])/../share/sdcc/include
                            /usr/local/share/sdcc/include
        library files:      $SDCC_HOME/share/sdcc/lib/<model>
                            path(argv[0])/../share/sdcc/lib/<model>
                            /usr/local/share/sdcc/lib/<model>
    
    
  • La commande make lance les opérations de compilation en fonction des cibles définies lors de l'étape précédente.

    phil@b0x:~/SVN/sdcc$ make
    for misc in debugger/mcs51 sim/ucsim; do make -C $misc ; done
    make[1]: entrant dans le répertoire « /home/phil/SVN/sdcc/debugger/mcs51 »
    make[1]: quittant le répertoire « /home/phil/SVN/sdcc/debugger/mcs51 »
    make[1]: entrant dans le répertoire « /home/phil/SVN/sdcc/sim/ucsim »
    make -f main.mk all
    make[2]: entrant dans le répertoire « /home/phil/SVN/sdcc/sim/ucsim »
    make[2]: quittant le répertoire « /home/phil/SVN/sdcc/sim/ucsim »
    <snipped/>
    
  • La commande make install doit être exécutée avec les droits superutilisateur pour installer les binaires et les bibliothèques dans l'arborescence /usr/local.

    phil@b0x:~/SVN/sdcc$ su
    Password:
    b0x:/home/phil/SVN/sdcc# make install
    <snipped/>
    mkdir -p /usr/local/share/sdcc/lib/src
    cp -u -r build/* /usr/local/share/sdcc/lib
    cp -u -r small medium large ./mcs51 ./ds390 ./ds400 \
                                ./gbz80 ./z80 ./hc08 \
                                ./pic ./pic16 ./*.c /usr/local/share/sdcc/lib/src
    <snipped/>
    
  • On peut enfin vérifier que la version active de la chaîne de développement correspond aux outils que l'on vient de compiler.

    $ sdcc -v
    SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08
    	 2.7.2 #4851 (Jun 13 2007) (UNIX) 
    
Activation du support des nombres réels

Par défaut, le support des nombres réels (type float) n'est activé que pour les microcontrôleurs de la famille DS390. Pour activer l'utilisation des nombres réels sur les microcontrôleurs de la famille MSC121x, il faut éditer manuellement le fichier device/lib/printf_large.c et procéder aux modifications suivantes :

phil@b0x:~/SVN/sdcc$ diff -uBb device/lib/printf_large.c.dist device/lib/printf_large.c
--- device/lib/printf_large.c.dist      2006-05-22 23:27:38.868496000 +0200
+++ device/lib/printf_large.c   2006-05-22 22:29:34.298724000 +0200
@@ -24,9 +24,9 @@
    what you give them.   Help stamp out software-hoarding!
 -------------------------------------------------------------------------*/

-#if defined(__ds390)
+//#if defined(__ds390)
#define USE_FLOATS 1
-#endif
+//#endif

#include <stdarg.h>
#include <string.h>

Il suffit ensuite de reprendre la compilation des outils de la chaîne de développement et leur installation comme présentées ci-dessus pour bénéficier du support des nombres réels.

13.4. Logiciel de programmation de la mémoire Flash du MSC1210 via le port série

Texas Instruments™ fournit un logiciel pour Windows de pilotage de la liaison série entre le PC et le système embarqué. Ce logiciel sert aussi bien à la programmation du composant qu'aux communications lorsque le programme est en cours d'exécution.

TIDownloader est disponible à l'adresse : Software for Programming the Flash Memory Using the Serial Port v1.3.4 (Rev. C) (sbac018c.zip, 2381 KB )