Adaptation française : François SERMAN
Relecture de la version française : Deny
Copyright © 2007 Maxin B. John
Copyright © 2008 François SERMAN
Copyright © 2008e Deny
Article paru dans le n°145 de la Gazette Linux de décembre 2007.
Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
Résumé
GNU/Linux est rapidement devenu le système d'exploitation de référence pour les applications embarquées.principalement grâce à l'efficacité et à la portabilité du schéma du noyau Linux. Le portage pour Linux de l'ARM, dirigé par Russell M King, rend la vie plus facile aux gens qui utilisent (ou qui veulent l'utiliser) Linux dans leurs dipositifs embarqués,
La carte Amadillo 9 est une petite carte tout-en-un de la taille d'une disquette, commercialisée par tmark Techno, Inc. Bien que petite, elle fournit un support pour les cartes mémoires (Comptact Flash), l'usb2, un port réseau ethernet, et une sortie vidéo. En plus, l'outil de chaîne de développement croisé GNU, le noyau (version 2.4 et 2.6) et le système de fichier sont déjà intégrés par les vendeurs de la carte pour « réduire le temps de développement »;. Sa faible consommation et sa petite taille de fabrication (90.2 x 95.9 mm) font d'elle la carte idéale pour l'observation et la surveillance de périphériques, de bornes-internet, ou, avec un module GPS et un logiciel adéquat comme gpsdrive, un système de navication basé sur Linux.
La carte Armadillo 9 SBC contient :
Un Processeur Cirrus Logic EP9315 cadencé à 200mhz |
64Mo de mémoire SDRAM |
8Mo de mémoire FLASH |
Un controlleur ethernet 10/100Mb |
Une interface RS232 |
Une interface JTAG pour débugger ou « programmer » |
Un connecteur USB 2.0 type A |
Une interface Compact Flash |
Une interface d'entrée/sortie pour un usage général de 12bits (General Purpose Input/Output) |
Une sortie vidéo (connecteur D-Sub 15 broches (mini)) |
Une interface IDE |
La carte Armadillo 9 utilise le chargeur de démarrage 'Hermit' .
L'installation standard pour développer devrait être similaire à celle-ci. La machine linux que j'utilise tourne sous Fedora Core 6 avec tout le matériel standard (bells and whistles), avec un processeur cadencé à 1.6Hgz, 256Mo de RAM, et 80Go de Disque Dur. Le connecteur série peut-être fabriqué en soudant deux fiches DB9 males et quelques câbles de récupération.
(pin to pin connection) DB9 -1 DB9 - 2 2 <-> 3 3 <-> 2 5 <-> 5
Pour nous connecter à la carte, nous allons utiliser un programme de communication par port série : minicom. Connectons le port série de la carte à notre machine de developpement, via notre câble série. À l'invite bash, saisissez :
minicom -m -s /dev/ttyS0
Si vous utilisez le premier port série de votre machine (c'est-à-dire, COM1: sous windows), configurez le port utilisé par minicom comme suit :
A - Serial Device : /dev/ttyS0 B - Lockfile Location : /var/lock C - Callin Program : D - Callout Program : E - Bps/Par/Bits : 115200 8N1 F - Hardware Flow Control : No G - Software Flow Control : No
Maintenant, identifions-nous sur la carte avec les identifiants de connexion par défaut :
nom d'utilisateur : root mot de passe : root
Une des fonctionnalités attractives de la carte Armadillo 9, c'est son support du système GNU/Linux : l'environnement de compilation croisée GNU pour Armadillo est disponible sur le cédérom livré avec la carte. La dernière version est disponible sur le site atmark-techno
La carte Armadillo 9 nous laisse le choix d'utiliser les paquets au format RPM, DEB ou les fichiers tar.gz comme source de la chaîne. Les logiciels suivant sont cependant requis pour un développement minimal d'un système pour Armadillo 9 :
binutils-arm-linux gcc-arm-linux libc6-arm-cros
On peut les trouver sur tout ordinateur sous linux en exécutant les commandes suivantes :
# Pour les systèmes basés sur le format de paquets RPM "rpm -ivh nom_logiciel". Par exemple: rpm -ivh binutils-arm-linux.rpm # Pour les systèmes Debian/Ubuntu : "dpkg -i nom_logiciel". E.g.: dpkg -i binutils-arm-linux.deb # Pour une installation indépendante de la distribution linux, depuis le source: tar zxvf binutils-arm-linux.tar.gz cd binutils-arm-linux ./configure make make install
D'autres logiciels sont nécéssaires pour développer sur l'Armadillo 9 - Par exemple shoehorn, hermit, etc .. - et devront être installés dans le système de développement en utilisant la même méthode.
Une fois que nous avons installé notre plateforme Armadillo 9 avec Linux à l'intérieur, faisons-lui dire "bonjour" en lançant le fameux "Hello, world!" (que nous appelerons "hello.c")
#include <stdio.h> int main(){ printf("hello, world\n"); return 0; }
Nous allons le compiler en utilisant le compilateur croisé pour carte Armadillo :
arm-linux-gcc hello.c -o hello
Maintenant, lançons la commande "file" pour voir ce qu'elle a à nous dire à propos de "hello":
file hello hello: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), for GNU/Linux 2.2.0, not stripped
L'exécutable 'hello' est exécutable sur une carte Armadillo, puisque nous l'avons compilé pour l'architecture ARM - donc nous devons envoyer le binaire à la carte pour le lancer. De nombreuses méthodes (FTP? NFS, etc ...) sont disponibles pour celle-ci, mais je vais utiliser HTTP (via la commande 'wget'). D'abord, lançons le serveur Apache sur la machine hôte.
/etc/init.d/httpd start
Maintenant, copions le fichier 'hello' à la racine du serveur Apache.
cp hello /var/www/html
Ensuite, invoquez minicom et identifiez-vous sur l'Armadillo. Depuis la carte, invoquez les commandes suivantes (192.168.0.1 est l'ip de mon serveur web)
wget http://192.168.0.1/hello Connecting to 192.168.0.1[192.168.0.1]:80 hello 100% |*****************************| 9475 00:00 ETA # Donner la permission d'exécution à 'hello' chmod +x hello # Et le lancer ./hello hello, world
Ça marche !
Les dernières sources du noyau peuvent-être obtenue depuis le site d'Armadillo.
wget http://download.atmark-techno.com/armadillo-9/source/linux-2.6.12.3-a9-10.tar.gz #décompresser la source pour compiler le module pour le noyau tar zxvf linux-2.6.12.3-a9-10.tar.gz cd linux-2.6.12.3-a9-10 #puis créer un .config préconfiguré pour l'armadillo 9 make armadillo9_defconfig
Ensuite, explorons l'espace noyau à l'aide du module simpliste 'simple.c'
#include <linux/kernel.h> #include <linux/module.h> int init_module(void){ printk("hello, armadillo!\n"); return 0; } void cleanup_module(void){ printk("bye, armadillo\n"); }
et compilons le module en utilisant ce Makefile.
# Sur ma machine, je garde les sources du noyau décompressés ici : # /root/arm/linux-2.6.12.3-a9-10. Modifier ceci pour votre installation. obj-m:=test.o all: make -C /root/arm/linux-2.6.12.3-a9-10 M=`pwd` modules clean: make -C /root/arm/linux-2.6.12.3-a9-10 M=`pwd` clean
Après avoir lancé 'make', nous obtenons un module 'simple.ko' dans le dossier courant. Maintenant, suivons la méthode précédement utilisée pour copier le module sur la carte.
cp simple.ko /var/www/html
Utiliser 'minicom' pour se connecter à la carte de développement, et envoyer le module.
wget http://192.168.0.1/simple.ko # Inserer le module via insmod insmod simple.ko # Affiche 'simple' dans la liste des modules chargés lsmod # Décharger le module rmmod simple
Nous allons voir le message "armadillo" à la fin si nous lançons la commande 'dmesg'.
Les possibilitées sont infinies dans le monde de Linux et ARM. L'une des nouvelles tendances dans le monde de l'embarqué s'appelle debootstrap. Cela permet au développeur d'installer une distribution basée sur debian sur la plateforme ARM. Pourvu que nous disposions d'une carte Compact Flash suffisament grande pour contenir une installation minimale de debian (256 ou 512Mo est plus que suffisant), alors le developpement de l'application pour Armadillo 9 devient aussi facile que de saisir :
apt-get install application
Nous explorerons plus en détail "Debootstrapping" dans la partie suivante de cet article.
Le chargeur d'amorçage, le noyau et l'installation du système de fichiers sous une carte Armadillo 9 sont abordés dans le manuel du logiciel Armadillo9. Les informations spécifiques à armadillo sont disponibles sur le site webtmark-techno. La principale source d'information à propos d'ARM Linux est le site web ARM linux .
Maxin B. John travaille pour HCL Infosystems Ltd®, à Pondicherry (Inde) et il est MCA Graduate du Collège gouvernemental de Thrissur. Il aime pratiquer Python et Bash. Il remercie son gourou, Mr. Pramode C.E de l'avoir initié au monde merveilleux de
Linux
.