3

Click here to load reader

INFORMATIONS Compilateurs C pour le PIC - scan78.free.frscan78.free.fr/Elektor/Elektor 2003 FR/f036090.pdf · Le compilateur standard de CCS en combinaison avec l’éditeur de

  • Upload
    lybao

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INFORMATIONS Compilateurs C pour le PIC - scan78.free.frscan78.free.fr/Elektor/Elektor 2003 FR/f036090.pdf · Le compilateur standard de CCS en combinaison avec l’éditeur de

INFORMATIONS

90 Elektor 6/2003

Comme C a été conçu dès le départ en vue defaciliter l’accès au matériel et que ce langagepeut se targuer d’une meilleure efficacité quenombre d’autres langages de programmation,

il n’est guère surprenant de consta-ter que son utilisation a pris sonenvol. Il est possible aujourd’hui,sous C, de développer pratiquement

n’importe quoi : microcontrôleurs (duplus humble PIC aux gros monstrestels que le Xscale), PNS (ProcesseurNumérique de Signal = DSP pourDigital Signal Processor), pro-grammes pour systèmes d’exploita-tion (SE) tournant sous Windows etLinux voire même sous UNIX et sesstations de travail, programmesadministratifs. Mais il est égalementpossible de créer des pilotes de péri-phériques (device-driver) et mêmedes SE complets (au nombre des-quels on compte Linus et Win-dows 2000/XP), sans même parler,bien entendu des applications quenous utilisons journellement (deWord à Mozilla). Tout cela fait indu-bitablement de C le langage de pro-grammation le plus « universel » etvu l’efficacité de ce langage, leschoses ne sont pas près de changer.Il vaut donc la peine de se mettre auC et d’en apprendre le fin mot !Nous allons, dans le présent article,passer en revue 2 compilateurs Cpour le PIC. Comme nous le disionsplus haut, le PIC est l’un des micro-contrôleurs les plus populairesauprès des amateurs; sa mise enoeuvre est facile, et est, dans biendes cas, tout aussi adapté et puis-

Compilateurs C pour le PICTravailler efficacement avec un langage de haut niveau

Olaf Beckman Laprè

Le PIC est un microcontrôleur que l’on retrouve au coeur de nombre deréalisations (chez Elektor aussi). La plupart des développeurs utilisantce contrôleur programment en assembleur. Mais il est égalementpossible de programmer un PIC en s’aidant d’un langage de haut niveau,en C par exemple.

Figure 1. Le compilateur standard de CCS en combinaison avec l’éditeur de programmationConTEXT.

Page 2: INFORMATIONS Compilateurs C pour le PIC - scan78.free.frscan78.free.fr/Elektor/Elektor 2003 FR/f036090.pdf · Le compilateur standard de CCS en combinaison avec l’éditeur de

sant que le légendaire 8051.Chaque amateur pose ses propresexigences à un compilateur C. Il fautqu’il soit et facile à utiliser et bonmarché, pour ne pas avoir à rendrede comptes à qui que ce soit (suivezmon regard).

Au nombre des compilateurs quiremplissent ce cahier des chargesrudimentaire nous pouvons men-tionner le compilateur PCM de CCSet le compilateur C2C de Pavel Bara-nov. Si la mise en oeuvre et les pos-sibilités de ces 2 compilateurs diffè-rent sensiblement, ils n’en répondentpas moins à nos critères de sélec-tion. Les nouvelles versions se suc-cédant à un train d’enfer, les ver-sions décrites ici sont celles dontnous disposions à l’écriture de ceslignes et peuvent partant présenterl’une ou l’autre différence par rapportaux versions les plus récentes de cesprogrammes.

Environnement de développementSi vous faites partie de ceux quidéveloppent plus ou moins réguliè-rement un projet à base de micro-contrôleur, vous savez sans doutecombien le confort d’utilisation estun facteur important. Il est en outrevital qu’un développeur débutantpuisse se sortir d’affaire sans à avoirà consulter à tout bout de champ lesmanuels (électroniques) et autresouvrages grand public. Ces 2 compi-lateurs supposent une assez bonneconnaissance du C vu que la docu-mentation qui les accompagne esttrès sommaire et destinée plus par-ticulièrement à la description des(im)possibilités ainsi que des rou-tines de la bibliothèque.Les environnements de développe-ment de ces 2 compilateurs diffèrenttrès sensiblement.

Le compilateur CCS standard neconnaît même pas d’environnementde développement, il se contented’être un compilateur. Il faudra ledémarrer dans une fenêtre DOS oudans une console en ajoutant lesparamètres (nom du fichier + autresoptions) requis. Il est bien entenduplus confortable de pouvoir démar-rer un compilateur depuis l’intérieurd’un éditeur. On pourra, à cet effet,

INFORMATIONS

916/2003 Elektor

Figure 2. Le compilateur C2C possède un environnement de développement tournant sousWindows.

Listage 1. Structure cartographiée vers un port d’E/S.Dans le cas du compilateur PCM les choses se passent de la manière suivante :

struct _keys{bit mode_sw; // LSBbit plus_sw;bit minus_sw;bit set_sw;bit unused : 4;} keys

#byte keys = 5 // ‘keys’ struct is mapped to address 5 = PORTB

if (keys.mode_sw == 1) {// mode switch was pressed}

Avec le compilateur C2C cela se fera par la prise en compte du port et le test, à l’aide del’opérateur « & », pour vérifier si un bit est positionné (à « 1 ») ou non, processus illustré ci-après

char keys@5 // keys are mapped to address 5 = PORTB

if (keys & 1){// mode switch was pressed

Page 3: INFORMATIONS Compilateurs C pour le PIC - scan78.free.frscan78.free.fr/Elektor/Elektor 2003 FR/f036090.pdf · Le compilateur standard de CCS en combinaison avec l’éditeur de

fort bien utiliser l’éditeur-programmateurConTEXT (cf. en fin d’article), programme quel’on reconnaît sur la recopie d’écran de lafigure 1.Le compilateur C2C (version 4.0e, cf. figure 2)possède un environnement de développe-ment tournant sous Windows qui est aussiplus confortable à utiliser. L’inconvénient estque la version utilisée par l’auteur de cetarticle présentait encore un certain nombrede « bugs » qui rendait délicate la reproduc-tion du texte. Le programme ne s’est cepen-dant jamais « planté ».Le compilateur C2C connaît une option luipermettant de programmer, depuis l’environ-nement de développement, un PIC en appe-lant tout simplement un petit programme deprogrammation externe.Les 2 compilateurs sont en mesure de géné-rer un fichier .LST ce qui permet au compila-teur d’inspecter le code assembleur produit.Il s’agit d’une bouée de sauvetage pratiquelorsque le code ne fait pas exactement ce quel’on en attend ou lorsque l’on veut s’assurerde l’efficacité de son code. Il peut être inté-ressant, dans certains cas, d’essayer un algo-rithme différent pour voir si le compilateurproduit un code assembleur plus compact,mais en règle générale cela n’est pas néces-saire. L’auteur a cependant rencontré dessituations dans lesquelles le fait d’inhiberl’optimalisation du code par le compilateuravait permis de résoudre des problèmes.Il existe pas moins de 5 versions du compila-teur CCS. La version PCB est destinée auxPIC 12 bits, le compilateur PCM dont nous

avons parlé plus haut l’étant aux PIC14 bits, sachant qu’il existe, depuispeu, une version PCH du compila-teur destinée elle aux PIC 18 bits. Ils’agit de lignes d’instruction pourapplications Windows qui à l’exécu-tion font apparaître un dialogue quivisualise le déroulement du proces-sus de compilation en cours. Il fau-dra partant les associer à un éditeurde programmation tel que ConTEXTévoqué plus haut. Il existe cepen-dant aussi une version tournant sousWindows en 2 variantes, PCW etPCWH, mais elle coûte sensiblementplus cher que les versions à ligned’instruction.Le compilateur C2C est proposé enshareware et coûte bien moinscher que les compilateurs CCS. Lesnouvelles versions se bousculent;l’auteur a testé les versions 4.0 et4.6, mais depuis il est apparu uneversion réactualisée et remodelée,la version 5.0 qui est constituéed’un environnement de développe-ment intégré (IDE = IntegratedDevelopment Environment) baptiséPicAntIDE.

BibliothèqueLes compilateurs se différentienttrès nettement l’un de l’autre auniveau de la bibliothèque et descapacités en C. Ainsi, le compilateurC2C se trouve en contact plus« direct » avec le matériel parce queles choses se passent à un niveaurelativement bas (low level), tandisque le compilateur PCM met l’ac-cent sur la rapidité de la solution etla minimisation du travail de pro-grammation. Nombre des routinesde bibliothèque intégrées dans lecompilateur PCM sont égalementdisponibles sur le site Internet ducompilateur C2C, écrits par destierces parties. Les 2 compilateurspossèdent une bibliothèque inté-grée pour RS-232 et les temporisa-tions chronologiques.Le compilateur PCM présente legrand avantage de supporter lesstructures et les champs de bits (bit-field). Il est possible de ce fait d’avoirune structure interne qu’il est pos-sible de cartographier directementvers un port d’E/S dont on pourraattribuer individuellement les lignesselon les besoins, situationsqu’illustre le code du listage 1.

Le compilateur PCM dispose d’unebibliothèque exhaustive pour I2C etRS-232. Il intègre même le logiciel decommande pour le microcontrôleurd’affichage LCD, le HD44780, y com-pris une instruction printf() plus mus-clée. Notons au passage qu’il estpossible de modifier la routine printf()par la définition d’une routine putc()propre, routine qu’utilisera la routineprintf(). Il est même possible ainsid’envoyer la sortie de printf() vers unaffichage LCD graphique en se limi-tant à l’écriture de la routine putc()pour le LCD en question (une sortede pilote de périphérique en fait). Lecompilateur est accompagné d’uneprofusion de pilotes (driver) exo-tiques qui permettent de faire quasi-ment n’importe quoi, de la com-mande d’écrans tactiles à la lecturede capteurs de température. Il fau-dra bien entendu que votre applica-tion utilise les circuits intégrés queles pilotes peuvent commander vuque sinon il vous faudra écrire votrepropre pilote pour le composant nonsupporté.

Contrairement au compilateur C2C,PCM supporte également la virguleflottante IEEE 32 bits. Cette diffé-rence n’est pas nécessairement cri-tique vu que le PIC de la majoritédes applications sert uniquement àdes fins de commande « rudimen-taire ». Les 2 compilateurs peuventutiliser des variables 8 et 16 bits.

En guise de conclusionChacun de ces 2 compilateurs vautson prix, ils conviennent tous deuxaux applications personnelles, touten signalant cependant que C2Cs’adresse plutôt à un utilisateurexpérimenté. Le compilateur PCMoffre un certain nombre d’extra (telsque virgule flottant, champs de bit)et possède en outre une bibliothèqueexhaustive qui permet de se mettrerapidement à l’ouvrage, mais il coûteégalement 2 fois plus cher que C2C.

Il est recommandé de concevoirvotre montage de façon à pouvoir leprogrammer en mode ICP (In-CircuitProgramming), ce qui permet de rac-courcir très sensiblement les cyclescompilation/effacement/programma-tion/débogage.

(030098)

INFORMATIONS

92 Elektor 6/2003

Adresses Internet :Compilateur PCB (pour PIC 12 bits), compi-

lateur PCM (pour PIC 14 bits), compilateur

PCH (pour PIC 18 bits) et compilateur

PCW(H) (version Windows) :

www.ccsinfo.com/picc.shtml

prix à compter de 125 $US + frais d’envoi

Éditeur de programmation ConTEXT :

www.fixedsys.com/context/

Version de démonstration de PCW

(1 Koctet) :

www.ccsinfo.com/demo.htm

Compilateur C2C :

www.picant.com/c2c/c.html

Enregistrement 59 $US