[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