Booting from large microSD (SDHC) [success]

Marian Flor deichkind.08 at schweiz.eu
Sat Nov 8 12:47:05 CET 2008


Hello list members,
here another FR success story: Booting and usage of a large 16GB SDHC
works!

My configuration and recipe:
- QtExtend on flash 
- Debian on microSD (ext2+ext2) [1]
- u-boot daily (8 Nov 2008) from [2]
- Applied configure-uboot.sh from [3]
- Kernel for Debian from [4] (but the kernel should not matter)
- microSD card:
  Vendor: SanDisk
  Model: SDSDQ-016G-E11M 
  Size: 16GB
  Speed: Class2

With this configuration I encountered first this error (output from
minicom, /dev/ttyACM0) when I tried to boot directly (i.e. just pressed
"power" on the FR):

--- 8< --- snip ---

Card Type:          SD 2.0 SDHC
Manufacturer:       0x03, OEM "SD"
Product name:       "SU16G", revision 8.0
Serial number:      2684394330
Manufacturing date: 8/2008
MMC/SD size:        3MiB
cmd 0x10, arg 0x200 flags 0x15
Error after cmd: 0xfffffffc
cmd 0x11, arg 0x0 flags 0x235
Error after cmd: 0xfffffffc
bad MBR sector signature 0x0000
** Bad partition 1 **
Wrong Image Format for bootm command
ERROR: can't get kernel image!

--- 8< --- snap ---

Note that mmcinit reports a false size [5].
Booting manually from that point worked well:

--- 8< --- snip ---

GTA02v6 # boot
Card Type:          SD 2.0 SDHC
Manufacturer:       0x03, OEM "SD"
Product name:       "SU16G", revision 8.0
Serial number:      2684394330
Manufacturing date: 8/2008
MMC/SD size:        3MiB

1939024 bytes read
## Booting kernel from Legacy Image at 32000000 ...
   Image Name:   Openmoko Freerunner Kernel
   Created:      2008-10-03  15:57:45 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1938960 Bytes =  1at MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK

--- 8< --- snap ---

Then I modified the configure-uboot.sh, entered some idle time to let
the SDHC card settle after mmcinit and applied configure-uboot.sh again
to the FR:

--- 8< --- snip ---

--- configure-uboot.sh  2008-08-15 16:01:06.000000000 +0200
+++ configure-uboot-delay.sh    2008-11-08 11:36:20.000000000 +0100
@@ -37,6 +37,7 @@
     ${bootargs_base} ${mtdparts}
     rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5;
   mmcinit;
+  sleep 2;
   ext2load mmc 1 0x32000000 ${sd_image_name};
   bootm 0x32000000

--- 8< --- snap ---

Two seconds settle time is suitable for all boot situations (warm and
cold boot, powered by usb or on battery). Tested. Works. :-D

Note: There is still an issue with the suspend mode [6]. But my MBR was
not eaten (until now ;-) ). I was able to fix a mangled filesystem on
the card with a fsck.ext2 -y /dev/mmcblk0p2 after booting the Linux from
flash.

Enjoy!

Greetings from switzerland,
Marian

[1] http://wiki.debian.org/DebianOnFreeRunner
[2] http://downloads.openmoko.org/daily/gta02v5_and_up-u-boot.bin
[3] http://pkg-fso.alioth.debian.org/freerunner/configure-uboot.sh
[4] http://moko.mwester.net/dl.html#kernels
[5] https://docs.openmoko.org/trac/ticket/1815
[6]
http://wiki.openmoko.org/wiki/Booting_from_SD#Booting_from_SDHC_.2F_suspend_problems





More information about the community mailing list