[U-Boot-Users] FAT mbr on MMC or SD cards

Wolfgang Denk wd at denx.de
Wed Jun 13 20:41:33 CEST 2007


In message <f4p407$8qj$1 at sea.gmane.org> you wrote:
> 
> I've been testing a wide variety of MMC/SD cards straight out of the 
> package. Some cards have a MBR at sector 0 (like a hard drive) while others 
> are unpartitioned with a volume boot sector at sector 0 (like a floppy). And 
> it might change if you reformat the card.
> 
> I'm still on 1.1.5, but I didn't see any major changes in 1.1.6. Within 

Comparing to ancient versions probably shows little difference in that
area. indeed.

> fs/fat/fat.c one of the first functions file_fat_detectfs() calls 
> read_bootsectandvi(). I think I need to make, and then submit patches for, a 
> few changes:
> 
> 1. This code assumes that sector 0 contains a VBR. Instead I think it should 
> decide if 0 is an MBR or VBR, or even better utilize the dev:part command 
> line. Can I make this determination that from the first three bytes, or is 
> there a better way?

We have a patch in the queue to fix this, but it  did  not  pass  our
internal  review  and unfortunately the engineer is on vacation right
now so he cannot clean it up. Please be patiend for a week or two.

> 2. The decision of fat12, fat16, and fat32 is made upon fat_length and an 
> ascii field. The Microsoft document claims that the determination shall be 
> made only by the count of clusters. Any disputes on that fix?

I have no idea...

> 3. Structure boot_sector may need a packed attribute. As far as I can tell 
> there are no makefile flags so gcc is free to add padding to align members 
> inside structures. This would be a problem for the memcpy from block to 
> boot_sector within read_bootsectandvi(). What is the coding standard for 
> specifying 1-byte packing where necessary? Just add the gcc attribute?

Just add "__attribute__ ((packed))".

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
If I can have honesty, it's easier to overlook mistakes.
	-- Kirk, "Space Seed", stardate 3141.9




More information about the U-Boot mailing list