Le kernel Linux sur une carte TS7200

Au départ, je devais utiliser cette carte sur MyBot, c’est pour cela que j’ai commencer à regarder comment utiliser un kernel que j’avais recompilé. Par la suite, j’ai plutôt choisi la TS7800 pour ces capacités. Je laisse quand même cet article pour ceux que ca intéresse.

Kernel 2.6.29-ts

Les cartes TS7200 sont livrées avec un kernel 2.4.x. Au lieu d’utiliser les cartes comme ca, j’ai décidé qu’il serait mieux de pouvoir modifier le kernel et donc qu’il était nécessaire de le recompiler. Comme point de départ, j’ai choisi un 2.6.29 déja patché pour les cartes de chez Technologic System.

Il est assez dur à trouver, allez voir ici ftp://ftp.embeddedarm.com/application-kits/ts-wifibox/sources/tskernel-2.6.29-ts-src.tar.gz, il y est peut-être encore.

Kernel 2.6.29

Sinon on peut toujours récupérer le kernel 2.29 sur le git officiel et appliquer les patchs qui se trouve ici http://mcrapet.free.fr/linux-2.6.29.1-ts7200_matt-7.txt. Allez sur son site http://mcrapet.free.fr, on y trouve des patchs pour d’autres versions de kernel, à vous de voir.

 $> cd ~/Projet

On récupère l’arborescence complète Linux, attention c’est gros.

$> git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-git
$> cd linux-git

On peut lister toutes les versions disponibles

$> git tag -l

On choisit notre 2.6.29

$> git checkout -f v2.6.29

Et on applique les patchs

$>  git apply ../linux-2.6.29.1-ts7200_matt-7/linux-2.6.29.1-ts7200_matt-7.patch

La compilation du Kernel

On extrait d’abord l’arborescence complète que l’on vient de télécharger (ou on va directement dans le répertoire dans le cas du kernel récupéré par git)

$> cd /home/gil/Projets/ts7200
$> tar xzvf /home/gil/Download/tskernel-2.6.29-ts-src.tar.gz
$> cd linux-2.6.29-ts

On recopie les configs que l’on a récupérées ici : http://mcrapet.free.fr/.

$> cp ../linux-2.6.29.1-ts7200_matt-7/configs/ts72* arch/arm/configs/.

Maintenant, la compilation proprement dit.

On efface tout pour repartir d’une configuration intacte.

$> make ARCH=arm CROSS_COMPILE=/opt/x-toolx/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- distclean

On applique la config ts7200_eabi_full_defconfig.
Pour info, voici les configurations disponibles

 

  • ts7200_eabi_full: Parfait pour le développement, NFS/USB root support, NOR flash support.  ETH, CF (compact flash), I2C, SPI, GPIO, LED, RTC (ep93xx-rtc & rtc-m48t86), HID are embedded.
    • zImage is ~1.9mo. Note: NFS client est environ 200kb.
  • ts72xx_eabi_full: La même que « ts7200_eabi_full » mais sans les spécificités de la TS-7200.  No MTD (NOR flash) support, no PATA (compatch flash).
    • zImage is ~1.8mo.
  • ts7250_eabi_full: La même que « ts72xx_eabi_full » mais avec les spécificités de la TS-7250.  MTD (NAND flash) support.
    • zImage is ~1.8mo.
  • ts72xx_eabi_mid: La même que « ts72xx_eabi_full » mais USB/HID/SCSI sont mis en modules.   Disabled « CPU Frequency scaling » & « CPU idle PM support ».
    • zImage is ~1.6mo.
  • ts72xx_eabi_small: La même que « ts72xx_eabi_mid » mais I2C, SPI, LED, EXT2 & EXT3 mis en modules.
    • zImage is ~1.4mo.
 $> make ARCH=arm CROSS_COMPILE=/opt/x-toolx/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- ts7200_eabi_full_defconfig

J’ai choisi la configuration mais je veux aussi un kernel le plus petit possible car il doit remplacer celui présent dans la flash embarquées sur la carte. La place disponible est 0x160000 Octets.

Voici un exemple, mon fichier .config, avec ça on obtient un kernel 2.6.29 de 0x12F7BC Octets.

$> make ARCH=arm CROSS_COMPILE=/opt/x-toolx/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- menuconfig

Ensuite, on lance la compilation

$> make ARCH=arm CROSS_COMPILE=/opt/x-toolx/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-

Puis l’on recopie les modules dans l’arboresence correspondante de notre « File System ».

$> sudo make ARCH=arm CROSS_COMPILE=/opt/x-toolx/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- INSTALL_MOD_PATH=/media/disk modules_install

Une fois que l’on a un kernel, on peut le recopier dans le répertoire accessible par tftp.

$> cp arch/arm/boot/zImage /tftpboot