View previous topic :: View next topic |
Author |
Message |
Guest
|
create file in mmc using FAT16 |
Posted: Wed Aug 17, 2005 8:45 am |
|
|
BootSector=0
FirstSectorLba=00000000
BPB_BytsPerSec=0200h
BPB_SecPerClus=04h
BPB_RsvdSecCnt=0006h
BPB_NumFats=02h
BPB_RootEntCnt=0200h
BPB_TotSec16=0000h
BPB_Media=f8h
BPB_FATSz16=00f5h
BPB_TotSec32=0003d400h
BPB_FATSz32=c4290000h
Fat1Lba=00000006h
RootDirSectors=00000020h
FirstRootDirSecNum=000001f0
FirstDataSector=00000210
CountOfClusters=0000f47c
Volume is Fat16
************************************
FILE ENTRY AT 0x000001F0
4D4D43202020202074787420184D6C580F330F3300006A580F33020003000000
FIRST DATA SECTOR AT 0x00000210
4D4D430000000000000000000000000000000000000000000000000000000000
FAT1 AT 0x00000006
F8FFFFFFFFFF0000000000000000000000000000000000000000000000000000
FAT2 AT 0x000000FB
F8FFFFFFFFFF0000000000000000000000000000000000000000000000000000
I want to create mmc.txt and load "mmc" into the file
When I initialize MMC like this winhex see file properly.windows see,too. but says "can't find the file..."
what is wrong here?.What will I do other than these. |
|
|
Douglas Kennedy
Joined: 07 Sep 2003 Posts: 755 Location: Florida
|
|
Posted: Wed Aug 17, 2005 1:47 pm |
|
|
It's a long time since I worked with this. You have the basic items a duplicate FAT table ( FAT1 and FAT2 and a cluster table to allocate sectors.
Windows will expect a tile fully describing the file attributes and a filesize in bytes. A way to probe into this is to create a file within windows mmcw.txt and compare it with what you have done with mmc.txt and your PIC code using winhex. Windows messages are notoriously non specific so "file not found" might mean there is no file size or the file name tile isn't fully described ( a catch all if something is not quite right). Remember the file name tile thing was a bit of a microsoftee kludge to get compatability between DOS 8.3 names and windows names of longer length.... you'll need to reproduce the tiles as kludgy as the softees expect them to avoid a possible catch all error trap ("file not found"). |
|
|
erhan
Joined: 17 Aug 2005 Posts: 7
|
|
Posted: Wed Aug 17, 2005 1:56 pm |
|
|
When I create file within windows and compare to pic it is completely same.mbr,rootdirsector,fat1table,fat2table and datasector is same.But still says can't find the file |
|
|
Douglas Kennedy
Joined: 07 Sep 2003 Posts: 755 Location: Florida
|
|
Posted: Wed Aug 17, 2005 2:27 pm |
|
|
Well if it's truly identical then there is no reason or way for windows to detect any difference so perhaps there is something different between your PIC created file and windows
I found these comments I have in my code from a long time ago.
look at byte 11 it is either 00 or 0F if I have this right you have 20 there
Next what are you writing for the filesize it should be zero on a create and incremented as bytes are added to the file? You will need to look at the data area pointed to by the first cluster and compare between the windows created file and the PIC created file.
Also I think Microsoft needs an 0A termination byte in the data area.
They may at times cross check the filesize to the actual bytes in the file by reading up to the 0A.
Code: |
// decode the FAT16 entries
// a tile is 32 bytes
// std dos files take one tile
// a long file name has multiple tiles
// starting with the last down to the first and
// then a std dos tile is found
// byte 11 is 0x0f for LNF tiles and 0x00 for std
// we skip the LNF and goto STD tile
|
|
|
|
sseidman
Joined: 14 Mar 2005 Posts: 159
|
|
Posted: Wed Aug 17, 2005 2:59 pm |
|
|
http://www.mpic3.com/downloads/ has code written in CCS to read FAT16 off of a CF card. I don't know if it supports writes, but maybe it will help
Scott |
|
|
Guest
|
|
Posted: Thu Aug 18, 2005 1:01 am |
|
|
there is no MBR after formatted the MMC.first partition boot record starts address 0x00
is this the reason why I can't create file properly
but windows can create |
|
|
Douglas Kennedy
Joined: 07 Sep 2003 Posts: 755 Location: Florida
|
|
Posted: Thu Aug 18, 2005 5:23 am |
|
|
In one post you say
Quote: | When I create file within windows and compare to pic it is completely same.mbr,rootdirsector,fat1table,fat2table and datasector is same.But still says can't find the file
|
Now you say
Quote: |
there is no MBR after formatted the MMC.first partition boot record starts address 0x00
is this the reason why I can't create file properly
but windows can create
|
The above posts appear inconsistent to me but maybe they're not.
It might be difficult to accept but the most likely source of your issue is probably something you might have done carelessly.
I would double /triple check your assumptions about things being identical.
I have some code in the library section of this forum that opens a file that might be of help to you. I believe this code would error your PIC created file with file not found ( byte 11 counting from zero is 20) as you say windows is doing. |
|
|
erhan
Joined: 17 Aug 2005 Posts: 7
|
|
Posted: Thu Aug 18, 2005 6:35 am |
|
|
I create mmc.txt and load "MMC" within windows.
this is file entry at 0x3E000
4D4D43202020202054585420183A777A1233123300008D5C1233020005000000
these are file data at 0x42000
4D4D430D0A000000000000000000000000000000000000000000000000000000
these are in FAT1 at 0x000C00
F8FFFFFFFFFF0000000000000000000000000000000000000000000000000000
these are in FAT2 at 0x01F600
F8FFFFFFFFFF0000000000000000000000000000000000000000000000000000
I am writing to same location and same data.When I write 0x00 to attribute still says can't find.
Sorry I Am wrong about MBR.I wanted to say partition record in my first message |
|
|
Douglas Kennedy
Joined: 07 Sep 2003 Posts: 755 Location: Florida
|
|
Posted: Thu Aug 18, 2005 8:40 am |
|
|
I'd do the following
Under windows
format the MMC
don't create a seperate folder(sub directory) at this stage wait till things are working
create a file MMCW.TXT
add using note pad the payload MMCW to the file.
Check you can read the file with windows
With your PIC code
create a flie MMC.TXT
add a payload of MMC to your file
Read the MMC with windows to see if MMCW.txt and/or MMC.txt show up
If both don't show you probably messed things up big time.
If MMCW.txt shows but MMC.txt doesn't you probably only messed up the PIC create.
Using winhex compare both files....I seem to remember WINHEX uses a relative ( logical) address so the displacements aren't physical but it shouldn't matter as far as comparing goes. The only differences in content ( aprt from that fact that the pointers will reference different locations)should be the extra "W" in the 32 byte filename tile, an extra "W" in the file payload and an extra byte in the filesize count.
You may not have noticed but most people post their code when asking for help....your create file code would be a good place for you to start.
Even PGM programmer, Mark and others who have taught me more than I ever dreamed, still from time to time need to look at actual code. |
|
|
erhan
Joined: 17 Aug 2005 Posts: 7
|
|
Posted: Thu Aug 18, 2005 9:39 am |
|
|
I feel terrible.I am sorry Douglas.I wasted your time.I did big mistake.I learned that extension must be capital.I changed 747874 to 545854 and I open the file now.
Thanks for your help... |
|
|
|