[U-Boot-Users] FAT mbr on MMC or SD cards
Joey Oravec
joravec at drewtech.com
Wed Jun 13 22:59:00 CEST 2007
"Wolfgang Denk" <wd at denx.de> wrote in message
news:20070613184133.A9478352681 at atlas.denx.de...
>> 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.
I wanted to share that with the list in case anybody else gets stuck.
Since my original email, I noticed code in fat_register_device() which
determines a part_offset for 1.1.5 and 1.1.6. For now I've hacked this code
to check the first three bytes EB:xx:90 or E9:xx:xx to make the mbr/pbr
decision instead of the ascii string. Also I have it reading the valid
partition offset instead of assuming 32. And finally I added a packed
attribute to all structs.
>> 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...
I was reading a document "FAT: General Overfiew of On-Disk Format" v1.02 May
5, 1999 by Microsoft Corporation. The correct way is to calculate
CountofClusters. Less than 4085 is FAT12, less than 65525 is FAT16, anything
else is FAT32. I'll watch, and after he gets back from vacation we can do
something about it.
-joey
More information about the U-Boot
mailing list