Voici un tutoriel qui est basé sur http://sourceforge.net/p/avr-ada/wiki/Build_From_Ubuntu_12.04_Precise_Pangolin_host/ et sur le site de Tero Koskinen : http://arduino.ada-language.com/building-avr-gnat-for-avr-ada.html . Il permet d'installer avr-ada sur un pc Ubuntu 12.04. Avr-ada permet de programmer des microcontroleur atmel, dont les cartes arduino, en Ada.
Dans un premier temps, allez dans la logithèque et installez « arduino IDE » et « Terminal sur port série ». Pourquoi Arduino IDE? Pour tester le nouveau matériel (et installer une partie de la toolsuite en même temps). Hé oui, il n'y a pas beaucoup de code en Ada donc, pour savoir si notre matériel fonctionne, c'est plus facile pour tester avec un programme en C déjà tout fait fournit sur le net. Et le terminal pour port série? Il est là pour nous permettre d'afficher et même de dialoguer avec l'arduino. Arduino IDE intègre un affichage du port série, mais il arrive qu'il ne fonctionne pas avec un programme ada...
Les lignes de code suivantes sont à copier coller dans un terminal (les fonctions CTRL+C, CTRL+V, etc ne fonctionnent pas dans le terminal mais le clique droit fonctionne). Le terminal est installé par défaut, il faut juste aller le chercher dans les programmes (accueil du tableau de bord, et tapez terminal).
Installons les bibliothèques utiles
$ sudo apt-get install build-essential libc6-dev gnat gnat-4.6 libgmp-dev bison flex libmpfr-dev libmpc-dev git texinfo zlib1g-dev
Installons le GCC
Créons et plaçons nous dans un dossier qui accueillera les fichiers d'installation et plein d'autres choses...
$ mkdir avrada-build
$ cd avrada-build
Créer un fichier « native_build_env.sh », pour cela tapez :
$ sudo gedit native_build_env.sh
Note : La commande « gedit » édite un fichier et le créé si il n'existe pas, vous l'utiliserez plus tard pour créer d'autres fichiers.
Et coller les lignes suivantes dedans, enregistrez et fermez.
#!/bin/sh
export HOST_SYSTEM_MULTIARCH_TYPE=$(dpkg-architecture -qDEB_HOST_MULTIARCH)
export C_INCLUDE_PATH=/usr/include/$HOST_SYSTEM_MULTIARCH_TYPE
export LIBRARY_PATH=/usr/lib/$HOST_SYSTEM_MULTIARCH_TYPE
export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATH && export OBJC_INCLUDE_PATH=$C_INCLUDE_PATH
export MULTIARCH_FLAGS="-B/usr/lib/${HOST_SYSTEM_MULTIARCH_TYPE} -I/usr/include/${HOST_SYSTEM_MULTIARCH_TYPE}"
export CFLAGS="-g -O2"
export CXXFLAGS="${CFLAGS}"
export CFLAGS_FOR_TARGET="${CFLAGS} ${MULTIARCH_FLAGS}"
export CXXFLAGS_FOR_TARGET="${CXXFLAGS} ${MULTIARCH_FLAGS}"
export FLAGS_FOR_TARGET="${FLAGS_FOR_TARGET} ${MULTIARCH_FLAGS}"
export DEST_GNAT_HOST=/opt/gnat-4.7
export DEST_GNAT_CROSS=/opt/avrada
Faisons la même chose avec le fichier « cross_build_env.sh » Et coller les lignes suivantes dedans, enregistrez et fermez.
#!/bin/sh
export DEST_GNAT_HOST=/opt/gnat-4.7
export DEST_GNAT_CROSS=/opt/avrada
export PATH=$DEST_GNAT_CROSS/bin:$DEST_GNAT_HOST/bin:$PATH
Il faut rendre ces deux fichiers éxecutables.
$ chmod +x native_build_env.sh cross_build_env.sh Installons le gnat-4.7
$ . ./native_build_env.sh
$ wget ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.7.0/gcc-4.7.0.tar.gz
$ tar zxf gcc-4.7.0.tar.gz
$ mkdir gcc-obj-470
$ cd gcc-obj-470
$ ../gcc-4.7.0/configure --enable-languages=c,ada --prefix=$DEST_GNAT_HOST --disable-multilib
$ make bootstrap
$ sudo su -c " . ../native_build_env.sh && make install"
$ cd ..
Nous allons ajouter des liens d'éxecutions pour ce gnat Tout d'abord, tapez la commande suivante dans le terminal :
$ dpkg-architecture -qDEB_HOST_MULTIARCH
Pour ma part, elle me répond : i386-linux-gnu Si ce n'est pas votre cas, ce n'est pas grave, vous devrez juste remplacer les « i386-linux-gnu » suivants part le résultat que vous avez obtenu. Maintenant vous allez aller dans le répertoire /opt/gnat-4.7/bin/. Tapez :
$ cd /opt/gnat-4.7/bin/
Créer un fichier gcc-4.7 qui contient les lignes suivantes (en remplaçant les « i386-linux-gnu » si besoin).
#!/bin/sh
exec /opt/gnat-4.7/bin/gcc -B/usr/lib/i386-linux-gnu -I/usr/include/i386-linux-gnu "$@"
Créer un fichier g++-4.7 qui contient les lignes suivantes (en remplaçant les « i386-linux-gnu » si besoin).
#!/bin/sh
exec /opt/gnat-4.7/bin/g++ -B/usr/lib/i386-linux-gnu -I/usr/include/i386-linux-gnu "$@"
Créer un fichier c++-4.7 qui contient les lignes suivantes (en remplaçant les « i386-linux-gnu » si besoin).
#!/bin/sh
exec /opt/gnat-4.7/bin/c++ -B/usr/lib/i386-linux-gnu -I/usr/include/i386-linux-gnu "$@"
Créer un fichier cpp-4.7 qui contient les lignes suivantes (en remplaçant les « i386-linux-gnu » si besoin).
#!/bin/sh
exec /opt/gnat-4.7/bin/cpp -B/usr/lib/i386-linux-gnu -I/usr/include/i386-linux-gnu "$@"
Rendre ces fichiers éxecutables:
$ sudo chmod +x /opt/gnat-4.7/bin/gcc-4.7 /opt/gnat-4.7/bin/g++-4.7 /opt/gnat-4.7/bin/c++-4.7 /opt/gnat-4.7/bin/cpp-4.7
Retournons dans le dossier avrada-build, mettez votre user à la place de user, si vous ne vous en rappelez pas, il est écrit au début de votre ligne dans le terminal : user@...
$ cd /home/user/avrada-build/
Installons avr-binutils
$ export CC="gcc-4.7" CXX="c++-4.7" CPP="cpp-4.7"
$ . ./cross_build_env.sh
$ wget http://ftp.uni-kl.de/pub/gnu/binutils/binutils-2.20.1a.tar.bz2
$ tar jxf binutils-2.20.1a.tar.bz2
$ git clone git://git.code.sf.net/p/avr-ada/code avr-ada-code
$ cd binutils-2.20.1 $ for a in ../avr-ada-code/patches/binutils/2.20.1/*.patch;do patch -p0 < $a || fail "avr-binutils: patch $a" ; done
$ cd ..
$ mkdir binutils-obj
$ cd binutils-obj
$ ../binutils-2.20.1/configure --target=avr --program-prefix=avr- --disable-shared --disable-nls --enable-commonbfdlib=no --disable-werror --prefix=$DEST_GNAT_CROSS $ make
$ sudo su -c ". ../cross_build_env.sh && make install"
$ cd ..
Installons cross gnat-4.7 pour avr
$ . ./native_build_env.sh
$ . ./cross_build_env.sh
$ mv gcc-4.7.0 gcc-4.7.0-native
$ tar zxf gcc-4.7.0.tar.gz
$ cd gcc-4.7.0
$ for a in ../avr-ada-code/patches/gcc/4.7.0/*.patch;do patch -p0 < $a;done
$ cd ..
$ mkdir avr-gcc-obj
$ cd avr-gcc-obj
$ ../gcc-4.7.0/configure --target=avr --program-prefix=avr- --disable-shared --disable-nls --disable-libssp --with-system-zlib --disable-libada --enable-languages=ada,c,c++ --enable-cpp --with-dwarf2 --enable-version-specific-runtime-libs --prefix=$DEST_GNAT_CROSS
$ sed -i -e 's/$(STAMP)/echo timestamp >/' ../gcc-4.7.0/gcc/config/avr/t-avr
$ make
$ sudo su -c ". ../native_build_env.sh && . ../cross_build_env.sh && make install"
$ cd ..
Installons cross avr-libc
$ . ./cross_build_env.sh
$ unset CC ; unset CXX ; unset CPP
$ wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.8.0.tar.bz2
$ tar jxf avr-libc-1.8.0.tar.bz2
$ cd avr-libc-1.8.0
$ ./configure --host=avr --prefix=$DEST_GNAT_CROSS
$ make
$ sudo su -c ". ../cross_build_env.sh && make install"
$ cd ..
Installons Gnat 2013
Aller sur le site de AdaCore dans la partie téléchargement : http://libre.adacore.com/download/configurations Aller en bas de la page, choisissez votre OS (pour moi x86 GNU LINUX (32 bits)) et prenez la version « GNAT GPL 3013 » et télécharger GNAT Ada GPL 2013. Le nom du fichier à télécharger est de la forme « gnat-gpl-2013-i686-pc-linux-gnu-bin.tar.gz ». Une fois téléchargé, il faut aller dans le répertoire Téléchargements, décompresser le fichier et installer le gnat. C'est à dire :
$ cd Téléchargements
$ tar xf gnat-gpl-2013-i686-pc-linux-gnu-bin.tar.gz
$ cd gnat-gpl-2013-i686-pc-linux-gnu-bin
$ sudo ./doinstall
Le programme va vous demander ou l'installer, moi j'ai choisi le répertoire « /usr/gnat2013 ». Garder en mémoire ce répertoire, vous aller en avoir besoin pour installer AVR-Ada.
Installons AVR-Ada
Nous allons mettre à jour les fichiers binaires gprconfig and gprbuild dans la commande make. Rendons nous dans le bon répertoire
$ cd avrada-build
$ cd avr-ada-code
$ ./configure
Dans les lignes suivantes, vous avez à mettre quatre fois à jour le répertoire d'installation si vous n'avez pas choisi « /usr/gnat2013 ».
$ make GPRCONFIG=/usr/gnat2013/bin/gprconfig GPRBUILD=/usr/gnat2013/bin/gprbuild
$ sudo su -c ". ../native_build_env.sh && . ../cross_build_env.sh && make install_rts GPRCONFIG=/usr/gnat2013/bin/gprconfig GPRBUILD=/usr/gnat2013/bin/gprbuild"
$ cd avr/avr_lib
$ sed -i -e 's/stamp-libs: $(thread_libs)/stamp-libs:/' Makefile
$ make
$ cd ../..
$ sudo su -c ". ../cross_build_env.sh && make install_libs"
Mises à jour des règles pour les puces AVR
Il faut créer un fichier 99-avrdude-usb.rules dans le répertoire /etc/udev/rules.d/ contenant les lignes suivantes :
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyACM0", GROUP="plugdev", MODE="0660"
Puis mettez à jour cela :
$ sudo service udev restart
Vérifier que votre « user » est dans le groupe plugdev
$ grep plugdev /etc/group
Ajouter votre user si besoin.
$ sudo addgroup user plugdev
Testons maintenant !
Nous allons tester avec un exemple de Tori, le hello "AVR-Ada". Placez vous dans le dossier que vous avez dédié à ces projets et téléchargez cet exemple grâce à la ligne suivante.
$ hg clone https://bitbucket.org/tkoskine/arduino-hello-uart
Nous allons mettre à jour certains chemins, c'est deux lignes vous seront nécessaires à chaque réouverture de terminal. Si vous faite un « make » sur un nouveau projet et que vous voyez un problème avec « avr-gnatmake commande introuvable » c'est que vous n'avez pas tapé ces deux lignes.
$ export PATH=/opt/avrada/bin:/opt/gnat-4.7/bin:$PATH
$ export ADA_PROJECT_PATH=/opt/avrada/avr/lib/gnat:$ADA_PROJECT_PATH
Entrons dans le fichier et construisons le :
$ cd arduino-hello-uart
$ make
Téléversons le programme dans l'arduino (ici c'est une puce atmega328p, c'est à dire un Uno ou un nano).
$ sudo avrdude -c arduino -p atmega328p -P /dev/ttyACM0 -b 115200 -U flash:w:hello.hex
Note : Si vous utiliser une autre puce, vous devez aussi modifier le fichier « Makefile ».
Pour voir le résultat, ouvrez le « terminal pour port série », aller dans l'onglet configuration--> port (ou CTRL+MAJ+S) et choisissez /dev/ttyACM0, 9600, none, 8, 1, none comme sur la figure suivante :
Et vous devriez obtenir le résultat suivant :
Voici le .odt de ce tutoriel:
Tutoriel installation avr ada (119.57 Ko)
Ajouter un commentaire