From mboxrd@z Thu Jan 1 00:00:00 1970 From: michael Date: Thu, 24 Apr 2008 09:59:57 +0200 Subject: [U-Boot-Users] USB SUPPORT & get_vfatname In-Reply-To: References: Message-ID: <48103DFD.1050500@gandalf.sssup.it> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Ken.Fuchs at bench.com wrote: Ok, check your fat.h and your fsdata typedef struct { __u8 fatbuf[FATBUFSIZE]; /* Current FAT buffer */ int fatsize; /* Size of FAT in bits */ __u16 fatlength; /* Length of FAT in sectors */ __u16 fat_sect; /* Starting sector of the FAT */ __u16 rootdir_sect; /* Start sector of root directory */ __u16 clust_size; /* Size of clusters in sectors */ short data_begin; /* The sector of the first cluster, can be negative */ int fatbufnum; /* Used by get_fatent, init to -1 */ } fsdata; The fatbuf is on the top? Regards Michael > Michael, > > Sorry, your latest get_vfatname patch doesn't work either. > > FAT16 works perfectly, so the USB code is probably _not_ at fault. I see only problems with FAT32, but only for _some_ long collections of files. > > Thus, there may still be a problem with fs/fat/fat.c. Maybe there is something wrong with my copy of fat.c I attached it; Perhaps you can see a problem with it. > > Sincerely, > > Ken Fuchs > > >> -----Original Message----- >> From: michael [mailto:trimarchi at gandalf.sssup.it] >> Sent: Wednesday, April 23, 2008 06:16 >> To: michael >> Cc: Fuchs, Ken; u-boot-users at lists.sourceforge.net; Wolfgang Denk >> Subject: Re: [U-Boot-Users] USB SUPPORT & get_vfatname >> >> >> Hi, >> >> michael wrote: >> >>> Hi, >>> >>> Can you try this one? >>> >>> Revert my last one patch? >>> It change the test code, before the while. I use your script on a >>> Compact Flash and it looks fine for me (under linux). >>> >>> Regards Michael >>> >>> >>> >> -------------------------------------------------------------- >> ---------- >> >>> Check if the entry is a valid dir_slot entry, otherwise it >>> >> is a dentry and the >> >>> name has to be taken by the get_name function >>> >>> Signed-off-by: michael trimarchi >>> >>> --- >>> fs/fat/fat.c | 7 +++++++ >>> 1 files changed, 7 insertions(+), 0 deletions(-) >>> >>> diff --git a/fs/fat/fat.c b/fs/fat/fat.c >>> index 49c78ed..bc37cec 100644 >>> --- a/fs/fat/fat.c >>> +++ b/fs/fat/fat.c >>> @@ -473,8 +473,14 @@ get_vfatname(fsdata *mydata, int >>> >> curclust, __u8 *cluster, >> >>> while (slotptr2->id > 0x01) { >>> slotptr2++; >>> } >>> + >>> /* Save the real directory entry */ >>> realdent = (dir_entry*)slotptr2 + 1; >>> + if (slotptr2->attr != ATTR_VFAT) { >>> + get_name ((dir_entry *)realdent, l_name); >>> + goto out; >>> + } >>> + >>> while ((__u8*)slotptr2 >= get_vfatname_block) { >>> slot2str(slotptr2, l_name, &idx); >>> slotptr2--; >>> @@ -494,6 +500,7 @@ get_vfatname(fsdata *mydata, int >>> >> curclust, __u8 *cluster, >> >>> else if (*l_name == aRING) *l_name = '?'; >>> downcase(l_name); >>> >>> +out: >>> /* Return the real directory entry */ >>> memcpy(retdent, realdent, sizeof(dir_entry)); >>> >>> >>> >> The scripts in this thread can be used to test the fat32 >> filesystem. I >> do some tests using Compact Flash >> device and this patchs work for me. I would like to know if is a fat >> layer problem or usb layer problem. >> >> Michael >> >> >>