Home
Les microcontrôleurs PIC programmés en Objective Caml
Contents
1. trapSp un registre stockant la position dans la pile du dernier rattrapeur d exception pos extraArgs un compteur stockant lors d un appel de fonction le nombre d arguments pass s Il est utilis pour rep rer les appels partiels 186 JFLA 2011 Il existe 146 instructions de code octet diff rentes Cependant 60 sont des alias permettant de factoriser le code et d am liorer la vitesse d ex cution Une instruction de code octet est compos e d un identifiant d instruction opcode et ventuellement d argu ments Dans l ex cutable g n r par ocamlc chaque opcode et chaque argument sont cod s sur quatre octets Ces instructions peuvent tre group es en sept cat gories calculs arithm tiques et logiques contr le branchements conditionnels et inconditionnels gestion de la m moire acc s la pile et au tas allocations dynamiques gestion des fermetures cr ations de fermetures appels et retours de fonctions gestion des exceptions poses de rattrapeurs lancements d exceptions gestion des objets appels de m thodes gestion des appels aux fonctions externes On peut se r f rer la documentation de X Clerc concernant le projet Cadmium 3 pour le d tail de chaque instruction 4 L implantation de la machine virtuelle Objective Caml sur PIC Cette section d crit l implantation que nous avons r alis e pour permettre d ex cuter des program
2. Les microcontr leurs PIC programm s en Objective Caml Benoit Vaugon Philippe Wang Emmanuel Chailloux 1 Universit Pierre et Marie Curie Paris 6 Benoit Vaugon etu upmc fr 2 Laboratoire d informatique de Paris 6 LIP6 CNRS UMR 7606 Universit Pierre et Marie Curie Paris 6 Philippe Wang lip6 fr Emmanuel Chailloux lip6 fr R sum Les microcontr leurs PIC sont des circuits int gr s programmables Ils se dis tinguent par leurs bas prix et leur faible consommation nerg tique Les principaux lan gages de programmation disponibles sont l assembleur PIC et des sous ensembles des lan gages C et Basic Ils demandent souvent au programmeur de se pr occuper m ticuleusement des limitations du mat riel Dans ces conditions il est souvent difficile d exprimer des algo rithmes complexes utilisant des allocations dynamiques Nous introduisons Objective Caml un langage applicatif multiparadigme a allocation dy namique et r cup ration automatique de m moire L utilisation d un langage de haut ni veau sur ces architectures apporte la possibilit d y ex cuter des algorithmes bien plus com plexes tout en assouplissant fortement les contraintes de programmation notamment parce que la gestion de la tr s petite quantit de m moire est alors automatis e Cela facilite le processus de mise au point tout en garantissant un haut niveau de s ret d ex cution Pour ce faire nous introduisons une machine
3. d une partie importante des octets inutiles du code octet Les opcodes sont alors cod s sur un octet au lieu de quatre et chaque argument de chaque instruction est cod sur le nombre d octets minimal 1 ou 2 selon les instructions Par exemple l instruction de la machine virtuelle constint permet de placer un entier lit ral dans l accumulateur Son ar gument est un entier et est donc cod sur deux octets De m me l instruction makeblock permet d allouer un bloc dans le tas Elle prend un argument un tag et une taille qui sont tous les deux compris entre 0 et 255 Ils sont alors cod s sur un octet chacun Cette compression simple permet de gagner un facteur 3 5 sur la taille occup e par le code octet dans la m moire programme du PIC et par cons quent le m me facteur 3 5 sur la vitesse de lecture du code par l interpr te La proportion moyenne entre le temps de lecture d une instruction par rapport au temps total d ex cution de cette instruction tant de 6 on en d duit qu on gagne un facteur 1 15 sur la vitesse d ex cution totale Le gain principal de cette optimisation concerne donc la taille maximale des programmes qu il est possible de mettre sur un PIC qui est alors multipli e par 3 5 Par la m me occasion quelques optimisations ont t faites pour am liorer la vitesse d ex cution de l interpr te Par exemple 6 Rappelons que l absence de cache que ce soit pour la m moire ou pour
4. 1024 8 16 PIC24F 16 4 256 512 98304 0 512 16 PIC24H 16 12 gt 256 1024 16384 0 40 dsPIC30 16 6 144 256 8192 0 4096 30 dsPIC33 16 6 256 256 30720 0 30 PIC32 32 32 512 8192 131072 0 10 gt 20 Tableau 1 Tableau comparatif des diff rentes s ries de PIC Les PIC ne poss dent pas d instructions sp cifiques pour com muniquer avec l ext rieur ni pour configurer les interfaces in ternes Ceci se fait en lisant et en crivant dans des registres par ticuliers du PIC Les pattes du PIC sont regroup es en ports et chaque port correspond un registre du PIC Par exemple pour appliquer une tension de 5V sur la patte num ro 3 du port B il suffit de mettre 1 le bit num ro 3 du registre PORTB Ceci peut se faire par l instruction assembleur bsf PORTB 3 De m me pour configurer l interface EUSART permettant de communiquer avec un port s rie d un ordinateur il suffit d crire dans le registre TXSTA Lune des difficult s du portage d un langage de haut niveau comme Objective Caml sur PIC est de permettre au programmeur 5 Enhanced Universal Synchronous Asynchronous Receiver Transmitter 184 JFLA 2011 d effectuer ce genre d op rations aussi facilement qu en assem bleur sans pour autant casser les principes du langage Il faut alors donner au programmeur des moyens l gants et perfor mants d effectuer des op rations dont la s
5. PIC18F4620 est de 64ko La taille du binaire associ l interpr te est de 4 9540 La taille du binaire associ la biblioth que d ex cution est de 4 2540 Par cons quent la taille maximale du code octet que l on peut mettre dans ce PIC est de 55ko ce qui repr sente 86 de la m moire totale La m moire vive du PIC18F4620 est de 3 9680 Elle est par tag e entre la pile d ex cution le tas des registres r serv s la machine virtuelle 390 et les registres sp ciaux 1280 La pro portion entre la taille de la pile et la taille du tas est d finie la compilation Par d faut la taille de la pile a t arbitrairement fix e 174 niveaux Comme l algorithme de gestion m moire est un Stop amp Copy seule la moiti du tas est utilisable La taille du tas est donc ici de 17920 7 2 Calcul de nombres premiers avec allocations de listes chain es Nous proposons d observer le temps d ex cution d un pro gramme calculant la liste chain e des n premiers nombres pre miers Le principal site d allocation m moire est situ dans la d finition de la seconde fonction npremiers_aux il s agit du constructeur de listes Nous pouvons ainsi pr dire le nombre d l ments allou s dans le tas Ce nombre correspond en fait l allocation du r sultat attendu les n premiers nombres pre miers dans une liste chain e La liste allou e occupe alors n x 2 2 2 6 xn octets ce qui fait 15000 pour une li
6. mantique est une cri ture dans la m moire une adresse fix e 2 3 Le PIC18F4620 Dans notre r alisation le code assembleur a t crit pour la s rie PIC18 Cette s rie a la particularit d avoir un jeu d ins tructions tendu cr l origine pour faciliter la compilation depuis le langage C Ces instructions nous ont en particulier per mis de faciliter la gestion de la pile Objective Caml et d am liorer significativement les performances Plus pr cis ment le PIC sur lequel les tests ont t effectu s est le PIC18F4620 Il a t choisi principalement pour son grand nombre de registres En effet la quantit de m moire dynamique est le facteur qui nous a pos le plus de difficult s pour porter des programmes Objective Caml sur PIC Ses principales caract ristiques sont pr sent es dans le tableau 2 Architecture 8 bits M moire flash 64 ko Registres 3968 o EEPROM 1024 o MIPS 10 Entr es sorties 36 broches Tableau 2 Caract ristiques du PIC18F4620 3 La machine virtuelle Objective Caml La machine virtuelle Objective Caml est une machine a pile Elle permet d ex cuter le code octet g n r par le compilateur ocamlc Un tel ex cutable contient principalement trois sections CODE contient le code octet Les PIC programm s en OCaml 185 DATA contient la s rialisation d un tableau de variables glo bales Ce tableau contien
7. r soudre ce probl me les foncteurs sont une solution assez agr able Nous avons donc cod un module suppl mentaire dans la biblioth que standard nomm Lcd Voici un exemple de programme utilisant ce module module Aff Lcd Connect struct module Pic Pic18f4620 let is_8_bits true mode de comm bus de donn es let e Pic RDO d f des pattes de commandes let rw Pic RD1 let rs Pic RD2 let port Pic PORTC port pour le bus de donn es end open Aff 0 oN Aun D BH Les PIC programm s en OCaml 199 Tetror init initialisation de 1s sat tareheurm let O config configuration de l afficheur mode Cursor_right sens de d placemt du curseur disp On affichage visible cursor 0ff curseur invisible blink Off cuseur non clignotant lmode Two affichage sur 2 lignes font F5x8 police de caract res 5x8 px let write_string Hello world AA 6 2 Un simulateur de PIC pour les programmes Objective Caml Le d bogage d applications pour PIC est un probl me assez d licat En effet lorsqu un programme s ex cute sur un PIC moins utiliser des d bogueurs in situ il est impossible de suspendre l ex cution pour observer le contenu de la m moire De plus un PIC n est pas forc ment connect une interface permettant de communiquer facilement avec un humain comme par exemple un afficheur LCD Il est alors impo
8. P ee ZE Le ramasse miettes doit g rer les blocs internes d une mani re particuli re En effet lorsqu il arrive sur un bloc ayant le tag infixe 249 il ne doit pas simplement copier le bloc interne mais tout le bloc externe Pour retrouver le bloc externe il utilise le champ size du bloc infixe Celui ci ne contient pas la taille du bloc infixe mais la distance entre le bloc interne et le d but du bloc externe 190 JFLA 2011 4 3 Gestion des appels externes Les appels externes sont des appels depuis le programme Ob jective Caml des fonctions crites l origine en C Ici ces ap pels se font des fonctions crites en assembleur Il reste toujours possible d interfacer le programme Objective Caml avec n importe quel langage Pour ce faire il est n cessaire de compiler les fonc tions externes crites dans ce langage en assembleur ainsi que d avoir un contr le sur le label g n r par le compilateur au d but du code assembleur de la fonction externe Comme cela a t expliqu dans la section 3 les fonctions ex ternes sont associ es a un identifiant entier d fini dans la section PRIM de l ex cutable g n r par ocamlc L appel une fonction externe est compil en une instruction particuli re de la machine virtuelle nomm e ccall Cette instruction prend comme argu ment l identifiant de la fonction externe et le nombre d arguments qu elle n cessite L instruction ccall consiste d
9. aient pas toutes t paires Le choix qui a t fait est donc de coder les valeurs Objective Caml dans un PIC sur deux registres soit 16 bits Ceci implique diff rentes restrictions Notamment les entiers ne sont repr sent s que sur 15 bits Ils sont donc compris entre 16 384 et 16 383 De plus il est n cessaire de pouvoir coder une adresse de code dans une valeur par exemple dans une fermeture La taille du code octet est donc limit e a 64ko 4 2 2 Les blocs Dans la machine virtuelle Objective Caml toutes les valeurs pr sentes dans le tas sont regroup es dans des blocs Un bloc est un tableau de donn es auquel on a ajout un en t te L en t te contient habituellement trois champs le champ size contenant la taille du bloc le champ color utilis par le gestionnaire m moire pour marquer les blocs et le champ tag donnant des in formations sur le contenu du bloc Certains blocs comme les fer metures contiennent des valeurs et doivent tre parcourus par le gestionnaire m moire D autres comme les cha nes de caract res contiennent de simples donn es brutes et ne doivent pas tre ana lys s par le ramasse miette Le tag permet de distinguer les blocs analyser des autres Dans la repr sentation choisie ici les en t tes sont cod es sur deux octets et ne contiennent pas de champ color Le ramasse miette utilise une autre technique pour marquer les blocs Celle ci Les PIC programm s en OCaml 189
10. ammes compil s en code octet Modifier l un des deux compilateurs implique un travail de maintenance cons quent a posteriori du fait de l volution de la distribution d Objective Caml Et l mission de code PIC tant as sez difficile l id e d tendre le compilateur dans cette optique a t assez vite abandonn e au profit de l implantation d une ma chine virtuelle sur PIC pour Objective Caml 180 JFLA 2011 Cet article pr sente notre r alisation appel e ocAPIcC qui r pond la question comment faire tenir une machine virtuelle pour Objective Caml sur un PIC Dans la suite de cet article nous commen ons par d crire les caract ristiques des microcontr leurs PIC plus en d tail afin de mieux comprendre la probl matique des contraintes du mat riel Puis les sections 3 et 4 pr sentent la machine virtuelle Objective Caml et son implantation sur un PIC La section 5 propose plu sieurs moyens de r duction de la taille des programmes afin de pouvoir en embarquer davantage sur les PIC L environnement de d veloppement fourni avec la distribution est ensuite d taill en section 6 Puis une tude de performances est d crite en section 7 Enfin nous discutons des diff rentes exp rimentations de pro grammation de PIC dans des langages de haut niveau pour les comparer avec la notre en section 8 et concluons sur notre exp rience en section 9 2 Les microcontr leurs PIC 2 1 Les microcontr le
11. ar le tableau des variables globales on teste les acc s en lecture Ceci est possible car ces acc s sont explicites dans la machine virtuelle ils ne peuvent se faire que par deux types d instructions getglobal affectant l accumulateur avec une variable globale et getglobalfield affectant l accumula teur avec un champ d une variable globale cette instruction ne peut bien s r tre utilis e que pour les variables globales cor respondant des blocs Les variables globales qui nous int ressent sont celles sur lesquelles aucun getglobal n est effectu seulement des getglobalfield Pour ces variables on d termine chaque champ non utilis et on supprime son initialisation 2 On effectue ensuite une analyse du flot de donn es Le but est de d terminer et d liminer du code octet les instructions ayant cr les valeurs n tant plus stock es dans les champ des variables globales nettoy es en 1 En particulier on cherche liminer les instructions de cr ation des fermetures closure et closurerec qui ne sont jamais stock es Cet algorithme consiste en la cr ation d un graphe de d pendances entre les instructions puis en un parcours de ce graphe pour d terminer les instructions dont le seul effet a t de calculer des valeurs qui ne sont jamais lues 3 Enfin on effectue une analyse standard du flot de contr le pour d terminer les blocs de code non atteignables lors de l ex cution De tels blocs
12. concernant les entr es sorties standards ont t suprim es des modules Pervasives et Buffer car elles n ont pas vraiment de sens sur un PIC Le tableau 3 indique ce qui a t fait de chaque module de la biblioth que standard Modules copi s Modules modifi s Modules non port s Array ArrayLabels Buffer Arg Complex CamlinternalLazy Camlinternal00 Callback Digest CamlinternalMod Gc Map Obj Filename Format Char Hashtbl Pervasives Genlex Marshal Int32 Int64 Lazy Random Nativeint List ListLabels Std_exit Sys Parsing Printexc MoreLabels OO Printf Scanf Queue Set Sort Stream Weak Stack StdLabels String StringLabels Tableau 3 Portage des modules de la biblioth que standard De plus comme cela avait t dit dans la section 2 2 l un des probl mes lors du portage d un langage de haut niveau sur PIC est de permettre au programmeur d acc der aux ressources bas niveau sans casser la s curit ni les principes de programmation associ s au langage haut niveau Une bonne illustration de ce pro 1 2 3 4 5 6 7 8 9 198 JFLA 2011 bl me est la gestion des registres sp ciaux du PIC depuis le monde Objective Caml Les registres sp ciaux d un PIC d signent les ports et les registres de configuration des interfaces internes du PIC De puis l assembleur on lit et on crit librement dans ces registres La question est de donner au programmeur Ob
13. crocontr leurs PIC en Objective Caml Elle est pr te l utilisation et distribu e sous la licence libre CeCILL B L implantation dans un langage de tr s bas niveau de la machine virtuelle Objective Caml sur PIC permet d obtenir de tr s bonnes performances Le c t paradoxal de notre d marche est qu en simplifiant la programmation pour PIC en utilisant Objective Caml on arrive faire ex cuter des programmes plus importants qui peuvent donc contenir une part algorithmique non n gligeable de mani re plus s re gr ce au ty page statique et la gestion automatique de la m moire tout en restant tr s efficace Cette d marche ouvre des perspectives in t ressantes pour le portage d un langage de haut niveau comme Objective Caml sur des appareillages ayant de faible ressources tant en m moire qu en capacit de calcul Il reste alors a enrichir la biblioth que pour PIC afin de pou voir tirer davantage profit de ces microcontr leurs ainsi que des p riph riques usuellement associ s a ces derniers Ces enrichisse ments pourront int grer aussi des extensions sur les mod les de concurrence li s au d veloppement d applications interactives et r actives pour PIC bas es sur l environnement Objective Caml Un autre avantage de cette d marche machine abstraite est de pouvoir raisonner sur du code octet plut t que sur l assem bleur PIC soit pour prouver des propri t s par analyse statique soi
14. e Il est en effet g n ralement plus facile de concevoir et de maintenir un logiciel qu un circuit lectronique Les architectures d di es sont cependant parfois n cessaires pour des raisons de performances Diff rentes familles de microcontr leurs sont disponibles sur le march Parmi les plus connus on trouve le 6800 et ses d riv s comme le 68HC11 produits l origine par la soci t Motorola puis par Freescale Semiconductor les microcontr leurs Philips en particulier les s ries de P87 et P89 ainsi que les PIC de la soci t Microchip 2 2 Les PIC Les PIC forment une famille de microcontr leurs d velopp s par la soci t Microchip Il existe plusieurs centaines de mod les regroup s dans diff rentes s ries PIC16 PIC18 etc en fonction de leurs caract ristiques Leurs prix varient entre approximative ment 0 30 et 9 dollars am ricains d apr s le site de Microchip Chaque s rie de PIC poss de son propre langage assembleur Les programmes crits pour une s rie ne sont en g n ral pas com patibles pour les autres Cependant il est souvent facile de porter de mani re quasi syst matique les programmes d une s rie de nu m ro faible vers une s rie de num ro plus grand Les PIC poss dent une architecture RISC Leurs jeux d instruc tions se composent d instructions arithm tiques et logiques d ins tructions de branchement et de quelques instructions sp ciales 3 http www elekt
15. e plus lorsque le ramasse miette copie un bloc il stocke dans le premier champ du bloc original l adresse de la copie La ques tion est comment faire pour les blocs de taille O habituelle ment appel s atomes On remarque cependant que les atomes 192 JFLA 2011 ne contiennent pas de donn es Et de plus aucune valeur Objec tive Caml ne correspond un atome de tag diff rent de 0 Il n y a donc qu un seul atome possible celui ayant pour tag 0 pour size 0 et pas de donn es Il suffit donc de l allouer statiquement une fois pour toute en dehors du tas et de toujours utiliser le m me Enfin le ramasse miette doit pouvoir marquer un bloc comme tant copi Dans la repr sentation standard des blocs en Objec tive Caml l en t te contient un champ color qui est l pour a Ce pendant dans la repr sentation choisie ici voir la section 4 2 2 l en t te des blocs ne contient pas de champ color Or comme il a t dit pr c demment aucun bloc pr sent dans le tas n est de taille 0 Pour marquer un bloc dans le tas comme tant copi il suffit donc de lui mettre le champ size de l en t te 0 5 Diff rentes transformations du code octet Pour installer un programme Objective Caml compil en code octet sur un PIC il serait possible de l crire dans la m moire programme c t de l interpr te et de la biblioth que d ex cu tion L interpr te ZAM du PIC devrait alors effectuer exactement le m m
16. e travail que l interpr te standard ocamlrun savoir d s rialiser le tableau des variables globales calculer les indices des fonctions externes et d buter l ex cution du code Il ne faut cependant pas oublier qu un PIC a des ressources res treintes tant au niveau vitesse de calcul qu au niveau quantit de m moire disponible Une telle approche impliquerait in vitable ment une initialisation atteignant facilement plusieurs dixi mes de secondes et une forte contrainte sur la taille maximale des programmes De plus il est possible d effectuer des analyses sta tiques sur le code octet dans le but d liminer du code mort et des allocations inutiles Nous avons donc d cid de transformer l ex cutable g n r par ocamlc avant de le transf rer sur le PIC Cette transformation consiste en une suite d optimisations visant am liorer le temps Les PIC programm s en OCaml 193 d initialisation l occupation de la m moire programme l occupa tion de la m moire vive et la vitesse d ex cution Cette passe suppl mentaire sur le code octet a de plus lavan tage de nous permettre de v rifier partiellement la compatibi lit du programme avec la machine virtuelle En particulier des bornes des entiers utilis s doivent tre compris entre 16384 et 16383 avec notre machine virtuelle 16 bits 5 1 Compression simple du code octet Cette optimisation consiste en l limination instruction par ins truction
17. est expliqu e dans la section 4 4 Le champ tag est cod sur un octet comme dans la repr sentation standard pour des raisons de compatibilit Le champ size est donc lui aussi repr sent sur un octet ce qui implique que les blocs contiennent au maximum 255 l ments 4 2 3 Les fermetures Une fermeture est un bloc particulier servant repr senter une valeur fonctionnelle Il y a deux types de fermetures les fer metures simples et les fermetures r cursives Les fermetures r cursives sont cr es lorsqu on d clare des fonctions r cursives ou mutuellement r cursives Pour tout autre d claration ou lors d un appel partiel de fonction une fermeture simple est cr ee Une fermeture simple est un bloc ayant pour tag 247 pour premier l ment le pointeur de code et pour autres l ments l en vironnement L environnement correspond aux valeurs associ es aux variables libres dans le corps de la fonction et aux param tres d j pass s la fonction en cas d appel partiel La structure des fermetures r cursives est plus compliqu e que celle des fermetures simples Il s agit de blocs contenant d autres blocs Les blocs internes sont des blocs ayant le tag infixe 249 Le bloc externe a le m me tag qu une fermeture simple 247 L environnement est commun toutes les fermetures les internes l externe et est stock la fin du bloc externe Voici la structure d une fermeture r cursive DDRM
18. ff cin qui me partie Migration vers 18F mode d emploi 2010 http www abcelectronique com bigonoff 2 Emmanuel Chailloux Pascal Manoury and Bruno Pagano D veloppement d Applications avec Objective Caml O Reilly 2000 http www pps jussieu fr Livres ora DA OCAML 3 Xavier Clerc Cadmium February 2010 http cadmium x9c fr distrib cadmium pdf 4 Marc Feeley and Danny Dub Picbit a Scheme system for the PIC microcontroller In Scheme Workshop pages 7 15 November 2003 5 Richard E Jones Garbage Collection Algorithms for Auto matic Dynamic Memory Management John Wiley and Sons July 1996 6 Xavier Leroy The ZINC experiment an economical imple mentation of the ML language Technical Report RT 0117 INRIA February 1990 7 8 9 10 11 12 13 14 Les PIC programm s en OCaml 207 Xavier Leroy Damien Doligez Jacques Garrigue Didier R my and J r me Vouillon The Objective Caml system re lease 3 11 Documentation and user s manual INRIA No vember 2008 Microchip PIC18F2525 2620 4525 4620 Data Sheet 2008 http wwl microchip com downloads en devicedoc 39626b pdf Mikael Nordman Flashforth http flashforth sourceforge net Oracle Java Card 3 0 1 Platform Specification May 2009 http www oracle com technetwork java javacard specs jsp 136430 html Philippe Paternotte Pic Micro Pascal V1 4 User Manual July 2010 http
19. fixe d octets Une valeur peut tre soit une valeur imm diate entier bool en etc soit l adresse d un bloc allou dans le tas Objective Caml soit une adresse en dehors du tas Certaines primitives du langage e g Pervasives compare a gt a gt bool pour la comparaison en profondeur de valeurs et le ramasse miette garbage collector ou GC par la suite ont besoin de parcourir le graphe m moire Il est donc n cessaire de pouvoir distinguer pour chaque valeur s il s agit d une adresse ou d une valeur imm diate Pour ce faire nous utilisons le bit de poids faible des valeurs comme cela est fait dans ocamlrun Les adresses tant paires leurs bits de poids faible est 188 JFLA 2011 0 Il suffit donc de coder toutes les valeurs imm diates avec un bit de poids faible de 1 Par exemple le bool en false est cod Ob1 le bool en true 0b11 et les entiers sous la forme 2 x n 1 Le nombre d octets utilis pour coder une valeur correspond habituellement l architecture de la machine r elle sur laquelle la machine virtuelle s ex cute 4 octets sur une architecture 32 bits et 8 sur architecture 64 bits Cependant les PIC utilis s ici ont une architecture 8 bits et la taille de la m moire dynamique est de plusieurs ko Il est donc impossible de repr senter une adresse dans la m moire dynamique sur un seul registre De plus avec des valeurs cod es sur un nombre impair d octets les adresses n aur
20. jective Caml le moyen d acc der ces registres aussi facilement qu en assembleur La so lution qui a t adopt e est d utiliser les types sommes d Objec tive Caml dont on ma trise la repr sentation m moire Un type somme repr sente l ensemble des registres sp ciaux et un autre l ensemble des bits des registres sp ciaux La repr sentation m moire des valeurs de ces types correspond dans un cas l adresse des registres et dans l autre adresse des registres concat n e avec les masques d acc s aux bits La manipulation des registres sp ciaux et de leurs bits est alors possible depuis le monde Objec tive Caml en passant par des fonctions externes La programmation sur PIC n a pas les m mes domaines d appli cation que la programmation sur ordinateur Il est donc int res sant de fournir au programmeur Objective Caml un ensemble de biblioth ques pour lui permettre de se rapprocher des domaines d applications standards des PIC Par exemple il est habituel d uti liser un PIC pour contr ler un petit afficheur LCD Le PIC doit alors appliquer des protocoles assez bas niveau pour communi quer avec l afficheur Il est int ressant de fournir au programmeur Objective Caml une interface haut niveau lui permettant d utiliser facilement un afficheur LCD De plus on aimerait avoir une cer taine g n ricit vis vis de l afficheur ou plus simplement vis vis de la o est branch l afficheur Pour
21. les instruc tions dans les PIC permet de pr dire ais ment les temps d ex cutions 194 JFLA 2011 les adresses de sauts ne sont plus cod es par des adresses relatives offsets mais par des adresses absolues De m me les entiers ne sont pas cod s simplement en binaire mais plut t dans leur repr sentation m moire sous la forme 2 x n 1 Ceci permet d viter quelques calculs arithm tiques et par cons quent quelques cycles machines l ex cution 5 2 Optimisation du chargement des variables globales initialisation du programme le tableau des variables glo bales est habituellement d s rialis Deux solutions ont t envi sag es et cod es pour tenter d am liorer le temps d initialisation La deuxi me s est r v l e tre bien meilleure tant sur le temps d ex cution que sur la m moire programme utilis e La premi re solution est d ajouter au d but du programme du code octet optimis calculant le tableau des variables globales Cette solution s est r v l e avoir un gain faible sur le temps d ini tialisation par rapport a la solution naive De plus elle apportait un grave probl me augmentation consid rable de la taille du code octet La deuxi me solution est de pr calculer par ordinateur avant le chargement du programme sur le PIC l tat de la pile et du tas apr s la d s rialisation du tableau des variables globales Le contenu de la partie utilis e du tas et de la
22. lise un Stop amp Copy sur la g n ration jeune GC mineur et un Mark amp Sweep incr mentiel sur l ancienne GC majeur Enfin il peut tre compactant si besoin est Dans la r alisation pour PIC nous avons choisi de coder un simple Stop amp Copy qui ne cherche pas a optimiser la localit spa tiale En effet un PIC n ayant pas de cache il n y aucun int r t tenter d am liorer cette derni re Il faut n anmoins faire attention certains d tails Comme cela a t dit dans la section 4 2 3 les blocs infixes n cessitent un trai tement particulier D autre part le ramasse miette doit faire attention ne pas confondre un pointeur de code et un pointeur dans le tas Sur un ordinateur ce probl me ne se pose pas car la m moire est en un seul morceau et les adresses dans le code ne peuvent pas corres pondre des adresses dans le tas Sur un PIC c est diff rent car il y a plusieurs m moires Les pointeurs de codes sont des adresses dans la m moire programme et les pointeurs dans le tas sont des adresses dans la m moire vive Les collisions sont donc a priori possibles En fait sur ces PIC la m moire vive est beaucoup plus petite que la m moire programme Il suffit donc de ne pas mettre de code octet dans la m moire programme des adresses valides dans la m moire vive Cette m moire n est pas perdue car on peut mettre la place le code de l interpr te et de la biblioth que d ex cution D
23. mes Objective Caml sur les PIC Elle d taille les techniques que nous avons utilis es pour implan ter l interpr te de code octet et la biblioth que d ex cution ainsi qu un ensemble d algorithmes permettant de transformer le code octet pour am liorer les performances 4 1 La cha ne de production Le sch ma de la figure 1 d crit la cha ne de production du code source Objective Caml jusqu au fichier hexad cimal transf rer Les PIC programm s en OCaml 187 sur le PIC Le programme Objective Caml est d abord compil en code octet gr ce au compilateur standard ocamlc Le code g n r est ensuite nettoy par un algorithme d limination de code mort et compress Le binaire obtenu est alors li avec l inter pr te et la biblioth que d ex cution tous deux crits en assem bleur Le programme ainsi obtenu est assembl et transf r sur le PIC Compilation en bytecode Nettoyage du bytecode ocamlc ocamiclean Programme OCaml Bytecode OCaml ER Compression du bytecode bctrans Bytecode OCaml Assembleur Hexadecimal Interpr te Transfert sur le PIC Biblioth ques Assemblage gpasm Figure 1 Cha ne de production 4 2 Repr sentation des donn es 4 2 1 Les valeurs Objective Caml Objective Caml utilise une repr sentation uniforme des don n es o chaque valeur est cod e sur un nombre
24. moire de calcul volatile et une m moire de masse non volatile Toutes trois ont une ca pacit tr s limit e en comparaison avec ce qui se fait par ailleurs en mat riel informatique grand public En effet avec l unit de calcul cadenc e une fr quence de quelques MHz selon les s ries et mod les adopt s le nombre d instructions ex cut es par seconde varie entre 1 et 40 millions La m moire de calcul a une capacit incluse entre 160 et 128ko La m moire de masse a une capacit comprise entre moins d un ko et 512 ko La taille des mots machine d pend des s ries de PIC celles disponibles sont le plus souvent 8 bits s ries PIC10 PIC12 PIC16 et PIC18 16 bits s ries PIC24 PIC30 PIC33 ou 32 bits s rie PIC32 pour les plus r cents et puissants On peut remarquer que cette capacit de calcul est comparable celles de microprocesseurs des ann es 1980 e g Intel 8080 Zilog Z80 Ces puces sont habituellement programm es en assembleur di rectement ou bien l aide d un sous ensemble de Basic ou C Ce pendant le jeu d instructions assez particulier des PIC rend la g n ration de code PIC assez difficile Par exemple il n y a pas d ins l http www microchip com Les PIC programm s en OCaml 179 truction mat rielle pour la division de nombres entiers sur la s rie PIC18 et les instructions pour la multiplication sont absentes sur les s ries ant rieurs De nombreux compilateurs n app
25. n existaient pas dans le code original mais sont apparus lorsque l on a supprim des instructions de cr ation de fermetures l tape 2 Cet algorithme a t enti rement cod en 1800 lignes de code Objective Caml Il a t aussi test avec ocamlrun sur les compi lateurs ocamlc et ocamlopt et semble fonctionner correctement 6 Environnement de d veloppement L ensemble des algorithmes d crits dans les sections pr c dentes ont t implant s et forment une application compl te permettant de programmer les PIC de la s rie PIC18 en Ob Les PIC programm s en OCaml 197 jective Caml Pour utiliser cette application il faut prendre en compte certains points En particulier la biblioth que standard a t en partie modifi e certaines fonctionnalit s ont t retir es et d autres ajout es pour correspondre aux besoins sp cifiques de la programmation sur PIC De plus pour permettre le debogage des programmes Objective Caml sur PIC il a t cod une sorte de simulateur Enfin les ressources d un PIC tant particuli re ment restreintes il faut ma triser les performances de la machine virtuelle 6 1 Une nouvelle biblioth que standard Objective Caml pour PIC Une partie de la biblioth que standard n a pas t port e sur PIC Parmi les diff rents modules certains ont t copi s tels quels et d autres ont t restreints recod s ou supprim s En particu lier toutes les fonctions
26. ne abstraite pour cibler l architecture PIC En effet la conception d une machine virtuelle Scheme pour PIC a d j t entreprise au sein des projets PICBIT 4 et PICOBIT 12 pour un sous ensemble du R4RS PICBIT adapte aux contr leurs PIC un envi ronnement Scheme tr s compact La machine abstraite crite en C est traduite par un compilateur C pour PIC PICOBIT tend cette d marche en y adjoignant un compilateur C appel SIXPIC sp cifique aux PIC et permettant d obtenir un meilleur code en parti culier pour la machine abstraite Comme indiqu lors de analyse des performances l criture directe de l interpr te ZAM et de la biblioth que d ex cution en assembleur PIC combin e la com paction du code donne de tr s bonnes performances En cela les d marches PICOBIT et ocapic divergent la premi re privil giant la portabilit sur d autres architectures et la deuxi me l efficacit sur PIC On retrouve cette approche machine abstraite pour le langage Java avec la Plateforme Java Card 10 N anmoins m me en li mitant fortement le langage Java en particulier la gestion auto matique de la m moire l absence de certains types entiers 64 bits et de contr le comme les threads et en crivant dans un style imp ratif on obtient toujours un code important qui ne peut tenir sur des microcontr leurs actuels Les PIC programm s en OCaml 205 9 Conclusion Cette r alisation permet de programmer des mi
27. onc en un saut au code de la fonction externe puis en le d pilement des arguments apr s le retour de la fonction Avant d tre transf r sur le PIC le code octet du programme subit des transformations d crites dans la section 5 pour r duire sa taille En particulier celles ci convertissent la section PRIM en une table d indirections Ceci permet d avoir un appel aux fonc tions externes en temps constant 9 cycles machine 7 instruc tions Depuis une fonction externe il est possible de faire tout ce qui est possible depuis le monde Objective Caml savoir lancer une exception appeler une fonction Objective Caml en utilisant sa fer meture acc der aux variables globales etc Il est m me possible d acc der a la totalit de la m moire en lecture et en criture Il faut donc prendre soin de ne pas rendre incoh rent le graphe m moire Objective Caml sous peine de perturber le gestionnaire m moire par la suite Ceci est d autant plus vrai sur un PIC car il n y a pas de syst me d exploitation et donc pas de v rification des acc s m moire Dans ces conditions un programme peut conti Les PIC programm s en OCaml 191 nuer s ex cuter ind finiement avec un comportement difficile ment pr visible 4 4 Gestion automatique de la m moire Le ramasse miettes de la distribution standard d Objective Caml combine diff rentes techniques 5 C est un GC incr men tal a deux gen rations 2 Il uti
28. or fr oN Au NH HR 182 JFLA 2011 permettant par exemple d acc der la m moire contenant le pro gramme Voici un petit extrait de code assembleur PIC exemple_de_code label tblrd lecture dans la m moire flash movf TABLAT W transfert d un registre vers W addwf FSROL W addition du registre FSROL et W rcall SOUS_PRGM appel au sous programme SOUS_PRGM btfsc STATUS C saut de l instr suivante si CARRY 0 incf FSROH F incr mentation de FSROH return retour a 1 appelant Les PIC poss dent en g n ral quatre m moires distinctes Lune est une m moire non volatile utilisant la technologie flash ap pel e m moire programme Comme son nom l indique elle contient le programme x cuter La programmation d un PIC consiste donc en l criture du programme dans cette m moire Elle est en g n ral r inscriptible de 1 000 100 000 fois selon les PIC Pour stocker dynamiquement des informations les PIC utilisent une m moire constitu e uniquement de registres Le nombre de registres varie selon les PIC entre quelques dizaines jusqu plus d une centaine de milliers Ils sont accessibles directement par l unit de calcul en lecture et en criture Dans les anciennes s ries de PIC la m moire programme n est pas accessible en criture depuis le PIC mais uniquement la programmation Il est cependant parfois n cessaire de stocker des informations devant tre conserv e
29. ortent que des commodit s minimales tant au niveau des constructions de langage prises en charge qu au niveau de la biblioth que standard La faible quantit de ressources rend leur programmation assez d licate et parfois tr s ardue notamment lorsqu il s agit d utiliser des algorithmes complexes sur des structures de donn es dyna miques Nous proposons d utiliser un langage applicatif riche non seulement fonctionnel mais aussi modulaire imp ratif et ob jets statiquement typ gestion de m moire automatique afin de faciliter la programmation de telles puces et de rendre les logi ciels plus s rs Nous introduisons ainsi Objective Caml 7 dans le monde des outils d di s la programmation des microcontr leurs PIC Objective Caml est d velopp et distribu par l INRIA avec deux compilateurs Le premier met du code octet pour une machine virtuelle appel e ZAM 6 par la suite incluse dans la distri bution Le second met du code pour le processeur mat riel de la machine r elle qui h bergera les programmes ainsi compil s Les deux compilateurs partagent une biblioth que d ex cution im plant e en C En se basant sur l existant pour pouvoir ex cuter sur un PIC un programme crit en Objective Caml nous avons eu choisir entre compl ter le g n rateur de code du compilateur natif pour cibler les machines PIC ou bien fournir une machine virtuelle fonction nant sur PIC pour interpr ter les progr
30. pile est alors stock octet par octet dans la m moire programme l initialisation l in terpr te pr sent sur le PIC n a qu copier un segment de m moire programme dans la m moire vive et d marrer l ex cution Gr ce cette technique le temps d initialisation dans le pire cas c est dire si le tas et la pile sont remplies l initialisation sur un PIC ayant une horloge 10MHZz est au maximum de 2 5ms Ce temps tr s faible est d au fait que la m moire dynamique des PIC de la s rie PIC18 est particuli rement petite au maximum 4ko Les PIC programm s en OCaml 195 5 3 limination de code mort ocamlclean Les optimisations d crites pr c demment ne se sont pas r v l es suffisantes pour permettre l utilisation des objets Objective Caml sur PIC En effet la m moire dynamique du PIC n tait pas suffisante pour supporter l ensemble des fermetures cr es Pini tialisation du module Camlinternal00 et de ses d pendances La m moire tait alors remplie de fermetures dont la majorit tait inutilis e Le codage d un algorithme d limination de code mort a alors permis l utilisation de la couche objet d Objective Caml sur PIC Cette optimisation est bas e entre autres sur une analyse sta tique du flot de donn es et du flot de contr le Elle consiste en l limination du code octet de fonctions non utilis es ainsi que de la cr ation des fermetures associ es Il s en s
31. possible de programmer dans des langages de plus haut niveau On trouve principalement des sous ensembles de C et de Basic interfac s avec MPLAB ou autonomes Il y a trois d marches dans les autres langages propos s com pilateur natif comme pour C interpr te comme pour Basic compilation vers une machine abstraite puis interpr tation du code octet comme pr sent dans cet article Pour les compilateurs natifs on trouve des variations autour du langage Pascal comme Pic micro Pascal 11 qui s int gre aux outils de MPASM MPLINK de MPLAB tout en proposant un IDE propre Un autre langage plus loign de Pascal Jal 14 a pro 204 JFLA 2011 pos d s 2004 un compilateur libre Une nouvelle version Jal2 a t d velop e par une communaut toujours active Pour les interpr tes on rencontre principalement des implan tations du langage Forth qui ont l avantage d tre petites et donc de pouvoir tenir sur un microcontr leur FlashForth 9 est un syst me Forth autonome implant sur PIC18F qui apporte un in terpr te et un compilateur chargeur les deux embarqu s sur le microcontr leur Il existe par ailleurs des compilateurs Forth qui permettent de charger le code comme PicForth 13 La gestion des ports et des interruptions est en r gle g n rale assez facile manipuler en Forth comme le montre l exemple de compilation sur le site de PicForth Nous ne sommes pas les premiers utiliser l approche machi
32. s lorsque le PIC n est plus ali ment lectriquement Pour ce faire certains PIC poss dent une EEPROM de faible capacit accessible en lecture et en criture depuis le PIC Ces m moires sont en g n ral r inscriptibles entre 1 000 000 et 10 000 000 de fois Les PIC poss dent un m canisme d appel de proc dure Il est bas sur les instructions assembleur call et return permettant respectivement d appeler une proc dure et de retourner a lappe lant Cependant pour la plupart des s ries de PIC la taille des 4 Electrically Erasable Programmable Read Only Memory ou m moire morte program mable effa able lectriquement Les PIC programm s en OCaml 183 registres ne suffit pas pour y stocker des adresses de la m moire programme Les adresses de retour sont alors stock es dans une pile particuli re La m moire constituant cette pile est organis e en mots dont la taille ne d pend pas de l architecture de l unit de calcul mais de la taille de la m moire programme La taille de ces mots est par exemple de 14 bits pour les PIC de la s rie PIC16 Le tableau 1 donne pour chaque s rie de PIC les valeurs ex tr mes de leurs principales caract ristiques techniques Famille Archi bit Flash ko Registres o EEPROM o MIPS PIC10 8 375 gt 75 16 gt 24 0 1 2 PIC12 8 75 7 25 256 0 256 1 8 PIC16 8 75 28 25 1536 0 256 4 8 PIC18 8 4 128 256 4096 0
33. secondes sur le PIC18F4620 10MHz On ob serve un facteur 113 entre les deux temps d ex cution Les PIC programm s en OCaml 203 7 4 Implantation d un jeu de strat gie algorithme minimax Pour valider notre approche nous avons implant un jeu de plateau deux joueurs Le premier joueur est un humain utilisant une interface compos de boutons poussoir Le second joueur est artificiel incarn par un programme ex cut sur le PIC Le programme indique au joueur les actions et l avancement du jeu par l interm diaire d un afficheur LCD La r activit du PIC est satisfaisante malgr les multiples d clenchements du ramasse miette lors de l ex cution de l algo rithme de r flexion En effet le temps de calcul est en moyenne d une demie seconde et toujours inf rieur deux secondes Un hu main exp riment a une certaine difficult gagner ce qui laisse penser que les algorithmes implant s sont satisfaisants Le jeu a t implant en 667 lignes de code Objective Caml Une implantation de ce jeu en assembleur PIC ou dans un langage de bas niveau obligeant g rer manuellement le peu de m moire disponible sur un PIC aurait t tr s ardue voire quasi impossible 8 Travaux connexes L environnement de d veloppement MPLAB fourni avec les mi crocontr leurs PIC propose un assembleur MPASM un diteur de liens MPLINK et un simulateur pour tester et mettre au point un ex cutable Il est
34. ssible de tracer ex cution du code en ins rant des printf Il existe des mulateurs de PIC comme gpsim et la plupart des environnements de d veloppement int gr s comme MPASM ou PIC simulator IDE en contiennent Cependant il n est pas tr s pra tique d utiliser de tels simultateurs pour d boguer les programmes Objective Caml sur PIC En effet ces simulateurs parcourent le code de la machine virtuelle et il est difficile de faire le lien entre les instructions simul es par le d boguer et le code source Objec tive Caml Nous avons donc cod un outil premettant au programmeur Objective Caml de simuler l ex cution de ses programmes sur un PIC Comme on peut le voir sur la cha ne de production d crite dans la figure 1 le programme Objective Caml est d abord compil en un ex cutable standard pour ordinateur Cet ex cutable est en 8 Technique de mise au point pour des applications embarqu es sur microcontr leur consistant le connecter un ordinateur et ex cuter le code dans le microcontr leur L ordinateur peut alors contr ler partiellement le flux d ex cution du programme dans le microcontr leur et acc der sa m moire 200 JFLA 2011 fait li une biblioth que d ex cution particuli re qui intercepte les appels aux fonctions externes de lecture et d criture dans les registres sp ciaux du PIC Lors de l ex cution sur un ordinateur de cet ex cutable le processus lanc ouvre diff ren
35. ste 250 l ments tant donn que le tas du PIC18F4620 est limit 17920 n 250 est arbitrairement une bonne valeur let rec npremiers n if n 0 then else npremiers_aux n 1 2 and npremiers_aux n r if n 0 then r else npremiers_aux n 1 premier_suivant List hd r 1 r r and premier_suivant n 1 202 JFLA 2011 if est_premier n 1 then n else premier_suivant n 1 1 and est_premier n function a e true Peet lee if n mod e then false else est_premier n tl retro for i 1 to 80 do ignore npremiers 250 done Nous comparons titre indicatif les temps d ex cutions obte nus sur un ordinateur moderne Linux 2 6 32 32 bits processeur Intel Atom Z520 1 33GHz et m moire vive 1Go DDR2 667MHz et un PIC18F4620 cadenc 10MHz en moyenne sur 5 ex cu tions Dans les deux cas le m me compilateur ocamlc est utilis distribution Objective Caml 3 12 0 Nous obtenons alors 3 74 secondes pour l ordinateur a 1 33GHz et 472 secondes sur le PIC18F4620 10MHz On ob serve un facteur 126 entre les deux temps d ex cution 7 3 Jeu du solitaire Le test classique de performances du jeu du solitaire a t ef fectu dans les m mes conditions que celles pr sent es dans la section pr c dente Nous avons mesur les temps d ex cutions sur ordinateur moderne grand public et sur le PIC18F4620 Nous obtenons cette fois ci 7 2 secondes pour l ordinateur 1 33GHz et 812
36. t des valeurs pr calcul es par le compi lateur par exemple des flottants des cha nes de caract res des exceptions ainsi que des cases non initialis es qui seront affec t es l ex cution PRIM contient les noms de fonctions externes Il associe un num ro chaque fonction externe pour y acc der rapidement D autres sections sont parfois pr sentes Elles permettent de re p rer des biblioth ques dynamiques DLLS et DLPT ajouter des informations de d bogage DBUG ou autre Il est difficile de leur donner un sens sur PIC nous avons donc d cid de les ignorer lors du portage Vinitialisation la machine virtuelle d s rialise le tableau des variables globales associe chaque fonction externe avec son nu m ro et d marre l ex cution du code octet Lors de l ex cution elle g re diff rents l ments stack une pile d valuation accu un accumulateur pouvant tre vu comme le sommet de la pile heap un tas contenant les valeurs allou es code un segment contenant le code octet ex cuter pc un compteur ordinal pointant sur le segment contenant le code octet data un tableau contenant les valeurs des variables globales env une variable pointant lors de l valuation du corps d une fonction vers la fermeture associ e Celle ci contient entre autres les valeurs des variables libres du corps de la fonction ce qui per met d y acc der rapidement
37. t pour v rifier a base de tests d autres propri t s du programme comme l exp rience du projet Couverture la montr dans le cadre du d veloppement certifi La machine virtuelle Objective Caml qui a t cod e dans ce projet fonctionne pour les microcontr leurs de la s rie PIC18 Le portage de cette machine virtuelle sur les s ries ant rieurs des PIC PIC10 PIC16 semble difficile voire impossible En effet la quantit de registre et de m moire programme risquerait d tre insuffisante Sur les s ries de PIC plus avanc es PIC24 PIC32 9 http www algo prog info ocaml_for_pic 10 http www projet couverture com 206 JFLA 2011 le portage de cette machine virtuelle est tr s rapide car les as sembleurs des s ries r centes sont presque compatibles avec celui de la s rie PIC18 Il faut n anmoins remarquer que le code de la machine virtuelle pourrait alors tre optimis pour tirer parti des fonctionnalit s apport es par les nouvelles s ries de PIC Enfin le portage sur d autres types de microcontr leurs e g AVR Atmel Philips demanderait un travail cons quent car les architectures internes et les assembleurs sont diff rents Enfin cette exp rience de portage d Objective Caml sur PIC prouve qu il est possible d utiliser des langages de haut niveau pour programmer des architectures exotiques ayant de tr s faibles ressources R f rences 1 Bigonoff La programmation des PIC par Bigono
38. tes fen tres per mettant de visualiser les actions du PIC Il est alors possible de simuler les interactions du PIC avec diff rents composants lec troniques Par exemple lorsque l on ex cute le programme corres pondant au code Objective Caml de la section 6 1 gr ce la com mande suivante on peut visualiser une fen tre repr sentant la r action d un afficheur LCD aux actions du PIC comme sur la figure 2 Comme le programme s ex cute sur un ordinateur on peut uti liser les outils standard de d bogage par exemple ocamldebug pour tracer le code Objective Caml hw ocapic_lcd_ simulator 16x2 e RDQ rs RD2 rw RD1 bus PORTC Figure 2 Capture d cran de la simulation d un PIC connect un afficheur LCD 7 tude de performances 7 1 Performances g n rales du syst me OCAPIC sur le PIC18F4620 La vitesse d ex cution moyenne des programmes sur un PIC ex cutant 10 000 000 instructions machine par seconde est de 400 000 instructions de code octet par seconde Autrement dit il faut en moyenne 25 cycles machine pour ex cuter une instruction de code octet De plus le PIC perd en moyenne 7 5 cycles machine dans la gestion de chaque opcode Ceci implique que la proportion du temps d ex cution des instructions utiles par rapport au temps d ex cution de la gestion du code octet est de 70 1 2 3 4 5 6 7 8 9 Les PIC programm s en OCaml 201 La taille de la m moire programme du
39. uit un gain d une part sur la taille du code octet et d autre part sur l occupation de la m moire dynamique Gr ce cette optimisation il est possible de mettre sur un PIC des programmes plus gros et allouant plus De plus comme le gestionnaire m moire qui a t cod pour PIC n est qu un simple Stop amp Copy tous les blocs vivant sont copi s a chaque lancement du ramasse miettes Sa fr quence de lance ment ainsi que son temps d ex cution sont eux aussi am lior s par l limination des fermetures non utilis es Le principal inconv nient de cette optimisation est qu elle casse le chargement dynamique de modules Ceci n est pas une g ne pour le projet dans sa globalit car il est difficile de donner un sens du chargement dynamique de code sur un PIC Le programme ainsi cr prend en entr e un ex cutable stan dard pour la machine virtuelle Objective Caml et g n re en sortie un nouvel ex cutable standard nettoy Il peut se d composer en trois routines Elles sont ex cut es en boucle jusqu l obtention d un point fixe 7 Les utilisateurs qui ne visent pas 4 embarquer leur code Objective Caml sur PIC peuvent s en servir si le chargement dynamique ne leur est pas n cessaire Cet outil ocamlclean est distribu dans une archive ind pendante pour ne pas obliger a r cu p rer tout OCAPIC 196 JFLA 2011 1 On analyse les variables globales nettoyer pour chaque bloc point p
40. urs Les microcontr leurs sont des circuits int gr s programmables Ils regroupent au sein d une m me puce les diff rents l ments que l on trouve habituellement dans l unit centrale d un ordina teur personnel En particulier ils contiennent une unit de cal cul diff rentes m moires volatiles et non volatiles ainsi qu un en semble d interfaces internes facilitant la communication avec le monde ext rieur Ils sont con us pour tre programm s par un ordinateur puis plac s dans un circuit lectronique dans lequel ils effectuent un travail plus ou moins complexe Apr s programma tion ils peuvent fonctionner ind pendamment de tout ordinateur Leurs principaux domaines d application sont l industrie pour la fabrication de machines outils la domotique machines caf appareils lectrom nagers etc et l lectronique grand public 2 http www algo prog info ocaml_for_pic Les PIC programm s en OCaml 181 Diff rents exemples d applications sont d taill s dans des revues d lectronique comme par exemple la revue Elektor Leur pro duction en grande s rie fait baisser leur prix de revient en g n ral de l ordre de quelques dollars am ricains Ceci les rend int ressants pour les amateurs comme pour les industriels Ils peuvent dans beaucoup de cas remplacer les architectures d di es c est dire les circuits int gr s con us mat riellement pour une t che pr cis
41. virtuelle Objective Caml d velopp e en as sembleur PIC18 selon les sp cifications de la machine de r f rence distribu e par l INRIA Celle ci permet d utiliser la totalit du langage Objective Caml sans aucune restriction Les performances obtenues sont par ailleurs tr s satisfaisantes et soutiennent la pertinence de l approche adopt e Mots Cl s Microcontr leur PIC18 Objective Caml Machine Virtuelle 178 JFLA 2011 1 Introduction Lors de la conception d un circuit lectronique si celui ci n cessite une unit de calcul l implantation de celle ci est soit un assemblage de portes logiques programmation mat rielle soit un microcontr leur programmation logicielle Les premiers ont un tr s faible co t de fabrication s ils sont produits en tr s grande quantit L avantage des seconds est qu ils sont de toute mani re fabriqu s en masse afin de les rendre le plus accessible possible en r duisant au maximum leur prix et il suffit d y embarquer un logiciel pour qu ils puissent accomplir une t che sp cifique Les PIC 1 8 sont des microcontr leurs programmables dispo nibles bas prix commercialis s par la soci t Microchip Leur facilit d int gration dans un petit circuit lectronique fait qu ils sont notamment tr s utilis s par les bricoleurs en lectronique en plus des utilisateurs industriels e g robots lectrom nagers Ils int grent une unit de calcul une m
42. www pmpcomp fr Vincent St Amour and Marc Feeley Picobit A Compact Scheme System for Microcontrollers In International Sym posium on Implementation and Application of Functional Lan guages IFL 09 pages 1 11 September 2009 Samuel Tardieu Picforth programmer manual http www rfc1149 net devel picforth Wouter van Ooijen et al Jal not Just Another Language May 2004 http jal sourceforge net manual
Download Pdf Manuals
Related Search
Related Contents
Accutrend Plus - Skolebutik.dk Whistleインストレーションマニュアル(日本語) *参考用 DIAGNOSTICS - Prompt Trading Co. HTM 2009 Pneumatic air tube transport systems Atlus THE TESTAMENT OF SHERLOCK HOLMES GE WSSH300 User's Manual エクリプス アーマ2 バーナー Copyright © All rights reserved.
Failed to retrieve file