MMC / SD-kortin FAT16 rajapinnat!

M

member_tdh

Guest
Hei kaikki jäsenet!

Have a nice day!

Nyt tämä
on minun vapaa-aika.Olen opiskelu MMC / SD-kortin lukija (mikro).The read_sector () & write_sector () ja MMC / SD-kortti --->>> Oikein!

Oma ongelma:
- Fat_search_file ()-toiminto ei toimi oikein!

koodi:
unsigned char fat_search_file (unsigned char * Tiedostonimi, unsigned int * Cluster, unsigned pitkiä * koko, unsigned char * Dir_Attrib, unsigned char * puskuri)
(
unsigned char a;
unsigned int Dir_Cluster_Store = 0;

Dir_Cluster_Store = * Cluster;

(a = 0, a <100 a )
(
* Cluster = fat_read_dir_ent (Dir_Cluster_Store, a, koko, Dir_Attrib, puskuri);
if (* Cluster == 0xFFFF)
(
paluu (0); / / tiedostoa ei löydy
)
if (strcmp ((char *) Tiedostonimi, (char *) Puskurin) == 0)
(
paluu (1); / / File Found
)
)
palaa (2); / / Error
)

haluta auttaa we check it!

"myfat.h":/*################################################ #######################################
Liitä ARM on MMC / SD

Copyright (C) 2004 Ulrich Radig
################################################## #####################################*/

# ifndef _FAT_H_
#
define _FAT_H_

/ / Prototyypit
extern unsigned int fat_root_dir_addr (unsigned char *);
extern unsigned int fat_read_dir_ent (unsigned int, unsigned char, unsigned kauan *, unsigned char *, unsigned char *);
extern mitätön fat_load (unsigned int, unsigned kauan *, unsigned char *);
extern mitätön fat_read_file (unsigned int, unsigned char *, unsigned long);
extern mitätön fat_write_file (unsigned int, unsigned char *, unsigned long);
extern mitätön fat_init (void);
extern unsigned char fat_search_file (unsigned char *, unsigned int *, unsigned kauan *, unsigned char *, unsigned char *);

/ / Block koko tavuina
/ / #
define BlockSize 512

/ / Master Boot Record
#
define MASTER_BOOT_RECORD 0

/ / Nide Boot Record sijainti Master Boot Record
#
define VBR_ADDR 0x1C6

/ / määritellä ASCII
#
define SPACE 0x20
#
define DIR_ENTRY_IS_FREE 0xE5
#
define FIRST_LONG_ENTRY 0x01
#
define SECOND_LONG_ENTRY 0x42

/ / määrittää DIR_Attr
#
define ATTR_LONG_NAME 0x0F
#
define ATTR_READ_ONLY 0x01
#
define ATTR_HIDDEN 0x02
#
define ATTR_SYSTEM 0x04
#
define ATTR_VOLUME_ID 0x08
#
define ATTR_DIRECTORY 0x10
#
define ATTR_ARCHIVE 0x20

/ / Partition Type käytetty osio kirjaa
#
define PART_TYPE_UNKNOWN 0x00
#
define PART_TYPE_FAT12 0x01
#
define PART_TYPE_XENIX 0x02
#
define PART_TYPE_DOSFAT16 0x04
#
define PART_TYPE_EXTDOS 0x05
#
define PART_TYPE_FAT16 0x06
#
define PART_TYPE_NTFS 0x07
#
define PART_TYPE_FAT32 0x0B
#
define PART_TYPE_FAT32LBA 0x0C
#
define PART_TYPE_FAT16LBA 0x0E
#
define PART_TYPE_EXTDOSLBA 0x0F
#
define PART_TYPE_ONTRACK 0x33
#
define PART_TYPE_NOVELL 0x40
#
define PART_TYPE_PCIX 0x4B
#
define PART_TYPE_PHOENIXSAVE 0xA0
#
define PART_TYPE_CPM 0xDB
#
define PART_TYPE_DBFS 0xE0
#
define PART_TYPE_BBT 0xFF

/ / Joitakin hyödyllisiä klusterin numerot
#
define MSDOSFSROOT 0 / / cluster 0 tarkoittaa root dir
#
define CLUST_FREE 0 / / cluster 0 tarkoittaa myös vapaa-klusterin
#
define MSDOSFSFREE CLUST_FREE
#
define CLUST_FIRST 2 / / ensimmäinen oikeudellinen klusterin numero
#
define CLUST_RSRVD 0xfffffff6 / / varattu klusterin valikoima
#
define CLUST_BAD 0xfffffff7 / /, jonka osaaminen on puutteellinen
#
define CLUST_EOFS 0xfffffff8 / / alussa EOF klusterin valikoima
#
define CLUST_EOFE 0xffffffff / / lopussa EOF klusterin valikoima

#
define FAT12_MASK 0x00000fff / / mask 12 bittinen klusterin numerot
#
define FAT16_MASK 0x0000ffff / / mask 16 bittinen klusterin numerot
#
define FAT32_MASK 0x0fffffff / / mask varten FAT32 klusterin numerot

struct BootSec
(
unsigned char BS_jmpBoot [3];
unsigned char BS_OEMName [8];
unsigned int BPB_BytesPerSec; / / 2 tavua, At kirjaa 11:12
unsigned char BPB_SecPerClus; / /
AT kirjaa 13
unsigned int BPB_RsvdSecCnt; / / 2 tavua, At kirjaa 14:15
unsigned char BPB_NumFATs; / /
AT kirjaa 16
unsigned int BPB_RootEntCnt; / / 2 tavua
unsigned int BPB_TotSec16; / / 2 tavua
unsigned char BPB_Media; / /
unsigned int BPB_FATSz16; / / 2 tavua
unsigned int BPB_SecPerTrk; / / 2 tavua
unsigned int BPB_NumHeads; / / 2 tavua
unsigned kauan BPB_HiddSec; / / 4 tavua
unsigned kauan BPB_HugeSectors; / /
unsigned kauan BPB_RootClust; / /
käynnistys Cluster juurihakemistosta
unsigned kauan BPB_TotSec32; / / 4 tavua
);

struct partrecord / / pituus on 16 tavua
(
BYTE prIsActive; / / 0x80 osoittaa aktiivisen osion
BYTE prStartHead; / / alkaen eläinkohtaisten osio
WORD prStartCylSect; / / alkaen sylinteri ja alan
BYTE prPartType; / / tyyppi (ks. edellä)
BYTE prEndHead; / / päättyy päätä tämän osion
WORD prEndCylSect; / / päättyy mittalasiin ja alan
DWORD prStartLBA; / /
first LBA alan tämä osio
DWORD prSize; / / koko tämän osion (tavua tai aloilla?)
);

struct partsector
(
char psPartCode [512-64-2]; / / pad niin struct on 512b
BYTE psPart [64]; / / neljän osion kirjaa (64 bytes)
BYTE psBootSectSig0; / /
kaksitahtinen allekirjoitus bytes (2 tavua)
BYTE psBootSectSig1;
);

/ / FAT12 ja FAT16 rakenne alkaen Offset 36
#
define BS_DRVNUM 36
#
define BS_RESERVED1 37
#
define BS_BOOTSIG 38
#
define BS_VOLID 39
#
define BS_VOLLAB 43
#
define BS_FILSYSTYPE 54

/ / FAT32 rakenne alkaen Offset 36
#
define BPB_FATSZ32 36
#
define BPB_EXTFLAGS 40
#
define BPB_FSVER 42
#
define BPB_ROOTCLUS 44
#
define BPB_FSINFO 48
#
define BPB_BKBOOTSEC 50
#
define BPB_RESERVED 52

#
define FAT32_BS_DRVNUM 64
#
define FAT32_BS_RESERVED1 65
#
define FAT32_BS_BOOTSIG 66
#
define FAT32_BS_VOLID 67
#
define FAT32_BS_VOLLAB 71
#
define FAT32_BS_FILSYSTYPE 82
/ / End of Boot Sctor ja BPB: n rakenne

struct DirEntry (
unsigned char DIR_Name [11]; / / 8 merkkiä filename
unsigned char DIR_Attr; / / tiedostomääritteet RSHA, Longname Asema Label, Directory
unsigned char DIR_NTRes; / / nolla
unsigned char DIR_CrtTimeTenth; / / luomisen aikaa osa millisekunteina
unsigned int DIR_CrtTime; / / luomisen aikaa
unsigned int DIR_CrtDate; / / luontipäivämäärä
unsigned int DIR_LastAccDate; / / viimeisin pääsy päivämäärä
unsigned int DIR_FstClusHI; / /
first klusterin korkea sana
unsigned int DIR_WrtTime; / / viimeisin kirjoittaa aika
unsigned int DIR_WrtDate; / / viimeisin kirjoittaa päivämäärä
unsigned int DIR_FstClusLO; / /
first klusterin alhainen sana
unsigned kauan DIR_FileSize;
);

# endif / / _FAT_H_

 
Kukaan ei auta minua!

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying tai Erittäin surullista" border="0" />
 
miksi kukaan auttaa minua?

<img src="http://www.edaboard.com/images/smiles/icon_question.gif" alt="Kysymys" border="0" />
 
Voin auttaa sinua jos annat koko koodin.
En saa mitään näistä katkelmia.

 

Welcome to EDABoard.com

Sponsor

Back
Top