Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !


Installation d'uClinux via LTIB sur le module Freescale MCF5329 Fire Engine

Document en cours d'écriture (31 mai 2009)

Ce document s'adresse aux personnes intéressées par la mise en œuvre, sous Ubuntu, du System-On-Module MCF5329 Fire Engine de chez Freescale/Logicpd. Sur cette carte (disponible chez Farnell), nous installerons uClinux via le générateur d'image fourni par Freescale : LTIB.

Les commandes et notions présentes dans ce tutoriel sont souvent "simples", mais on peux perdre énormément de temps à les retrouver et à les utiliser correctement (surtout avec de petits Linux embarqués). La philosophie retenue, est donc ici, de les toutes les retranscrire (y compris celles pour le TFTP, NFS, … qui disposent déjà de tutoriel respectifs).

Beaucoup des commandes présentes dans ce tutoriel sont, vraisemblablement, exportables pour d'autres cartes de développement.
Note de l'auteur (_Val_) :

Ce document est une synthèse d'une nombre important d'informations, trucs et astuces, tutoriel, etc. trouvés sur le web. N'étant pas un expert Linux/Ubuntu, mais plutôt un "google boy", certaines de ces commandes ne seront sans doutes pas optimales et/ou "propres"

Pour mener à bien ce tutoriel, nous avons besoin de :

  1. Une machine de développement fonctionnant sous Ubuntu 9.04 "Jaunty Jackalope" 32 bits (100% à jour – 22 mai 2009).
  2. Le bundle de développement pour le System-On-Module Freescale MCF5329 Fire Engine.
  3. Le bootloader présent sur la carte est U-Boot 2008.10 (Dec 15 2008 – 11:03:39). Son installation est décrites dans la suite du document (Il n'est pas toujours présent d'origine sur la carte).
  4. Une connexion internet.
  • IP machine développement : 192.168.0.2
  • OS : Ubuntu Desktop 9.04 (100% à jour – 22 mai 2009)
  • User : as
  • Pass : azerty
  • Pass root : azerty
  • IP carte Freescale : 192.168.0.254
  • Passerelle : 192.168.0.1
  • Masque : 255.255.255.0
  • Bootloader présent sur le System-On-Module : U-Boot 2008.10 (Dec 15 2008 – 11:03:39)
  • Ce document, ainsi que l'ensemble des fichiers téléchargés, se situent dans /home/as/tuto
  • « BSP Targeting the Freescale Coldfire M5239EVB User's Guide » (User_Manual_MCF5329.pdf)
  • « Using MCF5329EVB NAND Flash to Host μClinux Root File System » (AN3757.pdf)
  • « Building a Sample CGI Application » (AN3408.pdf)

LTIB est notre générateur d'image uClinux pour la carte freescale.

  1. On extrait m53xxevb-20081215-ltib.iso (source : Linux BSP for Freescale M5329EVB )
    1. Clique-droit sur le fichier → Extraire ici
    2. Nous avons maintenant accès à la (très bonne !) documentation : /home/as/tuto/m53xxevb-20081215-ltib/START_HERE.htm
    3. (Dans cette documentation, se trouve le tutoriel pour installer U-Boot - nécessite une machine windows :-/)
  2. Installation de LTIB
    1. On se place avec un terminal dans le répertoire : /home/as/tuto/m53xxevb-20081215-ltib
    2. On lance la commande : sh ./install
    3. On répond yes partout
    4. On installe les fichiers dans : /home/as/ltib
  3. Installation des paquets nécessaires à LTIB
    1. Lancer dans un terminal : sudo apt-get install bison libncurses5-dev build-essential rpm tcl8.5 libghc6-zlib-dev
  4. Mise en place des autorisations pour LTIB
    1. On modifie le fichier visudo via la commande : sudo /usr/sbin/visudo
    2. On y ajoute la ligne : as ALL = NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm
    3. On sauvegarde via [ctrl+o], puis [enter]
    4. Exit via [ctrl+x]
  5. Premier lancement de LTIB (il décompresse ses packages → long)
    1. On se place avec un terminal dans le répertoire : /home/as/ltib/ltib-cf_nommu-20081215
    2. On lance la commande : ./ltib
    3. Nous avons un bug (normal) (Exiting on error or interrupt)
    4. Pour le résoudre, on modifie les lignes 46, 47 et 48 du fichier /opt/freescale/pkgs/mtd-utils-20060302-cf-byteswap_h-1.patch
+#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
+# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." 
+#endif

qui deviennent

+//#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
+//# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
+//#endif

6. Et on supprime le répertoire (et son contenu) : /opt/freescale/ltib/usr/src/rpm/BUILD/mtd

7. On re-lance la commande : ./ltib

8. Après ça, LTIB est installé ! (ouf ^_^)

  1. On installe minicom. Pour ça on lance dans une console : sudo apt-get install minicom
  2. Pour le configurer, on lance dans un terminal : minicom -s
  3. Dans « configuration du port série », on veillera à avoir les valeurs suivantes
+--------------------------------------------------------------------------------+
| A - Port série : /dev/ttyUSB0                                                  |
| 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 : Non                                            |
| G - Contrôle de flux logiciel : Non                                            |
|                                                                                |
| Changer quel réglage ?                                                         |
+--------------------------------------------------------------------------------+ 

4. Le lancement de minicom se fera par la commande suivante dans le terminal : minicom

On crée un répertoire tftpboot (via la console)

sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
sudo chown -R nobody /tftpboot

On installe les paquets suivants

sudo apt-get install xinetd tftpd tftp

On ouvre un éditeur de texte en mode « root »

sudo gedit

Dans cet éditeur, on insert le texte suivant

service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}

(attention, il faut un [enter] après la dernière accolade !!)

Et on sauvegarde dans le répertoire /etc/xinet.d/ avec comme nom de fichier tftp

Toujours avec gedit en root, on ajoute les autorisations suivantes dans le fichier /etc/hosts.allow

portmap:192.168.0.254
nfsd:192.168.0.254
mountd:192.168.0.254

Et les lignes suivantes dans /etc/hosts.deny

portmap:ALL
nfsd:ALL
mountd:ALL

On recharge la configuration

sudo /etc/init.d/xinetd reload

On peut maintenant relancer le serveur tftp via la commande

sudo /etc/init.d/xinetd restart

On vérifie la configuration du service tftp via la commande cat /etc/xinetd.d/tftp qui doit retourner

as@as-desktop:~$ cat /etc/xinetd.d/tftp
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}

On crée un lien vers le répertoire rootfs de ltib (commande à lancer dans la console)

ln -s /home/as/ltib/ltib-cf_nommu-20081215/rootfs /tftpboot/ltib

On installe le paquets pour un serveur NFS

sudo apt-get install nfs-kernel-server

On ajoute la ligne suivante dans le fichier /etc/exports (avec un gedit en mode root) et on sauvegarde

/tftpboot/ltib 192.168.0.254/255.255.255.0(rw,no_root_squash,async)

On recharge le fichier de configuration via la commande (terminal)

sudo /etc/init.d/nfs-kernel-server reload

Et on relance le serveur via la commande

sudo /etc/init.d/nfs-kernel-server restart

On télécharge Sourcery G++ Lite Edition for ColdFire (uClinux) à l'adresse suivante.

On lance l'installation via la commande (exécutée dans le répertoire ou se trouve le fichier téléchargé)

sh ./freescale-coldfire-4.3-45-m68k-uclinux.bin -i console

On laisse l'ensemble des options par défaut.

On ajoute les entrées suivantes dans le fichier .bashrc (/home/as/.bashrc) et on sauve

PATH=$HOME/CodeSourcery/Sourcery_G++_Lite/bin:$PATH
export PATH

On peut tester le compilateur via la commande

m68k-uclinux-g++

Qui doit retourner

m68k-uclinux-g++: no input files

La compilation d'un fichier se fera maintenant via les commandes

m68k-uclinux-g++ -o hello helloworld.c

Fichier source en C++ - entrée : helloworld.c - sortie : hello

Et,

m68k-uclinux-gcc -o hello helloworld.c

Fichier source en C - entrée : helloworld.c - sortie : hello

Génération de l'image noyau

  • tutoriel/freescale_coldfire.1243768191.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)