FriendlyARM Mini6410


1. Overview

La FriendlyARM Mini6410, communément appelé la « carte ARM », est en réalité un véritable ordinateur miniaturisé. Fabriqué par FriendlyARM, elle possède des dimensions réduites (11cm × 11cm) idéales pour la placer dans notre robot. De plus, en tant qu'ordinateur, il est possible d'installer un système d'exploitation tel que linux et ainsi bénificier des outils bien commodes qu'il embarque. Par exemple, il est alors possible de s'y connecter à distance en ssh par un câble ethernet ou un dongle wifi, et ainsi surveiller nos programme, générer des logs, commander manuellement le robot, … Cela ouvre également la possibilité d'utilisé des bibliothèques pré-existante, et ainsi bénificier de fonctions avancées telles que la reconnaissance d'image à partir d'une webcam. Un autre avantage est bien évidement une puissance de calcul bien supérieur à celle d'un PIC.

Bien que similaire en de nombreux points à un ordinateur, la « carte ARM » possède une différence notable : il s'agit de son processeur. Comme vous le savez sans doute déjà, il s'agit du cœur de l'ordinateur, en charge d'effectuer les calculs que le système d'exploitation lui demande d'effectuer. Pour cela, chaque type de processeur possède un « jeu d'instructions », c'est-à-dire une liste de fonctions, tel que l'adition ou la multiplication, dont le système d'exploitation peut faire usage. Usuellement, les processeurs de nos ordinateur supporte le jeu d'instructions « i386 », voir « x86_64 » pour ceux qui sont en « 64 bits ». Or la « carte ARM » n'est pas munit d'un processeur habituel, mais d'un processeur « ARM », qui possède un jeu d'instructions différent propre à lui même.

Les processeurs ARM ont un jeu d'instructions simplifié et ont une faible consommation, ce qui est un gros avantage pour les systèmes enbarqués tel que notre robot. Cela explique leur prépondérance dans ce domaine. Dans la pratique, cela demande l'utilisation d'un système d'exploitation et de programmes qui ont été compilés pour utiliser les instructions du processeurs en question, ce qui complique un peu la tâche.

La FriendlyARM Mini6410 est équipé d'un processeur arm1176jzf-s, cadencé à 533MHz, qui possède sont propre jeu d'instructions (et oui, il existe différente variante de l'architecture arm, non comptatible entre elle). Elle possède également 256Mio de RAM et une mémoire NAND de 1Gio (qui fait office de disque dure). Du coté des entrées/sorties, elle possède un port USB, un slot pour carte SD, une sortie RS232 et trois sorties UART (liaison série), un port GPIO (liaison parallèle), une sortie ethernet RJ45, une sortie son jack 3.5mm (stéréo !) et une sortie TV. Il y a également moyen de s'amuser au moyen de 8 boutons et 4 leds. Voilà pour l'essentiel, pour les détails, vous pouvez télécharger la documentation de FriendlyARM sur son site (nottament « Mini6410 Manual » et « Mini6410 Hardware Overview », ce dernier contenant la documentation technique de la carte mère et son matériel).

2. Getting started

2.1. Alimentation

La carte ARM nécessite une alimentation 5V. Le transformateur qui lui est dédié possède une prise étrangère. Il est dont également nécessaire de se procurrer l'adaptateur. Merci de garder ces différents éléments réunis.

2.2. Démarrage

La mini6410 a deux possibilité pour démarrer : soit sur la mémoire NAND de 1Gio intégré à la carte, soit sur une carte SD (haute-capacité supporté). Le switch situé sur la gauche de la carte sert à selectionné le support sur lequel la carte démarrera.

2.2.1. Boot NAND

En sortie d'usine, la NAND contient un système linux près à l'emploit, nomé « Qtopia ». Il a été modifié par FriendlyARM pour, premièrement, supporté le matériels de la carte bien évidement, et secondement, ajouter des utilitaire de teste bien pratique que vous trouverez dans l'onglet « FriendlyARM ». Pour plus d'information sur ce système, se repporter au fichier « Mini6410 Linux.pdf ». Bien qu'il soit possible de remplacer le système présent dans la NAND, il est actuellement recommandé de ne pas y toucher afin d'avoir en cas de soucis un système d'exploitation utilisable de secours. De plus, cette mémoire possède un nombre de cycle d'écriture limité. Il pourra éventuellement être envisagé de flasher la NAND lorsqu'un système stable aura été obtenue. Dans ce cas, le système de fichier devrait tous de même rester préférentiellement sur la carte SD pour économiser les cycles d'écriture.

2.2.2. Boot SD

Ce boot est à privilégier afin de ne pas flasher la NAND, et ainsi économiser les cycles d'écriture de celle-ci. Voici dont les étapes à suivre pour démarrer la mini6410 sur une carte SD.

Tous d'abord, il vous faut procéder à une préparation spéciale de la carte SD pour que l'arm puisse  booter dessus. Pour cela, il faut utiliser l'outil SD-Flasher proposé par FriendlyARM. Celui-ci ne fonctionne que sur windows, qu'avec des lecteurs de carte SD externe que l'on branche par USB, et encore c'est pas sûr. Personnellement, j'ai réussit à l'utiliser sous windows XP SP3, mais sans succès avec le windows 7 installé sur Marvin, le pc du club. Il vous faudra également un bootloader tel que u-boot que vous pouvez compiler vous même, ou téléchargr déjà compiler sur le site de FriendlyARM. Pour réduire les risques de problème, il est préférable d'utiliser supervivi qui a été codé par FriendlyARM spécifiquement pour leurs cartes. L'utilisation du logiciel SD-Flasher est simple, mais vous pouvez tous de même en cas de besoin vous repporter au fichier « Mini6410 For Dummies.pdf » qui détail la procédure.

Vous pouvez d'ors et déjà tester le fruit de votre travail. Introduisez la carte SD dans le lecteur de l'ARM, et mettez le en marche. L'affichage affiche alors des couleurs étranges cramoisies. Si cet affichage persiste, votre carte SD n'a pas correctement été flashé. En revanche, si celui devient noir (dans un délair d'environ une seconde après l'allumage habituellement), c'est que l'ARM a bien booter sur la carte SD mais qu'aucun système n'a pu être lancé (normal, nous n'en avons pas encore installé !).

Ensuite, il vous faut un noyau linux, ainsi qu'un système de fichier. Avant d'apprendre à réaliser votre propre système, ce qui constitue la suite de se tutoriel, il est raisonnable de commencer par utilisé un système déjà compilé et configuré pour la mini6410. Nous prendrons en exemple une version de Qt Embedded proposé par FriendlyARM. L'archive que vous avez téléchargé contient …

 

 

Avant d'apprendre à réaliser votre propre système, ce qui constitue la suite de se tutoriel, vous pouvez essayer d'utiliser un système pré-configurer proposé par FriendlyARM sur sa page de téléchargements. Nottament Qt Embedded, nouveau nom de Qtopia, qui n'est qu'une nouvelle version du système présent sur la NAND. Vous pourrez également essayer le très célèbre Android, avant de vite constater qu'il n'est vraiment pas adapté pour notre robot.

[Il faudrait (lorsque j'aurai du débit, là la flemme) télécharger ce que propose FriendlyARM pour détailler les systèmes proposés]

[c'est peut-être pas le moment de parler des différents système proposé, il faudrait plutôt en parlé après en avoir fait booter au moins un !]

Maintenant que vous avez récupérer

Détail FriendlyARM.ini et tous le tsoin tsoin …

Noyau fournit par FriendlyARM ARM-Qt Embedded 4.6.3 2010-08-02

Chaîne de compilation croisé fournit par ARM ARM-Linux GCC 4.4.3 (only host i386)

Chaînes fournit par mini2440.netyxia.net, mini2440/mini6410, i386/x886_64

Mon exemple en C (git)

Utilisation framebuffer : linux/fb.h, mmap

Écriture de caractère : utilisation freetype (bonne doc, ne pas hésiter à la consulter : Documentation)

Utilisation du touchscreen : tslib (pas de doc, mais des programmes qui peuvent servir d'exemples)

Mon exemple en C++

Compiler le noyau : avec la chaîne de FriendlyARM, avec leur sources

Compiler le noyau : buildroot et ma config qui marche (a bon ?) (defconfig mini2440 modifié)

 

Venez nous découvrir !

Vous pouvez en apprendre un peu plus sur nous grâce à ce site, contactez-nous avec la page dédiée
ou venez nous voir à l'ENSEEIHT dans la fameuse Tour Radio (3ème étage)