[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