[+3]求教!!那位高人认识这个FS文件系统是那家公司的产品和版本号? |
以前我公司的一个工程师在基于ARM9 2410上面整合的UCOS II和FS文件系统,但所有系统文件的原码都已经打包,只留了个API 接口集合的头文件(如下),里面没有任何公司和版本信息,现在要基于该系统平台开发一新系统,但没有详细的平台使用信息,感 觉无从下手,请高手们指点!!谢谢! #ifndef __OSFILE_0_H__ #define __OSFILE_0_H__ #include "flash.h" #define FILE_TYPE_NULL 0 #define FILE_TYPE_NO_NULL 1 #define MAX_FILE_NUMBER 20 #define FILECNTPERPAGE 16 #define PAGEPERCLUS 32 #define BYTESPERSECTOR 512 #define BPB_SECTOR_PAGE 2 #define DATA_STATUS_PAGE 3 #define CONTENT_STATUS_PAGE 4 #define START_CLUSTER 1024 #define END_CLUSTER 1791 #define CONTENT_CLUSTER_COUNT 128 #define CONTENT_START_CLUSTER START_CLUSTER #define CONTENT_END_CLUSTER (CONTENT_START_CLUSTER+CONTENT_CLUSTER_COUNT-1) #define CONTENT_CLUSTER (CONTENT_END_CLUSTER-CONTENT_START_CLUSTER+1) #define DATA_START_CLUSTER (CONTENT_END_CLUSTER+1) #define DATA_END_CLUSTER END_CLUSTER #define DATA_CLUSTER (DATA_END_CLUSTER-DATA_START_CLUSTER+1) #define CONTENT_SIZE (DATA_END_CLUSTER-DATA_START_CLUSTER+1) #define CONTENT_PAGE_SIZE (CONTENT_SIZE/FILECNTPERPAGE)+(((CONTENT_SIZE%FILECNTPERPAGE)==0)? 0:1) #define BLOCKPERBOOT (CONTENT_SIZE/(FILECNTPERPAGE*PAGEPERCLUS))+(((CONTENT_SIZE% (FILECNTPERPAGE*PAGEPERCLUS))==0)? 0:1) #define NAND_CLUSTER_SIZE PAGEPERCLUS*BYTESPERSECTOR #define HIGHBYTE(a) ((a>>8)&0xff) #define LOWBYTE(a) (a&0xff) static void InitClusterChain(void); static void InitContentChain(void); static void InitFatChain(void); static void OS_ListClr (INT8U *ptr,INT32U lentch); static void FreeFileList(CNCFILE *pFile); static void DeleteFileList(INT8S *FileName); static INT8S mytoupper(INT8S c); static INT16U SerachCurretBoot(void); static INT16U MemcmpNoUpper(INT8S* m1, INT8S *m2, int n); static INT16U SearchBlockFreeCnt(void); static INT16U CutFatChain(StruFat *FatPtr); static INT16U FatNextCluster(INT16U ClusterNo); static INT16U ContentChainCount(void); static INT16U CheckFatChain(StruFat *FatPtr); static CNCFILE* OpenFileList(void); static STATUS_CODE FormatFileName(INT8S *outfilename,INT8S *infilename); static STATUS_CODE FormatNandContent(INT16U StartCluster,INT16U EndCluster); static STATUS_CODE FormatNandData(INT16U StartCluster,INT16U EndCluster); static STATUS_CODE InitFormatNand(void); static STATUS_CODE ReadBootContent(void); static STATUS_CODE IncContentChain(StruNandFile *FilePtr); static STATUS_CODE IncClusterChain(StruBlock *BlockPtr); static STATUS_CODE IncFatChain(StruFat *FatPtr); static STATUS_CODE CutContentChain(StruNandFile *FilePtr); static STATUS_CODE DeleteBlockFatList(StruFat *FatPtr); static STATUS_CODE FlashClusterStatus(StruBlock *BlockPtr,INT16U UseSta); static STATUS_CODE IsBadCluster(INT32U block); static STATUS_CODE ChooseContentChain(INT8S *FileName, StruNandFile *FileStru); static STATUS_CODE SearchClusterList(INT16U number); static STATUS_CODE AllocateDataCluster(void); static STATUS_CODE WriteFileData(CNCFILE *pfile); static STATUS_CODE MarkNextCluster(INT16U BlockNo,INT16U NextBlock); static STATUS_CODE MarkClusterUse(INT16U BlockNo,INT16U BlockStat); static STATUS_CODE ReadFileData(CNCFILE *pfile, INT8U *buffer,INT32U RLentch); static STATUS_CODE AllocateContentCluster(void); static STATUS_CODE WriteFileContent(CNCFILE *pfile); static STATUS_CODE SearchContentChain(INT8S *FileName, StruNandFile *FileStru, INT8U attri); static STATUS_CODE FileStatusSwap(CNCFILE *pfile); static STATUS_CODE FormatChangeContent(INT16U ContentBlock); static STATUS_CODE WriteChangeContent(void); static STATUS_CODE RenameContentChain(INT8S *OldFileName,INT8S *NewFileName); static STATUS_CODE CheckClusterEnd(INT16U ClusterNO); static STATUS_CODE IsClusterPiece(void); static STATUS_CODE MarkClusterPiece(INT16U ClusterNO); static STATUS_CODE CheckClusterPiece(StruBlock *BlockPtr); static STATUS_CODE DeleteClusterPiece(void); static STATUS_CODE DeleteFatPiece(StruFat *FatPtr); static STATUS_CODE BlockFatSelfCount(INT16U ClusterNo,INT16U Count); static INT16U MemcmpNoUpperPtr(INT8S* m1, char *m2, int n); static void Addpfile(CNCFILE* pfile); static void Decpfile(CNCFILE* pfile); static CNCFILE* Findpfile(char filename[]); static STATUS_CODE Fs_InitFile(void); static CNCFILE* Fs_CreateFile(INT8S *filename,INT8U CreateMode,void *puf); static CNCFILE* Fs_OpenFile(INT8S *filename,INT8U OpenMode,void *puf,INT32U Lentch); static STATUS_CODE Fs_WriteFile(CNCFILE *pfile,INT8U *wBuffer,INT32U nLentch); static STATUS_CODE Fs_ReadFile(CNCFILE *pfile,INT8U *rBuffer,INT32U nLentch); static STATUS_CODE Fs_CloseFile(CNCFILE *pfile); static STATUS_CODE Fs_DeleteFile(INT8S *filename); static STATUS_CODE Fs_RenameFile(INT8S *OldFileName,INT8S *NewFileName); static STATUS_CODE Fs_SeekFile(CNCFILE *pfile,INT8U seekmode,INT32S offset); static STATUS_CODE Fs_GetFileSize(INT8S *filename, INT32U FileSize); static STATUS_CODE Fs_GetFileAttribute(INT8S *filename, INT8U Attri); static STATUS_CODE Fs_SetFileAttribute(INT8S *filename, INT8U Attri); static STATUS_CODE Fs_UnUseClusterCount(INT16U Count); static StruFat CountFatChain(StruFat *FatPtr); static INT16U MemcmpNoUpperChar(char* m1, char *m2, int n); static STATUS_CODE FormatFileNameChar(INT8S *outfilename,char *infilename); static INT32U PositionContentChain(StruNandFile *FileStru,INT32U *Position); static int initOSFile(void); static CNCFILE* OpenOSFile(char filename[], INT32U OpenMode); static INT32U ReadOSFile(CNCFILE* pfile,INT8U* ReadBuffer, INT32U nReadbyte); static INT8U WriteOSFile(CNCFILE* pfile, INT8U* WriteBuffer, INT32U nWritebyte); static INT32U SeekOSFile(CNCFILE* pfile ,INT32U nCurPos); static INT32U GetPosOSFile(CNCFILE* pfile); static int CloseOSFile(CNCFILE* pfile); static INT8U DeleteOSFile(char filename[]); static INT8U RenameOSFile(char fromname[], char toname[]); static INT8U GetNextFNSize(INT32U *filepos,char filename[],INT32U *filesize); static INT8U ListNextFileName(INT32U *filepos, char FileExName[],char filename[]); static int FormatFS(void); static int GetFS_Info(int *TotalSec, int *unusedSec, int *badSec); static INT16U UnusedBlock(void); static INT8U SearchOSFile(char filename[]); static INT8U GetNextFileName(INT32U *filepos,char filename[]); static INT16U SearchFileBlockNumber(INT16U ClusterNO,INT16U Count); static INT8U MoveFileToUsb(const INT8U *usb_p_name, char nand_name[]); static INT8U MoveFileToNand(char nand_name[], const INT8U *usb_p_name); #endif
相关帖子>>>:
貌似FAT(0字)洗刷刷[20次]2008-3-28 22:34:26
是不是ZLG的啊!(0字)lijg8421[24次]2008-3-28 22:39:35