This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch to allow disk support to work with non CHS devices


Hi Andrew,

Is there any way i can easily test this?

My understanding is that the LBA entries in the MBR should be valid even when the disk supports CHS, so changing


cyg_disk_identify_t ident;

       ident.serial[0]       = '\0';
       ident.firmware_rev[0] = '\0';
       ident.model_num[0]    = '\0';
       ident.lba_sectors_num = synth_info->size / 512;
       ident.cylinders_num   = synth_info->cylinders_num;
       ident.heads_num       = synth_info->heads_num;
       ident.sectors_num     = synth_info->sectors_num;

       if (!(chan->callbacks->disk_init)(tab))
           return false;
       if (ENOERR != (chan->callbacks->disk_connected)(tab, &ident))
           return false;

to

       ident.cylinders_num   = 0
       ident.heads_num       = 0;
       ident.sectors_num     = 0;

in the synth disk driver should still work *if* the MBR LBA data is valid.

The same thing should work with the ide driver if the disk MBR has all the information with a few caveats such as some older versions of fdisk are reported to put duff values in the LBA entries. There is also an issue that CHS address mode has a limit of 16,515,072 sectors, which is ~8Gb whereas LBA addressing extends this to ~2 Tb. My understanding is that when dealing with partitions beyond the 8Gb size, the packed CHS information in the 'Start of partition' and 'End of partition' fields should be set to the maximum possible, signalling that only the LBA address should be used, but this patch doesn't address that.

The issue that I'm addressing here relates to SD cards (which is what I'm working on at present) where the specs say that the LBA data should be used as the CHS data is impossible to decode as there appears to be no fixed values for the number of heads/sectors. Therefore a method is needed to force the LBA data to be used.

Sorry if this don't help any....

Andy..

----- Original Message ----- From: "Andrew Lunn" <andrew@lunn.ch>
To: "Andy Jackson" <andy@xylanta.com>
Cc: "eCos Patches" <ecos-patches@ecos.sourceware.org>
Sent: Monday, August 21, 2006 2:34 PM
Subject: Re: Patch to allow disk support to work with non CHS devices



On Sun, Aug 20, 2006 at 11:09:23PM +0100, Andy Jackson wrote:
The attached patch allows a non CHS disk type device (flash based for
example) to signal that the LBA information in the MBR should be used to
determine disk/partition size rather than the CHS values. It also makes
debugging CDL controlled.

Hi Andy


Is there any way i can easily test this? What i normally do is uses
the synthetic target with its synthetic disk support, which just uses
a file to represent the disk. The script
packages/fs/fat/current/doc/mkdisk0 uses the mtools mpartition to
create a "disk" with two partitions. It would be nice if there was
some way to create a disk using LBA for testing.

Do you have any ideas about this?

Thanks
Andrew


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]