Ce billet est très largement inspiré de l'excellent post Upgrading U-Boot on SheevaPlug and other plug computers.

Introduction

Avant de rentrer dans le vif du sujet, voici quelques définitions et bribes de savoir :

Das U-Boot (Universal Bootloader) is an open source, primary boot loader used in embedded devices. It is available for a number of different computer architectures, including PPC, ARM, MIPS, AVR32, x86, 68k, Nios, and MicroBlaze.

(src : Wikipedia)

Deux variantes de U-Boot sont couramment utilisées sur les plug computers. Lorsque Marvell a diffusé les premiers plug computers il y a quelques années, les développeurs de Marvel ont été amenés à créer leur propre variante de U-Boot pour y intégrer le support des plug computers. Depuis, ce travail a été porté dans la variante officielle U-Boot. Le développement de la variante U-Boot officielle (parfois connu sous le nom DENX) est plus rapide et cette variante offre donc des fonctionnalités que l'on ne trouve pas dans la variante Marvell.

Mise à jour de U-Boot

Nous allons passer de la variante Marvell à la variante DENX de U-Boot sur un SheevaPlug.

Identification de la version de U-Boot installée

Première étape, vérifier quelle version de U-Boot est installée sur notre plug computer. Pour ce faire, taper la commande suivante dans la console :

version

Cette commande vous permettra aisément d'identifier quelle version de U-Boot est installée sur votre plug. Si vous utilisez la variante Marvell, elle affichera la version de U-Boot à proprement parler plus un numéro de version Marvell comme dans l'exemple suivant :

U-Boot 1.1.4 (Dec 27 2009 - 22:03:21) Marvell version: 3.4.27

Alors que si vous utilisez la variante DENX, la commande n'affichera pas de numéro de version Marvell :

U-Boot 2011.12 (Mar 11 2012 – 18:59:46)

Mise à jour du boot loader U-boot

Attention, lors du passage d'une variante Marvell à une variance DENX, toutes les données de configuration de U-Boot sont perdues (y compris l'adresse MAC de votre plug). Nous allons donc noter l'adresse MAC de notre sheevaplug avant de commencer l'opération :

print ethaddr

Nous allons ensuite récupérer le binaire de U-Boot adapté à notre sheevaplug ici.

Il y a différente façon d'installer la nouvelle version de U-Boot, j'ai testé la méthode utilisant une clé USB (mais l'article original décrit également une méthode s'appuyant sur un serveur TFTP). Tout d'abord, il convient de copier le binaire U-Boot (u-boot.kwb) sur une clé USB formatée en FAT. On insére ensuite la clé USB dans le sheevaplug et on saisi les commandes suivantes :

usb start
fatload usb 0:1 0x0800000 u-boot.kwb
nand erase 0x0 0x80000
nand write 0x0800000 0x0 0x80000

Enfin, il est nécessaire de redémarrer pour charger la nouvelle version of U-Boot:

reset

Après une mise à jour de la variante Marvell vers la variante DENX il est nécessaire de déclarer à nouveau l'adresse MAC de votre plug computer, pour ce faire taper la commande suivante :

setenv ethaddr XX:XX:XX:XX:XX:XX
saveenv
reset
Proudly powered by Pelican, which takes great advantage of Python.