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 + -
显示快捷键?