Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tutoriel:freescale_coldfire [Le 31/05/2009, 13:09] _Val_ |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Installation d'uClinux via LTIB sur le module Freescale MCF5329 Fire Engine ====== | ||
- | |||
- | <note help> | ||
- | Document en cours d'écriture (31 mai 2009) | ||
- | </note> | ||
- | |||
- | ===== Prélude ===== | ||
- | Ce document s'adresse aux personnes intéressées par la mise en œuvre, sous Ubuntu, du System-On-Module [[http://www.logicpd.com/products/system-modules/freescale-mcf5329-fire-engine|MCF5329 Fire Engine]] de chez Freescale/Logicpd. Sur cette carte (disponible chez [[http://fr.farnell.com/freescale-semiconductor/m5329evbe/kit-mcf532x-evaluation-board/dp/1579763|Farnell]]), nous installerons [[http://www.uclinux.org|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 [[http://doc.ubuntu-fr.org/tftpd|TFTP]], [[http://doc.ubuntu-fr.org/nfs|NFS]], ... qui disposent déjà de tutoriel respectifs). | ||
- | |||
- | <note tip> | ||
- | Beaucoup des commandes présentes dans ce tutoriel sont, vraisemblablement, exportables pour d'autres cartes de développement. | ||
- | </note> | ||
- | |||
- | <note warning>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"</note> | ||
- | |||
- | ===== Pré-requis ===== | ||
- | Pour mener à bien ce tutoriel, nous avons besoin de : | ||
- | - Une machine de développement fonctionnant sous [[http://www.ubuntu.com/getubuntu/download|Ubuntu 9.04 "Jaunty Jackalope"]] 32 bits (100% à jour – 22 mai 2009). | ||
- | - Le [[http://fr.farnell.com/freescale-semiconductor/m5329evbe/kit-mcf532x-evaluation-board/dp/1579763|bundle]] de développement pour le System-On-Module Freescale MCF5329 Fire Engine. | ||
- | - Le bootloader présent sur la carte est [[http://www.denx.de/wiki/U-Boot/WebHome|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). | ||
- | - Une connexion internet. | ||
- | |||
- | ===== Conventions pour ce tutoriel ===== | ||
- | * 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'' | ||
- | |||
- | ===== Documents de références ===== | ||
- | * « 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) | ||
- | |||
- | ===== Installation LTIB ===== | ||
- | LTIB est notre générateur d'image uClinux pour la carte freescale. | ||
- | - On extrait m53xxevb-20081215-ltib.iso (source : [[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF532X&nodeId=0162468rH3YTLC00M92076&fpsp=1&tab=Design_Tools_Tab#|Linux BSP for Freescale M5329EVB]] ) | ||
- | - Clique-droit sur le fichier -> Extraire ici | ||
- | - __Nous avons maintenant accès à la (très bonne !) documentation__ : ''/home/as/tuto/m53xxevb-20081215-ltib/START_HERE.htm'' | ||
- | - (Dans cette documentation, se trouve le tutoriel pour installer U-Boot - nécessite une machine windows :-/) | ||
- | - Installation de LTIB | ||
- | - On se place avec un terminal dans le répertoire : ''/home/as/tuto/m53xxevb-20081215-ltib'' | ||
- | - On lance la commande : ''sh ./install '' | ||
- | - On répond yes partout | ||
- | - On installe les fichiers dans : ''/home/as/ltib '' | ||
- | - Installation des paquets nécessaires à LTIB | ||
- | - Lancer dans un terminal : ''sudo apt-get install bison libncurses5-dev build-essential rpm tcl8.5 libghc6-zlib-dev'' | ||
- | - Mise en place des autorisations pour LTIB | ||
- | - On modifie le fichier visudo via la commande : ''sudo /usr/sbin/visudo'' | ||
- | - On y ajoute la ligne : ''as ALL = NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm'' | ||
- | - On sauvegarde via [ctrl+o], puis [enter] | ||
- | - Exit via [ctrl+x] | ||
- | - Premier lancement de LTIB (il décompresse ses packages -> long) | ||
- | - On se place avec un terminal dans le répertoire : ''/home/as/ltib/ltib-cf_nommu-20081215'' | ||
- | - On lance la commande : ''./ltib'' | ||
- | - Nous avons un bug (normal) //(Exiting on error or interrupt)// | ||
- | - 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'' | ||
- | <code> | ||
- | +#if !defined _BYTESWAP_H && !defined _NETINET_IN_H | ||
- | +# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." | ||
- | +#endif | ||
- | </code> | ||
- | qui deviennent | ||
- | <code> | ||
- | +//#if !defined _BYTESWAP_H && !defined _NETINET_IN_H | ||
- | +//# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." | ||
- | +//#endif | ||
- | </code> | ||
- | 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 ^_^) | ||
- | |||
- | ===== Installation de Minicom ===== | ||
- | - On installe minicom. Pour ça on lance dans une console : ''sudo apt-get install minicom'' | ||
- | - Pour le configurer, on lance dans un terminal : ''minicom -s'' | ||
- | - Dans « configuration du port série », on veillera à avoir les valeurs suivantes | ||
- | <code> | ||
- | +--------------------------------------------------------------------------------+ | ||
- | | 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 ? | | ||
- | +--------------------------------------------------------------------------------+ | ||
- | </code> | ||
- | 4. Le lancement de minicom se fera par la commande suivante dans le terminal : ''minicom'' | ||
- | |||
- | ===== Installation du serveur TFTP ===== | ||
- | On crée un répertoire tftpboot (via la console) | ||
- | <code> | ||
- | sudo mkdir /tftpboot | ||
- | sudo chmod -R 777 /tftpboot | ||
- | sudo chown -R nobody /tftpboot | ||
- | </code> | ||
- | On installe les paquets suivants | ||
- | <code> | ||
- | sudo apt-get install xinetd tftpd tftp | ||
- | </code> | ||
- | On ouvre un éditeur de texte en mode « root » | ||
- | <code> | ||
- | sudo gedit | ||
- | </code> | ||
- | Dans cet éditeur, on insert le texte suivant | ||
- | <code> | ||
- | service tftp | ||
- | { | ||
- | protocol = udp | ||
- | port = 69 | ||
- | socket_type = dgram | ||
- | wait = yes | ||
- | user = nobody | ||
- | server = /usr/sbin/in.tftpd | ||
- | server_args = /tftpboot | ||
- | disable = no | ||
- | } | ||
- | |||
- | </code> | ||
- | //(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'' | ||
- | <code> | ||
- | portmap:192.168.0.254 | ||
- | nfsd:192.168.0.254 | ||
- | mountd:192.168.0.254 | ||
- | </code> | ||
- | |||
- | Et les lignes suivantes dans /etc/hosts.deny | ||
- | <code> | ||
- | portmap:ALL | ||
- | nfsd:ALL | ||
- | mountd:ALL | ||
- | </code> | ||
- | |||
- | On recharge la configuration | ||
- | <code> | ||
- | sudo /etc/init.d/xinetd reload | ||
- | </code> | ||
- | |||
- | On peut maintenant relancer le serveur tftp via la commande | ||
- | <code> | ||
- | sudo /etc/init.d/xinetd restart | ||
- | </code> | ||
- | |||
- | On vérifie la configuration du service tftp via la commande ''cat /etc/xinetd.d/tftp'' qui doit retourner | ||
- | <code> | ||
- | 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 | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Installation du serveur NFS ===== | ||
- | On crée un lien vers le répertoire rootfs de ltib (commande à lancer dans la console) | ||
- | <code> | ||
- | ln -s /home/as/ltib/ltib-cf_nommu-20081215/rootfs /tftpboot/ltib | ||
- | </code> | ||
- | |||
- | On installe le paquets pour un serveur NFS | ||
- | <code> | ||
- | sudo apt-get install nfs-kernel-server | ||
- | </code> | ||
- | |||
- | On ajoute la ligne suivante dans le fichier ''/etc/exports'' (avec un gedit en mode root) et on sauvegarde | ||
- | <code> | ||
- | /tftpboot/ltib 192.168.0.254/255.255.255.0(rw,no_root_squash,async) | ||
- | </code> | ||
- | |||
- | On recharge le fichier de configuration via la commande (terminal) | ||
- | <code> | ||
- | sudo /etc/init.d/nfs-kernel-server reload | ||
- | </code> | ||
- | |||
- | Et on relance le serveur via la commande | ||
- | <code> | ||
- | sudo /etc/init.d/nfs-kernel-server restart | ||
- | </code> | ||
- | |||
- | ===== Installation du compilateur C/C++ ===== | ||
- | On télécharge Sourcery G++ Lite Edition for ColdFire (uClinux) à l'adresse [[http://www.codesourcery.com/sgpp/lite/coldfire/portal/package3499/public/m68k-uclinux/freescale-coldfire-4.3-45-m68k-uclinux.bin|suivante]]. | ||
- | |||
- | On lance l'installation via la commande (exécutée dans le répertoire ou se trouve le fichier téléchargé) | ||
- | <code> | ||
- | sh ./freescale-coldfire-4.3-45-m68k-uclinux.bin -i console | ||
- | </code> | ||
- | |||
- | 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 | ||
- | <code> | ||
- | PATH=$HOME/CodeSourcery/Sourcery_G++_Lite/bin:$PATH | ||
- | export PATH | ||
- | </code> | ||
- | |||
- | On peut tester le compilateur via la commande | ||
- | <code> | ||
- | m68k-uclinux-g++ | ||
- | </code> | ||
- | |||
- | Qui doit retourner | ||
- | <code> | ||
- | m68k-uclinux-g++: no input files | ||
- | </code> | ||
- | |||
- | La compilation d'un fichier se fera maintenant via les commandes | ||
- | <code> | ||
- | m68k-uclinux-g++ -o hello helloworld.c | ||
- | </code> | ||
- | //Fichier source en C++ - entrée : helloworld.c - sortie : hello// | ||
- | |||
- | Et, | ||
- | <code> | ||
- | m68k-uclinux-gcc -o hello helloworld.c | ||
- | </code> | ||
- | //Fichier source en C - entrée : helloworld.c - sortie : hello// | ||
- | |||
- | ''Génération de l'image noyau'' | ||
- | |||
- | |||
- | |||