fs16.c
来自「uCOS-II for AT91M55800A完整实例」· C语言 代码 · 共 114 行
C
114 行
#include "FS16.H"
//***********************************************************************************************
//定义文件缓冲区
static char FS_FileBuf[FS_FILE_OPEN_NUM][FS_FILE_BUF_SIZE*FS_SECTOR_SIZE*FS_CLUSTER_OF_SECTORS];
//****************************************************************
//定义文件扇区操作Cache
static char FS_Cache[FS_SECTOR_SIZE];
//****************************************************************
//定义文件扇区表
static INT16U FS_FileList[];
static FS_BPB FS16_BPB;
static FS_PBP FS16_PBP;
//*****************************************************************
//* 初始化引导区
//*函数功能: 初始化引导区
//*入口参数: 无
//*返回参数: 无
//*创建人: 郑秋坚
//*创建时间: 2003-12-11
//*修改人:
//*修改时间:
//*历史版本: V0.9------第一次创建
//* V
//*备注:
//*****************************************************************
void FS_PBP_Init()
{
//GetCF_Size(); //获得CF卡的大小
int i;
char *pPBP;
pPBP = (char *)&FS16_PBP;
FS_BPB_Init(&FS16_BPB);
FS16_PBP.JMP_Instruction[0] = 0xE9;
FS16_PBP.JMP_Instruction[1] = 0x43;
FS16_PBP.JMP_Instruction[2] = 0x05;
FS16_PBP.OEMNameAndVersion = FS_OEMNAME;
FS16_PBP.BPB = FS16_BPB;
FS16_PBP.DriverNumber = FS_DRIVE_NUMER;
FS16_PBP.Reserved = 0x00;
FS16_PBP.ExtBoot = 0x00;
FS16_PBP.VolumeID = FS_VOLUMEID;
FS16_PBP.VolumeLabel = FS_VOLUMELABEL;
FS16_PBP.VolumeLabel = FS_FAT_TYPE;
for(i = 0;i < sizeof(FS_PBP);i++)
FS_Cache[i] = *(pPBP+i);
for(i = sizeof(FS_PBP); i < FS_SECTOR_SIZE - sizeof(FS_PBP)-2;i++)
{
FS_Cache[i] = 0x00;
}
FS_Cache[FS_SIGNATURE_OFFSET] = (char)(FS_SIGNATURE_WORD>>8);
FS_Cache[FS_SIGNATURE_OFFSET+1] = (char)FS_SIGNATURE_WORD;
}
//*****************************************************************
//* 初始BPB
//*函数功能: 初始化BPB
//*入口参数: FS_BPB结构指针
//*返回参数: 无
//*创建人: 郑秋坚
//*创建时间: 2003-12-11
//*修改人:
//*修改时间:
//*历史版本: V0.9--------
//*备注: 以后可用自动设置参数(不采用预定义)
//*****************************************************************
void FS_BPB_Init(FS_BPB *pFS_BPB)
{
pFS_BPB->BytesPerSector = FS_SECTOR_SIZE;
pFS_BPB->SectorsPerCluster = FS_CLUSTER_OF_SECTORS;
pFS_BPB->ReservedSectors = FS_REVSER_SECTORS;
pFS_BPB->NumFATs = FS_FAT_NUMS;
pFS_BPB->RootDirEntries = FS_ROOTDIR_ENTRIES;
pFS_BPB->TotalSectors = FS_TOTAL_SECTORS;
pFS_BPB->MedialType = FS_MEDIA_TYPE;
pFS_BPB->NumFATSectors = FS_NUM_FAT_SECTORS;
pFS_BPB->SectorPerTrack = FS_SECTORS_PER_TRACK;
pFS_BPB->NumHeads = FS_NUM_HEAD;
pFS_BPB->HiddenSectors = FS_HIDDEN_SECTORS;
pFS_BPB->HugeSectors = FS_HUGE_SECTORS;
}
//*****************************************************************
//* 格式化文件系统
//*函数功能: 格式化文件系统
//*入口参数: 无
//*返回参数: 无
//*创建人: 郑秋坚
//*创建时间: 2003-12-11
//*修改人:
//*修改时间:
//*历史版本: V0.9--------
//*备注:
//*****************************************************************
void FS_Format()
{
}
//*****************************************************************
//* 备份文件FAT表
//*函数功能: 备份文件FAT表
//*入口参数: 无
//*返回参数: 无
//*创建人: 郑秋坚
//*创建时间: 2003-12-11
//*修改人:
//*修改时间:
//*历史版本: V0.9--------
//*备注:
//*****************************************************************
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?