Accueil > Développement > µClinux-Premiers Pas Localisation: Ashburn



Mot de passe oublié ?
   

Mise en oeuvre de µClinux

Ce tutoriel est en cours d'édition.....

 

A) But du tutoriel :

Le but de ce tutoriel est de décrire les étapes nécessaires à la mise en oeuvre sur une cible matérielle du noyau µClinux. L'objectif est plus de présenter la démarche à suivre que de fournir une recette "clé en main". En effet, µClinux étant porté pour un grand nombre de cibles et l'éventail des plateformes de production et de mise en oeuvre étant très large, ce tutoriel ne saurait avoir la prétention de tout décrire. Néanmoins, je suis à votre disposition pour répondre à vos questions et vous aider à investiguer dans la mesure de mes moyens (le forum est à votre disposition).

Le tutoriel est scindé en trois parties : le téléchargement et l'installation des outils de production, la génération et programmation d'un boot (utilisation de u-boot) sur la cible, la production d'une image µClinux et sa mise en oeuvre. Les aspects configuration des outils nécessaires (serveurs tftp, nfs...) sont décrits à titre d'exemple pour chacune des étapes. Ils sont basés sur la configuration suivante :

- plateforme de type Linux (distribution Debian 4.0 Eth rc3),
- cible : carte Cobra (fabriquant Syntec) - processeur ColdFire 5272 (Freescale).

 

 

Il est également nécessaire de disposer d'un BDM pour programmer le boot sur la carte.

 

B) Glossaire :

Un compilateur croisé : il est nécessaire de disposer d'un compilateur croisé supportant le processeur utilisé. Dans le cas de ce tutoriel, le compilateur gcc pour la famille Motorola 68k est utilisé : m68k-elf-tools-20031003.sh. Ce fichier est en téléchargement à l'adresse : www.uclinux.org/pub/uClinux/m68k-elf-tools/.

Les sources de µClinux : les sources sont disponibles soit sous la forme d'un fichier compressé  (www.uclinux.org/pub/uClinux/dist/uClinux-dist-20070130.tar.gz), soit via le serveur cvs à l'adresse cvs.uclinux.org. L'archive compressée est utilisée dans ce tutoriel.

Matériel : il est également nécessaire de disposer de l'outil de programmation adapté au processeur de la cible (dans notre cas un BDM Coldfire avec le logiciel xxxxx pour Microsoft Windows) d'un port RS232 sur le PC (+ cable Null-Modem) et d'une connexion ethernet (+ cable croisé).

Remarques :

(1) La plateforme de production sous linux est également utilisée comme serveur (tftp, nfs) et comme terminal permettant d'accéder à la console (ligne série RS232) de la carte.

(2)  Pour plus de simplicité, je décris ici l'utilisation du programme BDMFLASHER fourni en téléchargement par Freescale. Celui fonctionne sous Microsoft Windows. Il en existe une version pour Linux nécessitant la compilation du driver BDM pour Linux. La mise en place d'un tel outil sort de la description de ce tutoriel.

 

C) Outils de production :

1) Installation de la chaîne de compilation croisée :

L'utilisation d'un processeur différent de celui de la plateforme de compilation nécessite d'installer un compilateur croisé. Dans le cas du Coldfire, comme pour la plupart des processeurs sur lesquels µClinux a été porté, les outils sont disponibles en téléchagrment sur le site de µClinux.

Voici les instructions pour télécharger puis installer le compilateur pour 68000 (supportant les ColdFire) :

>wget www.uclinux.org/pub/uClinux/m68k-elf-tools/tools-20061214/m68k-uclinux-tools-20061214.sh
>su
Mot de passe : *****
>bash ./m68k-uClinux-tools-20061214.sh
>exit

 

Remarques :

(1) Il est nécessaire de disposer des droits administrateur (root) pour installer les outils.

(2) Le compilateur GNU GCC doit être installé (par exemple package gcc-4.1.1-21 et ses dépendances dans le cas d'une distribution Debian 4.0 Etch rc3).

(3) Les fichiers d'entête (include standard) du noyau Linux sont nécessaires lors de la génération de certains outils nécessaires à la production du noyau. Ces includes se trouvent dans les packages du type libcX-dev. Dans le cas d'une distribution Debian 4.0 Etch rc3, le package est libc6-dev.

(4) La chaîne de compilation utilise les Makefile, il est donc également de disposer du package make (package make 3.81.2 dans le cas d'une distribution Debian 4.0 Etch rc3).

 

2) Installation de tcl/tk :

Lors de la configuration des options du noyau µClinux à produire, il est plus conviviale d'utiliser l'interface graphique plutot que de répondre aux questions une à une. L'interface graphique exploite les outils A FINIR

 

C) U-Boot :

Stocké en flash sur la cible, le boot est exécuté par le processeur dès la mise sous tension de la cible ; il configure les différentes ressources du processeur (fréquence de fonctionnement, signaux de contrôle d'accès aux bus...). Plusieurs boots sont disponibles pour Coldfire : colilo, u-boot... Mon choix s'est porté sur U-Boot (Universal-Boot), d'une part pour son "universalité" (il est porté sur un très grand nombre de cibles et est facilement adaptable), et d'autre part,  il intègre des fonctionnalités utiles à la mise en oeuvre des cibles. La version courante est la 1-1-6 disponible en téléchargement à l'adresse : sourceforge.net/projects/u-boot/.

 

1) Téléchargement et décompression de l'archive de u-boot :

>wget http://downloads.sourceforge.net/u-boot/u-boot-1.1.6.tar.bz2?modtime=1162461100&big_mirror=0 >bzip -d u-boot-1.1.6.tar.bz2
>tar xf u-boot-1.1.6.tar
>cd u-boot-1.1.6

 

2) Adaptation et production d'une image de u-boot :

U-Boot est architecturer pour supporter différentes cibles (répertoire board), et différents processeurs (répertoire cpu). Pour chacune des cibles, un fichier du type ./u-boot-1.1.6/include/configs/cible.h permet de décrire les paramètres de configuration. La sélection de la cible est faite au départ en exécutant la commande make CIBLE_config.

La carte COBRA5272 ayant une architecture matérielle très proche de celle de la carte d'évaluation M5272C3 de Freescale, nous allons utiliser la configuration de u-boot pour une cible M5272C3.

Tout d'abord, afin de désacviter le watchdog du processeur et l'exécution de u-boot en RAM et modifier l'accès à la SDRAM, il est nécessaire de mettre en commentaire ou modifier les lignes 44, 45, 47, 119 et 120 du fichier /u-boot-1.1.6/include/configs/M5272C3.h.

lignes 44-45 :
//#define CONFIG_WATCHDOG
//#define CONFIG_WATCHDOG_TIMEOUT 10000 /*timeout in milliseconds*/

ligne 47 :
/#define CONFIG_MONITOR_IS_IN_RAM  /* define if monitor is started from a pre-loader*/

lignes 119 et 120 :
#define CFG_SDRAM_SIZE 4
#define CFG_OR4_PRELIM 0xff00007C

 

Afin d'éviter un problème de compatibilité entre la version de la chaîne de compilation et u-boot, il est nécessaire de modifier le fichier u-boot-1.1.6/cpu/mcf52x2/config.mk en supprimant l'option "-msep-data" :

remplacer ligne 26 :
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data

en

PLATFORM_RELFLAGS += -ffixed-d7

 Configurer la chaine de compilation pour la cible de type M5272C3, puis générer l'image de u-boot :

>make M5272C_config
>make

 Les fichiers images u-boot.bin et u-boot.srec sont produits dans le répertoire courant.

 

3) Programmation de u-boot sur la cible :

Génération et installation du driver BDM

http://sourceforge.net/projects/bdm/

 

 création d'un lien de dans /usr/src/linux

 

 

Installation et configuration de minicom :

Configuration des paramètres du port série (première utilisation seulement) :

su
Mot de passe : *****
minicom -s /dev/ttyS0

 

Sélectionner l'option "Configuration du port série"

 

                +------------[configuration]------------+
      
         | Noms de fichers et chemins            |
     
          | Protocoles de transfert               |
     
       >>>| Configuration du port série           |<<<
     
          | Modem et appel                        |
     
          | Ecran et clavier                      |
      
         | Enregistrer config. sous _dev_t       |
      
         | Enregistrer la configuration sous...  |
     
          | Sortir                                |
     
          | Sortir de Minicom                     |
    
           +---------------------------------------+

 

    +----------------------------------------------------------------------+
    | A -                             Port série : /dev/ttyS0              |
    | B - Emplacement du fichier de verrouillage : /var/lock               |
    | C -            Programme d'appel intérieur :                         |
    | D -            Programme d'appel extérieur :                         |
    | E -                      Débit/Parité/Bits : 115200 8N1              |
    | F -              Contrôle de flux matériel : Oui                     |
    | G -              Contrôle de flux logiciel : Non                     |
    |                                                                      |
    |    Changer quel réglage ?                                            |
    +----------------------------------------------------------------------+

 

 

    +-----[Paramètres de communication]------+
    |                                        |
    | Actuellement : 115200 8N1              |
    |                                        |
    |   Vitesse        Parité       Données  |
    |                                        |
    | A: 300           L: Aucune       S: 5  |
    | B: 1200          M: Paire        T: 6  |
    | C: 2400          N: Impaire      U: 7  |
    | D: 4800          O: Marque       V: 8  |
    | E: 9600          P: Espace             |
    | F: 19200                  Bits d'arrêt |
    | G: 38400                         W: 1  |
    | H: 57600                         X: 2  |
    | I: 115200        Q: 8-A-1              |
    | J: 230400        R: 7-P-1              |
    |                                        |
    |                                        |
    | Choix, ou <Entrée> pour sortir ?       |
    +----------------------------------------+

 

                +------------[configuration]------------+
      
         | Noms de fichers et chemins            |
     
   nbsp;     | Protocoles de transfert               |
     
          | Configuration du port série           |
     
          | Modem et appel                        |
     
          | Ecran et clavier                      |
      
      >>>| Enregistrer config. sous _dev_t       |<<<
      
         | Enregistrer la configuration sous...  |
     
          | Sortir                                |
     
          | Sortir de Minicom                     |
    
           +---------------------------------------+

 Puis sortir de minicom et se déconnecter de l'utilisateur root. Une fois cette configuration effectuée, l'exécution de minicom peut alors se faire sous un utilisateur standard en exécutant simplement la commande minicom /dev/tty0 (<==== correspondance ttyS0 par le no de port)

 

chmod 666 /dev/ttyS0 <= autoriser les droits à tous les utilisateurs

 

 

 

 

 D) Programmation en flash de U-Boot :

 

 

 E) Configuration de U-Boot :

 

 

 

 D) Génération d'une image de µClinux :

 

Décompression de l'archive de µClinux :

bzip2 -d uClinux-dist-20070130.tar.bz2

tar -tf uClinux-dist-20070130.tar

 Puis exécuter le script de configuration du noyau :

 lib / noyau 4 => dans un premier temps configuration par défaut

 

Génération de l'image :

make dep

make

 Puis exécuter le script de configuration du noyau :

 

 

 

 

 

 

 

 

 

 

 
© CoolSteph Web-Design 2010 - Utilisant Joomla CMS et hébergé chez OVH