Installation de l’environnement de base
Installation du PSP de technexion
Nous allons d’abord commencer le tutoriel en prenant le noyau et le rootfs généré par Techenxion: http://www.technexion.com/index.php/support-center/downloads/ti-cpu-modules/508-tao-3530.
Il peut ensuite s’installer de la façon suivante:
sudo su
mkdir /root/tao-3530
cd /root/tao-3530
tar xjvf /home/account/download/tao-20110401.tar.bz2 -C .
/home/account/download/tao-20110401.tar.bz2 est un exemple.
Ce dossier contient plusieurs choses, comme les sources du noyau pour la carte ou un rootfs fonction.
Installation de la toolchain
Dans une premier temps, il faut un noyau fonctionnel. Afin de le compiler, il faut une toolchain. Dans ce tutoriel, une toolchain de chez Codesourcery a été utilisée et elles sont disponibles ici : http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057. La version Sourcery G++ Lite 2010q1-202 Release 2010-04-23 a été utilisée.
Exemple d’installation de la toolchain:
sudo tar xjvf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /opt
export PATH=$PATH:/opt/arm-2010q1/bin
Compilation du noyau
Avant de compiler le noyau, il faut installer le paquet suivant:
sudo apt-get install uboot-mkimage
Les chemins peuvent changer selon les versions de psp:
cd /root/tao-3530/tao-20110401/kernel/TAO-PSP-03000106
make mrproper
make ARCH=arm omap3_tsunami_defconfig
make -j8 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
Une fois la compilation terminée, le noyau se trouve dans arch/arm/boot/.
Démarrer la carte avec notre noyau et rootfs
Pour effectuer ceci, nous allons charger le noyau par FTP sur la carte. Ceci va se faire grâce à u-boot qui va télécharger le noyau via le protocole FTP, puis il va le charger en RAM à une certaine adresse. Puis, lorsque le noyau démarrera, il va monter le système de fichiers via NFS, c’est-à-dire que le rootfs sera celui présent sur le disque dur du poste de développement.
Configuration d’un serveur FTP sur le poste de développement
Installer les paquets suivants:
sudo apt-get install xinetd tftpd tftp
Editer le fichier /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
}
Créer le répertoire /tftpboot:
sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
sudo chown -R nobody /tftpboot
Charger les fichiers de configuration et démarrer le server ftp:
sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd start
Il faut maintenant copier le uImage dans le dossier tftpboot. Ce uImage devrait se trouver dans /root/tao-3530/tao-20110401/kernel/TAO-PSP-03000106/arch/arm/boot:
sudo cp /root/tao-3530/tao-20110401/kernel/TAO-PSP-03000106/arch/arm/boot/uImage /tftpboot
Configuration d’un serveur NFS sur le poste de développement
Sous debian/ubuntu, il faut installer en supplément ce paquet: nfs-kernel-server.
Les commandes suivantes permettant de rendre disponible ce fs pour tous les clients NFS:
sudo bash -c "echo \"/root/tao-3530/tao-20110401/prebuilt/rootfs *(rw,sync,no_root_squash)\" >> /etc/exports"
L’étoile siginifie que n’importe quel client du réseau peut se connecter à ce nfs.
Redémarrer le serveur nfs:
sudo /etc/init.d/nfs-kernel-server restart
OU
sudo exportfs -a
U-Boot
Afin d’accéder au port série sous linux, il existe plusieurs logiciels, comme minicom:
sudo minicom -s
Il faut aller ensuite dans “configuration du port série” et choisir votre interface correspondant au port série (/dev/ttyS0, /dev/ttyUSB0 ...). Il faut aussi paramétrer l’interface de la façon suivante:
Baud rate 115200
Data bit 8
Stop bits 1
Parity none # à changer sinon le TX ne fonctionne pas
Flow control none
Une fois sous u-boot, il faut changer quelques variables d’environnements selon votre configuration:
setenv ipaddr 192.168.1.50 # adresse IP de la carte sous uboot
setenv netmask 255.255.255.0
setenv serverip 192.168.1.1 # adresse IP du poste de développement
Enfin la ligne suivante permet de démarrer l’ensemble du système:
setenv linux_args setenv bootargs console=${console} nfsroot=${serverip}:/root/tao-3530/tao-20110401/prebuilt/rootfs ip=${ipaddr}:${serverip}:192.168.1.254:255.255.255.0::eth0:off; tftpboot 84000000 uImage; run linux_args; bootm 84000000;
Lors du boot, il devrait normalement avoir le problème suivant:
VFS: Mounted root (nfs filesystem) on device 0:12.
Freeing init memory: 176K
INIT: version 2.86 booting
Please wait: booting...
Starting udev
udev: starting version 151
udevd-work[595]: error changing netif name eth0 to eth1: Device or resource busy
Remounting root file system...
Caching udev devnodes
Populating dev cacheFAT: unable to read boot sector
root: mount: mount point /proc/bus/usb does not exist
ALSA: Restoring mixer settings...
NOT configuring network interfaces: / is an NFS mount
Starting portmap daemon: portmap.
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
INIT: Entering runlevel: 5
Starting system message bus: Unknown username "system" in message bus configuration file
dbus.
Starting Hardware abstraction layer hald
Starting Connection Manager
Starting Dropbear SSH server: nfs: server 192.168.1.1 not responding, still trying
Le serveur nfs est déconnecté car le programme Dropbear utilise une autre configuration réseau, et il l’a change automatiquement.
Pour remédier à ce problème, des services du runlevel par défaut (5) ont été supprimés, ceux qui potentiellement changent la configuration réseau. Ils sont les suivants:
cd /root/tao-3530/tao-20110401/prebuilt/rootfs/etc/rc5.d
rm S02dbus-1 S05connman S10dropbear S20apmd S21avahi-daemon S80WIFI
En redémarrant avec U-boot, le système est enfin fonctionnel:
.-------.
| | .-.
| | |-----.-----.-----.| | .----..-----.-----.
| | | __ | ---'| '--.| .-'| | |
| | | | | |--- || --'| | | ' | | | |
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
-' |
'---'
The Angstrom Distribution taodemo ttyS2
Angstrom 2009.X-test-20091029 taodemo ttyS2
taodemo login: root
root@taodemo:~#







