Boot from USB using u-boot


From SamyGO
Revision as of 10:47, 17 March 2010 by Aquadran (talk | contribs)
Jump to: navigation, search

Note: This instruction apply only to LExxB65x, LExxB75x, PSxxB65x TV series with CI only supported devices This is for advanced users and developers

Requirements:

  • Serial connection
  • Usb disk drive or pen drive (at least 256MB)
  • TFTP daemon outside TV on some host in case using pen drive or optionaly in case disk drive
  • Regular Linux based system to prepare usb disk/pen drive
  • Builded rootfs image

Follow steps:

1) Build rootfs image using SamyGO OE Framework.

Builded rootfs image is located in build/tmp/deploy/images directory. Filename looks like rootfs-sdp83-xxxxxxx.tar.gz.

2) Partition usb disk/pen drive.

Partition drive using fdisk or other tool.

First parittion FAT type. It will be usefull or needed if loading kernel image from it. Second partition as Linux type.

Format first partition with mtools or other tool as VFAT type filesystem. Format second partition with ext2fsprogs as ext2/ext3.

3) Unpack rootfs image to linux partition on usb disk/pen drive.

Unpack image to second partition with root rights.

4) Put kernel image to TFTP service directory.

Note: Do this only if you are using pen drive or if you want faster kernel load image in case use disk drive.

Unpack uImage-2.6.18_SELP-ARM from /boot in image rootfs, raname it to uImage and copy to root directory of tftp service.

5) Enable serial debug console.

6) Enter u-boot bootloader prompt shell.

7) Set variables and execute commands in u-boot shell to boot linux kernel.

In case use tftp set first:

setenv ipaddr 192.168.1.100;setenv gatewayip 192.168.1.1;setenv serverip 192.168.1.2

where: first IP is TV second gateway is not important in this case third is address of tftp server


Boot linux kernel (case tftp):

setenv bootargs root=/dev/sda2 console=ttyS1;tftp;bootm

Boot linux kernel (case fat partition):

setenv bootargs root=/dev/sda2 console=ttyS1;usb start;fatload usb 0 61000000 uImage;bootm

where /dev/sda2 is linux rootfs.

Instruction is in progress!