返回大虾电子网首页 返回历史帖子

[+3]求教!!那位高人认识这个FS文件系统是那家公司的产品和版本号?


帖子编号: 85758/1275905, 发表用户:自学者    发表时间:2008-3-28 21:42:51     访问次数:90 发贴IP:121.34.110.48

文章内容:

以前我公司的一个工程师在基于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


相关帖子>>>: