⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fs_fat.h

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 H
字号:
/*
$Log: fs_fat.h,v $
Revision 1.5  2007/12/12 02:39:04  Fangzhenfu
文件系统更新! FLASH 底层更新!

Revision 1.4  2007/10/08 02:58:14  Lingzhaojun
添加版本自动注释脚本

*/
#ifndef _FS_FAT_H_
#define _FS_FAT_H_

#undef EXT
#ifdef _IN_FS_FAT_
#define EXT
#else
#define EXT extern
#endif

typedef __packed struct tagFS_FDT
{
    uint8 Name[11];      //短文件名主文件名
    uint8 Attr;            //文件属性
    uint8 NTRes;              //保留给NT
    uint8 CrtTimeTenth;       //建立时间(fat16保留)

    uint16 CrtTime;            //建立时间(fat16保留)
    uint16 CrtDate;            //建立日期(fat16保留)
    uint16 LstAccDate;       //最后访问日期(fat16保留)
    uint16 FstClusHI;          //起始簇号高两个字节(fat16保留)
    uint16 WrtTime;            //最后写时间
    uint16 WrtDate;            //最后写日期
    uint16 FstClusLO;          //起始簇(cluster)号低两个字节
    uint32 FileSize;          //文件大小
} FS_FDT;

typedef __packed struct tagFS_LONG_FDT
{
    uint8  Order;
    char  Name1[10];
    uint8  Attr;
    uint8  Type;
    uint8  Chksum;
    char  Name2[12];
    uint16  FstClusLO;
    char  Name3[4];
}FS_LONG_FDT;

typedef __packed struct _FAT_DIR_
{
    uint8   Name[11];
    uint8   Attr;
    uint8   NTRes;
    uint8   CrtTimeTeenth;
    uint16  CrtTime;
    uint16  CrtDate;
    uint16  LastAccDate;
    uint16  FstClusHI;
    uint16  WrtTime;
    uint16  WrtData;
    uint16  FstClusLO;
    uint32  FileSize;
}FAT_DIR;

typedef __packed struct _FAT_LDIR_
{
    uint8   Ord;
    uint8   Name1[10];
    uint8   Attr;
    uint8   Type;
    uint8   ChkSum;
    uint8   Name2[12];
    uint16  FstClusLO;
    uint8   Name3[4];
}FAT_LDIR;

typedef union tagFATENTRY
{
    FAT_DIR  SEntry;
    FAT_LDIR LEntry;
}FS_FAT_ENTRY;

typedef struct tagFSDskSizeToSecPerClus
{
    uint32  DiskSize;  /*磁盘大小(扇区)*/
    uint32  SecPerClus;  /*每簇扇区数*/
}FS_DskSizeToSecPerClus;

typedef struct tagFILE
{
    uint16 Flags;           //一些标志
    char Name[11];      //文件名
    uint32 DirClus;         //所在目录开始簇号
    uint32 FileSize;      //文件大小
    uint32 FstClus;   //起始簇号
    uint32 Clus;        //当前簇号
    uint32 Offset;       //文件指针偏移量
    uint32 RefClus;      //当前簇号
    uint32 RefOffset;      //文件指针偏移量

    FS_VOLUME   *pVolume;
    int16       err;
}FS_FILE, *PFILE;

typedef struct tagFS_FIND_DATA
{
    FS_VOLUME *pVolume;
    uint32    Index;
    uint32   Clus;        //当前簇号
} FS_FIND_DATA;

typedef struct tagFILE_LFDT_LINK
{
    FS_LONG_FDT FileLFdt[FS_MAX_LFN_ENTRIES];
    FS_FDT      FileFdt;
    uint8 Num;
}FILE_LFDT_LINK;

int    FS_FAT_CheckUnit(FS_VOLUME *pVolume);
void   FS_FAT_MakeRealname(char *pEntryName, const char *pOrgName);
size_t FS_FAT_fread(void *pData, uint32 NumBytes, FS_FILE *hFile);
int    FS_FAT_fclose(FS_FILE *pFile);
uint32 FS_FAT_GetNextClus(FS_VOLUME *pVolume, uint32 Index, uint32 Count);
void   FS_FAT_UpdataFreeMem(FS_VOLUME *pVolume, int32 size);
uint32 FS_FAT_GetDirClusIndex(FS_VOLUME *pVolume, const char *pFullName, const char **pFileName);
int    FS_FAT_CreateFile(FS_FILE *pFile, char *FileName);
size_t FS_FAT_fwrite(const void *pData, uint32 NumBytes, FS_FILE *pFile);
void   FS_FAT_DelClusChain(FS_VOLUME *pVolume, uint32 Index);
int    FS_FAT_AddClus(FS_VOLUME *pVolume, int32 Index);

uint32 FS_FAT_GetTotalFiles(const char *Path, char *ExtName);
void   FS_FAT_GotoRootDir(FS_VOLUME *pVolume, char* ExtName);
void   FS_FAT_GotoNextDir(FS_VOLUME *pVolume, char* ExtName);
int    FS_FAT_GetTotalSubDir(const char *Path);
void   FS_FAT_WriteDBRSector(const FS_DEVICE_TYPE *pDev, uint8 type);
void   FS_FAT_WriteRootDir(FS_VOLUME *pVolume, uint8 type);
void   FS_FAT_CopyFat(FS_VOLUME *pVolume, uint8 FatNum);
void   FS_FAT_WriteFAT(FS_VOLUME *pVolume, uint8 type);
uint32 FS_FAT_ClusChainCopy(FS_VOLUME *pVolume1, uint32 FstClus, uint32 SecTotal, FS_VOLUME *pVolume2);
uint8 FS_FAT_CopyFileByClus(FS_VOLUME *pVolumeSrc, FILE_LFDT_LINK *pLfdtLink,
                            FS_VOLUME *pVolumeDst, uint32 DirClus2);
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -