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

Joey Oravec joravec at drewtech.com
Wed Jun 13 17:54:46 CEST 2007


Hi all,

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 
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?

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?

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?

Thanks!

-joey 







More information about the U-Boot mailing list