SEARCH
TOOLBOX
LANGUAGES
modified on 9 February 2012 at 21:15 ••• 144,094 views

Boot from SD/MMC

From Manuals

(Difference between revisions)
Jump to: navigation, search
Line 27: Line 27:
7) change the boot args to load root file system from SD card.
7) change the boot args to load root file system from SD card.
   
   
-
Electrum> setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rw ip=192.168.1.231:192.168.1.249::255.255.255.0::eth0:none
+
  setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rw ip=192.168.1.231:192.168.1.249::255.255.255.0::eth0:none
8) To load the Kernel from EXT2 change the boot commands
8) To load the Kernel from EXT2 change the boot commands

Revision as of 16:24, 5 October 2010

Contents

Boot from SD/MMC

The Following Procedure explains how to boot a Kernel Image and Root File system from a SD/MMC card. Thus a NAND flash is no more a mandatory component to have on our Electrum100 boards. Boot from SD/MMC card gives a wide range of options for the user including portability, larger memory etc,. In our test bed, we didn't see a considerable change in the speed of the board, thus speed is not a big concern when booting from SD/MMC given the advantages it provides.

Note: As EXT2 File system is used, there is no Journalism. So its recommended to use standard commands every time you Reboot or Shutdown.

shutdown -h now   to Shutdown
shutdown -r now   to Restart

To boot Kernel and Rootfs from SD/MMC card (Without NAND)

1) Download u-boot-2010.03 from http://wiki.micromint.com/index.php/Electrum_Documentation

2) Build u-boot-2010.03 source or download the binary.

$make bootloader

3) Update the Boot strapper and Boot-loader into Electrum100 using SAM-BA application

4) Execute the command:

Electrum> mmc list 
Electrum> mmc rescan 0

5) Now copy the Kernel Image and rootfs into SD card (Refer the section: Creating a Bootable filesystem on SD card).

6) Check the card using "mmc rescan 0" command

7) change the boot args to load root file system from SD card.

setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rw ip=192.168.1.231:192.168.1.249::255.255.255.0::eth0:none

8) To load the Kernel from EXT2 change the boot commands

Electrum> setenv bootcmd mmcinfo\; ext2load mmc 0:1 0x22000000 uImage-2.6.33.5\; bootm
Electrum> saveenv
Electrum> reset

Creating a Bootable Filesystem on SD card

1) The first step is to make a bootable file system on the SD card. Insert the card into the slot of a running plug. Enter the following commands:

>fdisk /dev/mmcblk0
press "o"  / create a new partition table
press "n"  / create a new partition
press "p"  / it's a primary partition
press "1"  / partition #1
press enter / default first cylinder
press enter / default last cylinder
press "a"  / set the boot flag
press "1" / ... for partition #1
press "w" / save changes
	
>mkfs -t ext2  /dev/mmcblk0p1
>mkdir /mnt/sdcard
>mount /dev/mmcblk0p1 /mnt/sdcard
>df

2) Now copy your existing nand file system onto the sd card. This may take 5-10 minutes.

root#: cp -r /rootfs/* /mnt/sdcard

3) The SD card should now mirror your internal nand flash, which you can confirm with df -h, etc.

Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                  519168    185612    333556  36% /
tmpfs                   257816         0    257816   0% /lib/init/rw
varrun                  257816       260    257556   1% /var/run
varlock                 257816         0    257816   0% /var/lock
udev                    257816        12    257804   1% /dev
tmpfs                   257816         0    257816   0% /dev/shm
tmpfs                   257816     21824    235992   9% /var/cache/apt
/dev/mmcblk0p1         7707056    516216   6799340   8% /mnt/sdcard

your SD card now has a bootable system. The next step is to boot it.

Booting from the SD Card

You need to interact with u-boot now. You must do this from a program talking to the usb-serial port, not from an ssh shell (duh).

>shutdown -r now

When u-boot appears, stop it by typing ENTER a few times, to stop it from booting automatically.

Electrum>> printenv bootargs
bootargs console=ttyS0,115200 root=/dev/nfs rw ip=192.168.1.231:192.168.1.249::255.255.255.0::
eth0: nfsroot=192.168.1.249:/media/disk/rootfs

This is the line that you'll need to change. Change it to

Electrum>> setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rw ip=192.168.1.231:192.168.1.249::255.255.255.0::
eth0:none
Electrum>> printenv bootargs (if you like, just to confirm that you did it right)
Electrum>> saveenv
Electrum>> boot