Créer un site internet

Installation Avr-Ada sur Ubuntu 12.04

 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 :

Config port serie

Et vous devriez obtenir le résultat suivant :

Avr ada

Voici le .odt de ce tutoriel:

Tutoriel installation avr adaTutoriel installation avr ada (119.57 Ko)

Ajouter un commentaire

Anti-spam