Générer un compilateur pour ARM

Pour développer des applications ou même pour générer un nouveau kernel pour ma carte CPU TS7200 ou TS7800, il me faut un compilateur. J’ai choisi pour le générer crosstool-ng.

crosstool-ng sert à construire des ToolChains. Les Toolchains (ou chaines de compilation) sont un élément essentiel dans un projet de développement logiciel. Elle servent à compiler, assembler et lier le code qui est en cours d’élaboration et qui sera exécuté par le processeur.

crosstool-ng

On télécharge crosstool-ng depuis : http://crosstool-ng.org/

J’ai choisi la dernière version lorsque au moment ou j’ai générer mon compilateur. C’était la version  http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.5.2.tar.bz2. La première chose à faire est d’extraire ce fichier dans un répertoire ou l’on veut générer l’outils.

$> cd ~/Projet
$> tar xjvz ~/Download/crosstool-ng-1.5.2.tar.bz2
$> cd crosstool-ng-1.5.2

Ensuite, on indique l’endroit ou l’on veut que crosstool-ng soit installé.

$> ./configure --prefix=/opt/crosstool-ng

Puis,

$> make
$> sudo make install

Enfin, on modifie le PATH pour avoir le répertoire « bin » dans la recherche des exécutables.
Le programme qui a été généré s’appelle {{ct-ng}}.

$> export PATH="${PATH}:/opt/crosstool-ng/bin"

Le compilateur arm-unknown-linux-gnueabi

J’utilise donc crosstool-ng pour générer un compilateur ARM pour ma cible TS7x00

Avec ct-ng, on a à disposition plusieurs exemples de configuration. On connait leur nom à l’aide de la commande

$> ct-ng help

On obtient une liste d’exemple:

  • alphaev56-unknown-linux-gnu
  • arm-cortex_a8-linux-gnueabi
  • arm-iphone-linux-gnueabi
  • arm-unknown-eabi
  • arm-unknown-elf
  • arm-unknown-linux-gnu
  • arm-unknown-linux-gnueabi
  • arm-unknown-linux-uclibc
  • arm-unknown-linux-uclibcgnueabi
  • armeb-unknown-eabi
  • armeb-unknown-linux-gnu
  • armeb-unknown-linux-gnueabi
  • armeb-unknown-linux-uclibc
  • armeb-unknown-linux-uclibcgnueabi
  • avr32-unknown-none
  • i586-geode-linux-uclibc
  • i686-nptl-linux-gnu
  • ia64-unknown-linux-gnu
  • mingw32,i686-none-linux-gnu
  • mips-ar2315-linux-gnu
  • mips-unknown-elf
  • mips-unknown-linux-uclibc
  • mipsel-unknown-linux-gnu
  • powerpc-405-linux-gnu
  • powerpc-860-linux-gnu
  • powerpc-e500v2-linux-gnuspe
  • powerpc-unknown-linux-gnu
  • powerpc-unknown-linux-uclibc
  • powerpc-unknown_nofpu-linux-gnu
  • powerpc64-unknown-linux-gnu
  • sh4-unknown-linux-gnu
  • x86_64-unknown-linux-gnu
  • x86_64-unknown-linux-uclibc

Je choisis arm-unknown-linux-gnueabi

$> ct-ng arm-unknown-linux-gnueabi

Puis je configure ct-ng

$> ct-ng menuconfig

Voici les modifications que j’ai fait dans la configuration standard.

  • Le répertoire ou je veux mettre le compilateur.
  • Le type d’architecture,
  • Le processeur
  • Non au debugger sur la cible
  • Pas de Fortran
  • Pas de Java
Paths and misc options  --->
 Prefix directory : {{/opt/x-toolx/${CT_TARGET} }}
 Target options  --->
 Architecture level : {{armv4t}}
 Emit assembly for CPU : {{arm920t}}
 Tune for CPU : {{arm920t}}
 C Compiler  --->
 [ ]  Fortran
 [ ] Java
 Debug facilities  --->
 [*] gdb  --->
 [ ]   Native gdb

Enfin, je lance la compilation du compilateur 😉

 $> ct-ng build

Et voila, on peut maintenant utiliser tous les outils se trouvant sous /opt/x-toolx/arm-unknown-linux-gnueabi/bin/ .On peut par exemple compiler le fichier lcdmesg.c comme ca :

/opt/x-toolx/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc lcdmesg.c -o lcdmesg

Cintré-Maxent-Cintré

  • Cintré
  • Mordelles
  • Bréal Sous Montfort
  • Govens
  • Baulon
  • Maxent
  • Saint Thurial
  • Bréal Sous Montfort
  • Mordelles
  • Cintré

Cintre-Maxens-Cintre

 

Détails du parcours

 

Nombre de track point583
Distance57.15 Kms
Altitude mini25 m
Altitude maximum125 m

Relevé de l’altitude

 

Cintre-Maxens-Cintre-Elevation

 

Temps de parcours

DateDuréeMoyenneMétéoNotes
17/01/20102h22mn24.05 Km/hEnsoleillé, 7°

Carte de détection ultrason – MSU04

Les modules ultrasons permettent une mesure de distance. Le principe est la transmission d’un «paquet» d’ondes ultrasoniques,  et la mesure du temps après lequel l’écho revient sur le récepteur. La distance de l’objet qui a produit l’écho peut alors être mesuré en connaissant la vitesse de propagation du son dans le milieu et la durée de vol

  • Distance = (Vitesse de propagation . durée de vol)/2

Dans l’air, à pression standard et à 20°C, la vitesse du son est d’environ c=343m/s. Les ondes ultrasoniques, qui ont des fréquences typiques entre 40 et 180 kHz sont en générale produites par un transducer de type piezo.

Ce module nécessite une demande de mesure (impulsion >= 10us) sur l’entrée « Trigger ». Il fournit en réponse un signal « Echo-Pulse » dont la durée (100us < E <18ms) est proportionnelle à la distance séparant le radar d’une cible (3cm < D < 3m).

MSU04_Chronogram

Caractéristiques du module:

  • Alimentation : + 5 Vcc.
  • Consommation : 30 à 50 mA environ.
  • Angle de détection : 55 ° env.
  • Distance de détection : 3cm à 3m.
  • Dimensions : 43 x 20 x 17 mm.

MSU04_Dessous

Cintré-Baulon-Cintré

  • Cintré
  • Mordelles
  • La Chapinais (Lieu-dit)
  • La Ragotière (Lieu-dit)
  • Le Pré Querat (Lieu-dit)
  • Baulon
  • Saint Thurial
  • Cossinade
  • Le Verger
  • Talensac
  • Cintré

Cintre-Baulon-Cintre

Détails du parcours

Nombre de track point663
Distance54 Kms
Altitude mini25 m
Altitude maximum115 m

Relevé de l’altitude

 

Cintre-Baulon-Cintre-Elevation

 

Temps de parcours

DateDuréeMoyenneMétéoNotes
27/12/20092h15mn23.6 Km/hEnsoleillé 5°