MMC / SD-kort FAT16 interface!

M

member_tdh

Guest
Hej alle medlemmer!

Hav en god dag!

Nu, dette
er min fritid.Jeg studerer MMC / SD-kortlæser (mikro).Den read_sector () & write_sector () for MMC / SD-kort --->>> Korrekt!

Mit problem:
- Fat_search_file () funktion ikke fungere korrekt!

kode:
usignerede CHAR fat_search_file (usignerede char * Filnavn, usignerede int * Cluster, usignerede længe * Størrelse, usignerede char * Dir_Attrib, usignerede char * buffer)
(
usignerede CHAR a;
usignerede int Dir_Cluster_Store = 0;

Dir_Cluster_Store = * Cluster;

for (a = 0; en <100 a )
(
* Cluster = fat_read_dir_ent (Dir_Cluster_Store, a, Størrelse, Dir_Attrib, buffer);
if (* Cluster == 0xFFFF)
(
vender tilbage (0) / / File not Found
)
if (strcmp ((char *) Filnavn, (char *) buffer) == 0)
(
afkast (1); / / File Found
)
)
tilbagevenden (2); / / Error
)

behage hjælp mig tjekke den!

"myfat.h":/*################################################ #######################################
Slut ARM til MMC / SD

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

# ifndef _FAT_H_
# define _FAT_H_

/ / Prototyper
Eksterne usignerede int fat_root_dir_addr (usignerede char *);
Eksterne usignerede int fat_read_dir_ent (usignerede int, usignerede CHAR, usignerede længe *, usignerede char *, usignerede char *);
Eksterne void fat_load (usignerede int, usignerede længe *, usignerede char *);
Eksterne void fat_read_file (usignerede int, usignerede char *, usignerede lang);
Eksterne void fat_write_file (usignerede int, usignerede char *, usignerede lang);
Eksterne void fat_init (void);
Eksterne usignerede CHAR fat_search_file (usignerede char *, usignerede int *, usignerede længe *, usignerede char *, usignerede char *);

/ / Block Size i Bytes
/ / # define BlockSize 512

/ / Master Boot Record
# define MASTER_BOOT_RECORD 0

/ / Bind Boot Record placering i Master Boot Record
# define VBR_ADDR 0x1C6

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

/ / define 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

/ / Partitionstypen anvendes i partitionstabellen record
# 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

/ / Nogle nyttige klynge numre
# define MSDOSFSROOT 0 / / klynge 0 betyder root dir
# define CLUST_FREE 0 / / klynge 0 betyder også en gratis klynge
# define MSDOSFSFREE CLUST_FREE
# define CLUST_FIRST 2 / / første juridiske klynge antal
# define CLUST_RSRVD 0xfffffff6 / / reserveret klynge række
# define CLUST_BAD 0xfffffff7 / / en klynge med en defekt
# define CLUST_EOFS 0xfffffff8 / / starten af eof klynge række
# define CLUST_EOFE 0xFFFFFFFF / / udgangen af eof klynge række

# define FAT12_MASK 0x00000fff / / maske for 12 bit klynge numre
# define FAT16_MASK 0x0000ffff / / maske for 16 bit klynge numre
# define FAT32_MASK 0x0fffffff / / maske for FAT32 klynge numre

struct BootSec
(
usignerede CHAR BS_jmpBoot [3];
usignerede CHAR BS_OEMName [8];
usignerede int BPB_BytesPerSec; / / 2 bytes, med rekordhastighed 11:12
usignerede CHAR BPB_SecPerClus / / På optage 13
usignerede int BPB_RsvdSecCnt; / / 2 bytes, med rekordhastighed 14:15
usignerede CHAR BPB_NumFATs / / På optage 16
usignerede int BPB_RootEntCnt; / / 2 bytes
usignerede int BPB_TotSec16; / / 2 bytes
usignerede CHAR BPB_Media / /
usignerede int BPB_FATSz16; / / 2 bytes
usignerede int BPB_SecPerTrk; / / 2 bytes
usignerede int BPB_NumHeads; / / 2 bytes
usignerede længe BPB_HiddSec; / / 4 bytes
usignerede længe BPB_HugeSectors / /
usignerede længe BPB_RootClust / / start klynge for rodbibliotek
usignerede længe BPB_TotSec32; / / 4 bytes
);

struct partrecord / / længde 16 bytes
(
BYTE prIsActive / / 0x80 indikerer aktive partition
BYTE prStartHead / / starter hovedet for partition
WORD prStartCylSect / / starter cylinder og sektor
BYTE prPartType / / partition type (se ovenfor)
BYTE prEndHead / / slutter hovedet for denne partition
WORD prEndCylSect / / slutter cylinder og sektor
DWORD prStartLBA / / første LBA sektor for denne partition
DWORD prSize / / størrelsen på denne partition (byte eller sektorer?)
);

struct partsector
(
CHAR psPartCode [512-64-2]; / / pad så struct er 512b
BYTE psPart [64] / / fire partition optegnelser (64 bytes)
BYTE psBootSectSig0 / / to signatur bytes (2 bytes)
BYTE psBootSectSig1;
);

/ / FAT12 og FAT16 Struktur Begynder ved 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 Struktur Begynder ved 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 og BPB Struktur

struct DirEntry (
usignerede CHAR DIR_Name [11] / / 8 tegn filnavn
usignerede CHAR DIR_Attr / / filattributter RSHA, Longname, Drive Label, Directory
usignerede CHAR DIR_NTRes / / nulstilles
usignerede CHAR DIR_CrtTimeTenth; / / oprettelse tid del i millisekunder
usignerede int DIR_CrtTime; / / oprettelse tid
usignerede int DIR_CrtDate / / oprettelsesdato
usignerede int DIR_LastAccDate / / sidste adgang dato
usignerede int DIR_FstClusHI / / første klynge høje ord
usignerede int DIR_WrtTime / / sidste skrive tid
usignerede int DIR_WrtDate / / sidste skrive dato
usignerede int DIR_FstClusLO / / første klynge lave ord
usignerede længe DIR_FileSize;
);

# endif / / _FAT_H_

 
Ingen hjælper mig!

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Gråd eller meget trist" border="0" />
 
hvorfor ingen hjælpe mig???

<img src="http://www.edaboard.com/images/smiles/icon_question.gif" alt="Spørgsmål" border="0" />
 
Jeg kan hjælpe dig, hvis du giver hele koden.
Jeg er ikke at få noget med disse uddrag.

 

Welcome to EDABoard.com

Sponsor

Back
Top