Re: 4430SDP boot failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 06, 2011 at 08:51:07PM +0000, Russell King - ARM Linux wrote:
> On Thu, Jan 06, 2011 at 12:34:32PM -0800, Tony Lindgren wrote:
> > * Tony Lindgren <tony@xxxxxxxxxxx> [110106 11:52]:
> > > --- a/arch/arm/boot/compressed/head.S
> > > +++ b/arch/arm/boot/compressed/head.S
> > > @@ -71,6 +71,23 @@ wait:		mrc	p14, 0, pc, c0, c1, 0
> > >  		mov	\rb, #0x50000000
> > >  		add	\rb, \rb, #0x4000 * CONFIG_S3C_LOWLEVEL_UART_PORT
> > >  		.endm
> > > +#elif defined(CONFIG_ARCH_OMAP2PLUS)
> > > +#include <plat/multi.h>
> > > +#ifdef MULTI_OMAP2)
> >                      ^
> > Looks like my last change to this patch from if defined to ifdef
> > broke the warning above with an unbalanced bracket..
> > 
> > Thanks Nishant for catching that, updated patch below.
> 
> Just tried that patch, but I now have bigger problems:
> 
> OMAP44XX SDP # mmcinit 0
> OMAP44XX SDP # fatload mmc 0 0x80300000 uImage-test
> 
> 0 bytes read
> OMAP44XX SDP #
> 
> God knows why it's doing this now, as the file is present on the SD
> card:
> 
> -rwxr-xr-x. 1 rmk rmk 1836636 Jan  6 20:35 uImage-test
> 
> is what's on the SD card - with no FAT errors:
> 
> $ fsck.msdos /dev/mmcblk0p1
> dosfsck 3.0.1, 23 Nov 2008, FAT32, LFN
> /dev/mmcblk0p1: 8 files, 10249/142266 clusters
> 
> The file's not corrupt either:
> 
> $ md5sum /media/boot/uImage-test
> be3edd928f1dbb3c15215b1a8a62fa1f  /media/boot/uImage-test
> $ md5sum ../build/omap4/arch/arm/boot/uImage
> be3edd928f1dbb3c15215b1a8a62fa1f  ../build/omap4/arch/arm/boot/uImage
> 
> Nope, still won't work:
> 
> OMAP44XX SDP # setenv bootargs 'root=/dev/mmcblk0p2 rw mem=512M vmalloc=1G console=ttyO2,115200n8 rootdelay=2'
> OMAP44XX SDP # mmcinit 0
> OMAP44XX SDP # fatload mmc 0 0x80300000 uImage-test
> 
> 0 bytes read
> OMAP44XX SDP #
> 
> However, it can still boot the uImage contained on the SD card, so the
> card must be okay, and the SDP must still be able to successfully read
> from the card.  I can only assume that uboot's FAT support is buggered
> in some way.
> 
> We _really_ need a _decent_ boot loader on these boards, one which can
> do network booting _and_ can be configured to do so from bootup.  SD
> cards just don't hack it for kernel development.  It's a far too long-
> winded process for each cycle, and with all the additional problems
> (such as SD cards not being recognised 50% of the time, FAT filesystem
> bugs in boot loaders, etc) it's really not funny.
> 
> So, I give up at this point with the OMAP4430SDP board.  It's not worth
> spending the time with this kind of unreliability.

OMAP44XX SDP # fatls mmc 0

  1935000   uimage
   149104   u-boot.bin
    18984   mlo
  1836636   uimage-test
  1130288   uimage-ss
    19040   mlo.old
Invalid FAT entry

6 file(s), 0 dir(s)

"Invalid FAT entry" ?  I don't think so.  The thing actually contains:

-rwxr-xr-x. 1 rmk rmk 1935000 Feb  4  2010 uImage
-rwxr-xr-x. 1 rmk rmk  149104 Feb  4  2010 u-boot.bin
-rwxr-xr-x. 1 rmk rmk   18984 Jan  1  2000 mlo
-rwxr-xr-x. 1 rmk rmk 1836636 Jan  6 21:35 uImage-test
-rwxr-xr-x. 1 rmk rmk 1130288 Jan  1  2000 uImage-ss
-rwxr-xr-x. 1 rmk rmk   19040 Feb  4  2010 mlo.old
-rwxr-xr-x. 1 rmk rmk  154904 Jan  1  2000 u-boot.new

The hexdump of the directory on the SD card is:
0011a000  62 6f 6f 74 20 20 20 20  20 20 20 08 00 00 87 b6  |boot       .....|
0011a010  3e 3c 3e 3c 00 00 87 b6  3e 3c 00 00 00 00 00 00  |><><....><......|
0011a020  41 75 00 49 00 6d 00 61  00 67 00 0f 00 46 65 00  |Au.I.m.a.g...Fe.|
0011a030  00 00 ff ff ff ff ff ff  ff ff 00 00 ff ff ff ff  |................|
0011a040  55 49 4d 41 47 45 20 20  20 20 20 20 00 64 6d 65  |UIMAGE      .dme|
0011a050  44 3c 26 3e 00 00 6d 65  44 3c 4a 0e 98 86 1d 00  |D<&>..meD<J.....|
0011a060  41 75 00 2d 00 62 00 6f  00 6f 00 0f 00 30 74 00  |Au.-.b.o.o...0t.|
0011a070  2e 00 62 00 69 00 6e 00  00 00 00 00 ff ff ff ff  |..b.i.n.........|
0011a080  55 2d 42 4f 4f 54 20 20  42 49 4e 20 00 64 6f 65  |U-BOOT  BIN .doe|
0011a090  44 3c bc 3c 00 00 6f 65  44 3c 0e 1d 70 46 02 00  |D<.<..oeD<..pF..|
0011a0a0  41 6d 00 6c 00 6f 00 00  00 ff ff 0f 00 c8 ff ff  |Am.l.o..........|
0011a0b0  ff ff ff ff ff ff ff ff  ff ff 00 00 ff ff ff ff  |................|
0011a0c0  4d 4c 4f 20 20 20 20 20  20 20 20 20 00 00 28 00  |MLO         ..(.|
0011a0d0  21 28 26 3e 00 00 28 00  21 28 21 2d 28 4a 00 00  |!(&>..(.!(!-(J..|
0011a0e0  41 75 00 49 00 6d 00 61  00 67 00 0f 00 4e 65 00  |Au.I.m.a.g...Ne.|
0011a0f0  2d 00 74 00 65 00 73 00  74 00 00 00 00 00 ff ff  |-.t.e.s.t.......|
0011a100  55 49 4d 41 47 45 7e 31  20 20 20 20 00 64 7b ac  |UIMAGE~1    .d{.|
0011a110  26 3e 26 3e 00 00 7b ac  26 3e ce fb 5c 06 1c 00  |&>&>..{.&>..\...|
0011a120  e5 75 00 2d 00 62 00 6f  00 6f 00 0f 00 14 74 00  |.u.-.b.o.o....t.|
0011a130  2e 00 42 00 49 00 32 00  00 00 00 00 ff ff ff ff  |..B.I.2.........|
0011a140  e5 2d 42 4f 4f 54 20 20  42 49 32 20 00 64 6f 65  |.-BOOT  BI2 .doe|
0011a150  44 3c bc 3c 00 00 6f 65  44 3c 0e 1d 70 46 02 00  |D<.<..oeD<..pF..|
0011a160  41 75 00 49 00 6d 00 61  00 67 00 0f 00 6e 65 00  |Au.I.m.a.g...ne.|
0011a170  2d 00 73 00 73 00 00 00  ff ff 00 00 ff ff ff ff  |-.s.s...........|
0011a180  55 49 4d 41 47 45 7e 32  20 20 20 20 00 64 bb 00  |UIMAGE~2    .d..|
0011a190  21 28 26 3e 00 00 bb 00  21 28 76 2e 30 3f 11 00  |!(&>....!(v.0?..|
0011a1a0  41 6d 00 6c 00 6f 00 2e  00 6f 00 0f 00 4e 6c 00  |Am.l.o...o...Nl.|
0011a1b0  64 00 00 00 ff ff ff ff  ff ff 00 00 ff ff ff ff  |d...............|
0011a1c0  4d 4c 4f 20 20 20 20 20  4f 4c 44 20 00 64 73 65  |MLO     OLD .dse|
0011a1d0  44 3c 6a 3c 00 00 73 65  44 3c 32 1e 60 4a 00 00  |D<j<..seD<2.`J..|
0011a1e0  41 75 00 2d 00 62 00 6f  00 6f 00 0f 00 fa 74 00  |Au.-.b.o.o....t.|
0011a1f0  2e 00 6e 00 65 00 77 00  00 00 00 00 ff ff ff ff  |..n.e.w.........|

... and the directory continues in a different sector ...

00a29200  55 2d 42 4f 4f 54 20 20  4e 45 57 20 00 00 3d 00  |U-BOOT  NEW ..=.|
00a29210  21 28 26 3e 00 00 3d 00  21 28 47 2d 18 5d 02 00  |!(&>..=.!(G-.]..|
00a29220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

The relevant parts of the FAT table are:

00004000  f8 ff ff 0f ff ff ff 0f  7b 48 00 00 00 00 00 00  |........{H......|
                                   ^^^^^ entry linking to next root-dir sector
...
000161e0  00 00 00 00 00 00 00 00  00 00 00 00 ff ff ff 0f  |................|
                                               ^^^^^^^^^^^ terminator

Cluster 2 = root dir start.
Cluster 2 image address = 0x119c00 + 2 * 0x200 = 0x11a000.
Cluster 2 FAT address = 0x4000 + 2 * 4 = 0x4008.
Following cluster = 0x487b.
Cluster 0x487b image address = 0x119c00 + 0x487b * 0x200 = 0xa29200
Cluster 0x487b FAT address = 0x4000 + 0x487b * 4 = 0x161ec.
Following cluster = 0x0fffffff = FAT-32 EOF.

So, uboot's FAT code can't deal with a directory larger than one sector
that doesn't continue.  While we're here, lets confirm by hand that
there's nothing wrong with the uImage-test file and it's yet again uboot
being idiotic.

The directory entry for loading my uImage-test file is:
0011a0e0  41 75 00 49 00 6d 00 61  00 67 00 0f 00 4e 65 00  |Au.I.m.a.g...Ne.|
0011a0f0  2d 00 74 00 65 00 73 00  74 00 00 00 00 00 ff ff  |-.t.e.s.t.......|
0011a100  55 49 4d 41 47 45 7e 31  20 20 20 20 00 64 7b ac  |UIMAGE~1    .d{.|
0011a110  26 3e 26 3e 00 00 7b ac  26 3e ce fb 5c 06 1c 00  |&>&>..{.&>..\...|

Decoding this entry gives:
 creation time = 0xac7b
 creation date = 0x3e26
 access date = 0x3e26
 time = 0xac7b
 date = 0x3e26
 start cluster = 0x0000fbce
 size = 0x001c065c (1836636 bytes)

Cluster 0xfbce = image address 0x119c00 + 0xfbce*0x200 = 0x2093800:
Cluster 0xfbce FAT entry address = 0x4000 + 0xfbce * 4 = 0x42f38

00042f30  00 00 00 00 00 00 00 00  cf fb 00 00 d0 fb 00 00  |................|
00042f40  d1 fb 00 00 d2 fb 00 00  d3 fb 00 00 d4 fb 00 00  |................|

Next cluster = 0xfbcf, then 0xfbd0 and so on.

The data on the SD card for this file:
02093800  27 05 19 56 76 ed 63 cb  4d 26 27 76 00 1c 06 1c  |'..Vv.c.M&'v....|
02093810  80 00 80 00 80 00 80 00  ad 09 bd ce 05 02 02 00  |................|
02093820  4c 69 6e 75 78 2d 32 2e  36 2e 33 37 2b 00 00 00  |Linux-2.6.37+...|
02093830  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
02093840  00 00 a0 e1 00 00 a0 e1  00 00 a0 e1 00 00 a0 e1  |................|
*
02093860  02 00 00 ea 18 28 6f 01  00 00 00 00 1c 06 1c 00  |.....(o.........|
02093870  01 70 a0 e1 02 80 a0 e1  00 20 0f e1 03 00 12 e3  |.p....... ......|
02093880  01 00 00 1a 17 00 a0 e3  56 34 12 ef 00 20 0f e1  |........V4... ..|

and the corresponding version from my build tree:
00000000  27 05 19 56 76 ed 63 cb  4d 26 27 76 00 1c 06 1c  |'..Vv.c.M&'v....|
00000010  80 00 80 00 80 00 80 00  ad 09 bd ce 05 02 02 00  |................|
00000020  4c 69 6e 75 78 2d 32 2e  36 2e 33 37 2b 00 00 00  |Linux-2.6.37+...|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  00 00 a0 e1 00 00 a0 e1  00 00 a0 e1 00 00 a0 e1  |................|
*
00000060  02 00 00 ea 18 28 6f 01  00 00 00 00 1c 06 1c 00  |.....(o.........|
00000070  01 70 a0 e1 02 80 a0 e1  00 20 0f e1 03 00 12 e3  |.p....... ......|
00000080  01 00 00 1a 17 00 a0 e3  56 34 12 ef 00 20 0f e1  |........V4... ..|

matches.  So there's no problem here with the filesystem itself - it's
just uboot not parsing the FAT filesystem correctly.  I *really* want
to throw this version of uboot in the circular filing cabinet now.

Can we _please_ have a version of uboot for the SDP4430 platform which
can be configured at runtime _and_ which is capable of DHCP/TFTP ?
I really don't want to mess about anymore with buggy boot loaders.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux