User Tools

Site Tools


uboot_common

This is an old revision of the document!


Extending U-Boot support (common)

This page group together all the common U-Boot informations (ie: not related with a specific board)

Repository

Sources are available in the Git repository: u-boot-lacie.git. At least, the following branches should be availables:

  • stable is used to build the images distributed via a FTP repository.
  • master is a development branch, holding the patches waiting to be merged mainline.

Checkout command:

git clone http://git.lacie-nas.org/u-boot-lacie.git

or

git clone git://lacie-nas.org/u-boot-lacie.git

Build

To compile U-Boot images, you could use the following commands (toolchain path, cross-compiler and board names to be replaced):

PATH=/usr/local/x-tools/arm-2010q1/bin/:$PATH CROSS_COMPILE=arm-none-eabi- make netspace_v2_config
PATH=/usr/local/x-tools/arm-2010q1/bin/:$PATH CROSS_COMPILE=arm-none-eabi- make u-boot.kwb

Downloads

For the supported boards, some pre-compiled U-Boot images are availables in the FTP repository.

Install from a LaCie stock U-Boot

Why ?

  • The LaCie stock U-Boot comes with a huge limitation. At reset, U-Boot reinitialize the boot environment variables (stored in Flash) with some built-in values. This includes the boot commands sequence. As a consequence, the LaCie system layout (or partition map) can't be changed. By default, U-Boot will load the Linux kernel from partition 10 (update) or from partition 6 as a fallback (default).
  • Save flash size (a LaCie U-Boot image size is ~450KB against ~230KB for a mainline one).
  • Boot reliably from USB.
  • Some command line enhancements: history, completion, scripting …
  • Be able to add a new feature.

Update step by step

This section present step by step how to update the stock U-Boot with a mainline version. Both a serial or a network console can be used to connect to U-Boot. For this how-to, the netconsole way is preferred because the user don't have to build/buy a serial cable.

Preparations

  • Create a work directory
$ mkdir /tmp/tools && cd /tmp/tools
$ wget ftp://lacie-nas.org/tools/clunc-1.1.tar.gz
$ tar xf clunc-1.1.tar.gz
  • Get U-Boot netconsole utility
$ wget ftp://lacie-nas.org/tools/u-boot-netconsole.tar.gz
$ tar xf u-boot-netconsole.tar.gz
  • Setup and enable a TFTP server. The configuration really depends on your OS. For example, a Linux distribution could be use inetd (the configuration file is /etc/inetd.conf).
  • Install the new u-boot image into the TFTP root directory (could be /var/tftpboot).
$ wget ftp://ftp.lacie-nas.org/u-boot/u-boot-netspace_v2.kwb -O /var/tftpboot/u-boot-netspace_v2.kwb

Run CLUNC and connect to the LaCie U-Boot console

$ cd /tmp/tools/clunc-1.1
$ ./clunc -i <NAS_IP>
Marvell>> version
U-Boot 1.1.4 (Jan 17 2011 - 21:48:29) Marvell version: 3.4.16  LaCie 1.5.9 256MB

Flash the new U-Boot image

Marvell>> bubt u-boot-netspace_v2.kwb
Using egiga0 device
TFTP from server 192.168.0.13; our IP address is 192.168.0.17
Filename 'u-boot-netspace_v2.kwb'.
Load address: 0x2000000
Loading: ##########################################
done
Bytes transferred = 214220 (344cc hex)
Un-Protect Flash Monitor space

**Warning**
If U-Boot Endiannes is going to change (LE->BE or BE->LE), Then Env parameters should be overriden..
Override Env parameters? (y/n) n
Erase 0 - 125 sectors...
.................................................................
.............................................................
Copy to Flash... done
Protect Flash Monitor space

Restart

Marvell>> reset

Retrieve the NAS IP address

U-Boot mainline don't provide a magic packet mechanism to configure the IP address. Instead DHCP is used. It means that CLUNC becomes useless from this point.

Some possible ways to retrieve the NAS IP address:

  • Use an utility like dhcpdump.
  • Look in the DHCP server log.

Connect to U-Boot via netconsole

The netconsole configuration rely on some environment variables: ipaddr, ncip, stdin, stdout and stderr (for more information, please refer to the file README.NetConsole included in U-Boot sources). After the update, this variables will be initialized with the default (or built-in) values and the netconsole is configured to broadcast messages.

<note important> netcat don't handle the UDP broadcast messages. The dedicated U-Boot tools netconsole and ncb must be used. </note>

  • Run netconsole and interrupt boot process (Ctrl-C):
$ ./tools/netconsole 192.168.1.111
^C  
ns2> version

Default configuration

ns2> print

Configure U-Boot to suit your own needs

Some usage examples

Save environment on a SPI flash

Marvell>> set bootargs console=ttyS0,115200
Marvell>> saveenv
Saving Environment to SPI Flash...
SF: Detected MX25L4005A with page size 256, total 512 KiB
Erasing SPI flash...Writing to SPI flash...done

USB boot

Marvell>> usb start
Marvell>> usb storage
  Device 0: Vendor: UFD      Rev: 7.77 Prod:
            Type: Hard Disk
            Capacity: 125.0 MB = 0.1 GB (256000 x 512)
Marvell>> fatls usb 0:1
            boot/

0 file(s), 1 dir(s)

Marvell>> fatls usb 0:1 /boot
            ./
            ../
  4902372   uimage-kw-2.6.37-rc3-miniroot 

1 file(s), 2 dir(s)

Marvell>> fatload usb 0:1 0x800000 /boot/uimage-kw-2.6.37-rc3-miniroot 4902372
reading /boot/uimage-kw-2.6.37-rc3-miniroot

4902372 bytes read
Marvell>> setenv bootargs console=ttyS0,115200
Marvell>> bootm 0x800000
## Booting kernel from Legacy Image at 00800000 ...
   Image Name:   Linux-2.6.37-rc3-00799-g2dd0ff5-
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4902308 Bytes = 4.7 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Disk boot

SoC:   Kirkwood 88F6281_A0
DRAM:  256 MiB
SF: Detected MX25L4005A with page size 256, total 512 KiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Marvell>> ide reset

Reset IDE: Bus 0: ........OK
  Device 0: Model: SAMSUNG HD103SI  Firm: 1AG01118 Ser#: S1Y5J1KS504652
            Type: Hard Disk
            Supports 48-bit addressing
            Capacity: 953869.7 MB = 931.5 GB (1953525168 x 512)

Marvell>> ide part 0

Partition Map for IDE device 0  --   Partition Type: DOS

Partition     Start Sector     Num Sectors     Type
    1                 63         1975932      83
    2          195334335       195334335      83
Marvell>> ext2ls ide 0:1 /boot
Failed to mount ext2 filesystem...
<DIR>       4096 .
<DIR>       4096 ..
         4507632 uImage-kw-2.6.36-rc2-pm-miniroot

Marvell>> ext2load ide 0:1 0x800000 /boot/uImage-kw-2.6.36-rc2-pm-miniroot
Loading file "/boot/uImage-kw-2.6.36-rc2-pm-miniroot" from ide device 0:1 (hda1)
4507632 bytes read
Marvell>> bootm 0x800000
## Booting kernel from Legacy Image at 00800000 ...
   Image Name:   Linux-2.6.36-rc2-00011-g63a3f43-
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4507568 Bytes = 4.3 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Update a mainline U-Boot version

ns2> setenv ipaddr 192.168.0.17; setenv serverip 192.168.0.13;
ns2> tftpboot 0x800000 u-boot-netspace_v2.kwb
Using egiga0 device
TFTP from server 192.168.0.13; our IP address is 192.168.0.17
Filename 'u-boot-netspace_v2.kwb'.
Load address: 0x800000
Loading: ##########################################
done
Bytes transferred = 214220 (344cc hex)
ns2> fl probe 0:0
SF: Detected MX25L4005A with page size 256, total 512 KiB
512 KiB MX25L4005A at 0:0 is now current device
ns2> sf erase 0 0x40000
Usage: sf erase offset len
ns2> sf erase 0 0x40000
ns2> sf write 0x800000 0 0x40000
ns2> reset
resetting ...


U-Boot 2010.12-00216-g5bbbf69 (Jan 24 2011 - 21:38:00) LaCie Network Space v2

SoC:   Kirkwood 88F6281_A0
DRAM:  256 MiB
SF: Detected MX25L4005A with page size 256, total 512 KiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  3
ns2>
uboot_common.1310654875.txt.gz · Last modified: 2011/07/14 16:47 by simon