On parlera d'un système embarqué lorsqu'un ensemble de logiciels et de matériels est conçu pour une application spécifique contrairement à un système qui peut effectuer toute sortes de tâches tel qu'un ordinateur de bureau. On parle alors de codesign où tant le matériel que le logiciel sont parfaitement adaptés à la tâche pour lequel le système embarqué est dédié. Voici des exemples de systèmes embarqués:
Les systèmes embarqués utilisent généralement des microprocesseurs ou des micro contrôleurs pas nécessairement très puissants mais bien adaptés à la tâche. Souvent, le temps d'exécution de la tâche doit être connu et borné et le système doit être fiable et sécuritaire. Les systèmes embarqués sont donc très souvent des systèmes temps réel.
Les systèmes embarqués sont souvent vendus à grande échelle (beaucoup plus que les ordinateurs de bureau! Par exemple en 1999, il s'est vendu 1.4 milliard de processeurs 8 bits pour systèmes embarqués contre 104 millions de processeurs x86 pour PC). Pour limiter les coûts on contraint donc la quantité de mémoire disponible, les fonctionnalités matérielles et la consommation d'énergie.
Finalement, les systèmes embarqués sont souvent soumis à des contraintes d'espace et de conditions climatiques. On doit faire tenir tout le matériel dans un espace restreint, soumis à des vibrations, de la chaleur, de la poussière, etc.
Pour plus d'informations, voir:
Le système embarqué TS-7200 est fabriqué par la compagnie Technologic Systems. Il utilise un processeur ARM9 construit par Cirrus Logic cadencé à 200Mhz. Il consomme peu d'énergie (de ½ à 2 Watts) et fonctionne sans ventilateur pour des températures allant jusqu'à 70°C. Il a 32 MB de mémoire vive SDRAM et 64 MB de mémoire CompactFlash. Il se connecte au monde extérieur grâce à sa carte réseau Ethernet 10/100 Mbits, ses deux ports USB et ses deux ports COM. Il peut contrôler des périphériques industriels avec ses 20 entrées/sorties digitales (DIO) et son convertisseur analogique-numérique de 12 bits. Une distribution de Linux est conçue et pré installée par Technologic Systems sur ses cartes TS-7200. Pour plus d'informations voir TS-Linux.
Nous allons programmer le système embarqué TS-7200 un peu de la même façon que nous avons programmé les applications pour QNX. Le développement se fera sous Windows XP à l'aide de l'émulateur de console Linux Cygwin tandis que l'exécution se fera à distance sur le TS-7200. Donc, dans un premier temps, il faut télécharger Cygwin à partir de www.cygwin.com et l'installer. N'oubliez pas d'installer les suppléments tcp_wrappers et rsync, ils pourront être utile dans le futur.
Deuxièmement, il vous faudra installer le compilateur pour ARM et les librairies standards telles que stdc++ et pthread compilées pour ARM. Vous trouverez l'archive Cygwin Crosstool gcc-3.3.4-glibc-2.3.2 dans le répertoire G:\Info\Moralejs si vous êtes connecté au réseau du cégep ou sur le site de Technologic Systems si vous êtes à l'extérieur . Une fois téléchargée, il vous faut décompresser les fichiers dans le répertoire d'installation de Cygwin.
Ensuite, programmez le fichier allo.cpp avec un simple éditeur de fichier texte tel que le bloc-notes ou notepad++:
#include <iostream> int main(void) { std::cout << "Allo!" << std::endl; return 0; }
Pour générer l'exécutable, il faut tout d'abord s'assurer que le chemin d'accès vers le compilateur est connu. Ouvrez une console Cygwin et tapez:
export PATH=$PATH:/opt/crosstool/gcc-3.3.4-glibc-2.3.2 /arm-unknown-linux-gnu/bin
Cette commande aurait avantage à être ajouté au fichier .bash_rc pour les compilations futures. Ensuite, il vous faudra créer un fichier nommé makefile. Un fichier makefile est un fichier texte qui donne la recette pour créer l'exécutable. À l'aide d'un éditeur de texte tapez:
# variables compiler = arm-unknown-linux-gnu-g++ libpath = /opt/crosstool/gcc-3.3.4-glibc-2.3.2 /arm-unknown-linux-gnu/arm-unknown-linux-gnu/lib # règles allo : allo.o $(compiler) -L$(libpath) -lpthread -Wall -o $@ $^ # règles génériques %.o : %.cpp $(compiler) -Wall -c $< # nettoyage clean : rm -f allo rm -f *.o
Voici quelques explications sur le fichier makefile:
cible : dépendant1 dépendant2 ... [TAB]commande1 [TAB]commande2 ...
Pour plus d'informations sur les makefile voir Howto GNU Make & makefile.
Pour générer l'exécutable il suffit de taper make allo. L'outil make recherche alors dans le répertoire courant un fichier nommé makefile contenant les commandes à exécuter pour générer la cible allo. Pour effacer les fichiers temporaires il faut taper make clean.
Tout d'abord, pour transférer votre exécutable sur le système embarqué, utilisez le protocole FTP avec un logiciel tel que LeechFTP. Finalement, pour démarrer votre exécutable, utiliser le protocole TELNET avec un logiciel tel que putty. Vous pourrez alors vous connecter sur le TS-7200 et lancer votre application.