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

📄 smt_fat.h

📁 The combined demo is dedicated for S1C33L05, so DMT33L05 should be used to load and run the demo. F
💻 H
📖 第 1 页 / 共 2 页
字号:
	struct SMT_PRT_STR	stPrt1;					// Partition 1
	struct SMT_PRT_STR	stPrt2;					// Partition 2 (NOT USE)
	struct SMT_PRT_STR	stPrt3;					// Partition 3 (NOT USE)
	struct SMT_PRT_STR	stPrt4;					// Partition 4 (NOT USE)
	unsigned short		wSigCode;				// Signature Code
};

/*------------------------------------------------------*/
/*	PARTITION BOOT SECTOR INFORMATION					*/
/*------------------------------------------------------*/
struct	SMT_PTB_INFO{
	unsigned char	bJump[3];					// Jump Order
	unsigned char	bVer[8];					// Maker & Version
	unsigned short	wSctSize;					// Sector Size
	unsigned char	bSctAlloc;					// Sectors/Allocation Unit
	unsigned short	wRsvSct;					// Number of Reserve Sectors
	unsigned char	bFatNum;					// Number of FATs
	unsigned short	wRootEnt;					// Number of Root Directory Entrys
	unsigned short	wSctPrt16;					// Sectors/Partition (16 bits)
	unsigned char	bDstSize;					// Distinction Size
	unsigned short	wFatSct;					// Number of FAT Sectors
	unsigned short	wSctTrck;					// Sectors/Track
	unsigned short	wHeadNum;					// Number of Heads
	unsigned long	ulHideSct;					// Number of Hidden Sectors
	unsigned long	ulSctPrt32;					// Sectors/Partition (32 bits)
	unsigned char	bPhyDrv;					// Physical Drive Number
	unsigned char	bReserved;					// RESERVED
	unsigned char	bExBootSig;					// Extention Boot Record Signature
	unsigned long	ulVolId;					// Volume ID
	unsigned char	bVolLbl[11];				// Volume Label
	unsigned char	bFileType[8];				// File System Type
	unsigned char	bRsvIPL[447];				// RESERVED (IPL CODE AREA)
	unsigned short	wSigCode;					// Signature Code
};

/*------------------------------------------------------*/
/*	SMART MEDIA DEVICE INFORMATION STRUCTURE			*/
/*------------------------------------------------------*/
struct	SMT_DEV_INFO{
	unsigned char	bMaker;						// Maker Code
	unsigned char	bDevice;					// Device Code
	unsigned char	bType;						// Media Type (0:Flash / 1:MASK)
	unsigned char	bFatType;					// FAT type (0:FAT12 / 1:FAT16)
	unsigned long	ulSize;						// Media Size (MByte)
	const struct SMT_SCT_INFO	*pSctInf;		// Sector Information Structure
	const struct SMT_SIZ_INFO	*pSizeInf;		// Size Information Structure
	const struct SMT_PRT_STR	*pMptInf;		// Master Boot Prtition Information Structure
};

/*------------------------------------------------------*/
/*	PARTITION BOOT SECTOR INFORMATION					*/
/*------------------------------------------------------*/
struct	SMT_BLK_ATBL{
	unsigned long	ulZoneNum;					// Zone Number
	unsigned long	ulBlockNum;					// Block Number
	unsigned char	bBlkCnvInf[SMT_BLK_ALLOC];	// Block Allocation Table
	unsigned char	bBlkPhyInf[SMT_BLK_ENTRY];	// Entry Table
	unsigned char	bBlkChkInf[SMT_BLK_CHECK];	// Allocation Check Table
};

/*------------------------------------------------------*/
/*	READ / WRITE DATA BUFFER							*/
/*------------------------------------------------------*/
union	SMT_RW_BUFF{

	///////////////////////
	/// ALL DATA BUFFER ///
	///////////////////////
	unsigned char	bBuff[SMT_DAT_MAX + SMT_PRL_MAX];	// Read / Write Buffer

	////////////////////////////
	/// DATA & PROLIX BUFFER ///
	////////////////////////////
	struct{
		unsigned char	bData[SMT_DAT_MAX];		// Data Buffer
		unsigned char	bProlix[SMT_PRL_MAX];	// Prolix Buffer
	}stBuff;

	///////////////////////
	/// CIS DATA BUFFER ///
	///////////////////////
	struct{
		unsigned char	bCis1[SMT_DAT_MAX / 4];	// CIS Area-1
		unsigned char	bIdi1[SMT_DAT_MAX / 4];	// Identify Drive Information Area-1
		unsigned char	bCis2[SMT_DAT_MAX / 4];	// CIS Area-2
		unsigned char	bIdi2[SMT_DAT_MAX / 4];	// Identify Drive Information Area-2
		unsigned char	bFnSelInf[4];			// Function Select Information Area
		unsigned char	bInvDatFlg;				// Invalid Data Flag Area
		unsigned char	bRsv1;					// (RESERVED) : 0xFF
		unsigned char	bRsv2[2];				// (RESERVED) : 0x00
		unsigned char	bEcc2[3];				// ECC Area-2
		unsigned char	bRsv3[2];				// (RESERVED) : 0x00
		unsigned char	bEcc1[3];				// ECC Area-1
	}stCisBuff;

	////////////////////
	///  DATA BUFFER ///
	////////////////////
	struct{
		unsigned char	bData1[SMT_DAT_MAX / 2];	// Data Area-1
		unsigned char	bData2[SMT_DAT_MAX / 2];	// Data Area-2
		unsigned char	bRsv1[4];					// (RESERVED)
		unsigned char	bDatSts;					// Data Status Area
		unsigned char	bBlkSts;					// Block Status Area
		unsigned char	bBlkAdr1[2];				// Block Address Area-1
		unsigned char	bEcc2[3];					// ECC Area-2
		unsigned char	bBlkAdr2[2];				// Block Address Area-2
		unsigned char	bEcc1[3];					// ECC Area-1
	}stDatBuff;
};

/*------------------------------------------------------*/
/*	Block copy function's parameter						*/
/*------------------------------------------------------*/
struct	SMT_BLKCOPY_PARAMS{
	unsigned long	ulLogBlk;						// Logical Block Address
	unsigned long	ulFirstBlk;						// Copy Part top sector number(first half)
	unsigned long	ulLatterBlk;					// Copy Part top sector number(latter half)
	unsigned long	ulDestBlk;						// New got block address
	unsigned long	ulExceptSct;					// Not copying sector number
	unsigned char	bValidBlkFlag;					// function control flag
	unsigned char	bVerify;						// Verify flag
};

/********************************************************/
/*	PROTOTYPE											*/
/********************************************************/
/*------------------------------------------------------*/
/*	SMART MEDIA FAT FILE SYSTEM FUNCTION				*/
/*------------------------------------------------------*/
extern unsigned long	smtChgPgNum(unsigned long, unsigned long, unsigned long);
extern unsigned long	smtChgLogNum(unsigned char, unsigned char);
extern unsigned long	smtChgPhyNum(unsigned long);
extern unsigned long	smtChgBlkNum(unsigned long);
extern int		smtInitDev(FatInitParams_t *);
extern int		smtGetDevInfo(unsigned char);
extern int		smtCntBadBlk(void);
extern int		smtInitInsInfo(unsigned long);
extern void		smtClrBlkTbl(unsigned long);
extern int		smtCrtBlkTbl(unsigned long, unsigned long, unsigned char);
extern int		smtChkDupli(unsigned long, unsigned long, unsigned long);
extern unsigned long	smtGetEccVal(unsigned char *, unsigned char);
extern int		smtCalcEccVal(unsigned char *);
extern int		smtChkEccVal(unsigned char *, unsigned char, int);
extern int		smtRdSect(unsigned char, unsigned long, unsigned long, unsigned char *);
extern int		smtRdEvac(unsigned long, unsigned long);
extern int		smtWtSect(unsigned char, unsigned long, unsigned long, unsigned char *, unsigned char);
extern int		smtWtEvac(unsigned long, unsigned long, unsigned char *, unsigned char);
extern int		smtChkRdDat(unsigned char *);
extern int		smtChkPrty(unsigned short);
extern int		smtChkBadBlk(unsigned char);
extern int		smtGetFreeBlk(unsigned long, unsigned long *);
extern int		smtEntryBadBlk(unsigned long, unsigned long);
extern void		smtSetProlDat(unsigned long, unsigned char *);
extern int		smtWtBlkAddr(unsigned long, unsigned long, unsigned long);
extern int		smtDupliSect(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned char);

// following two functions are declarated in smt.h(public file)
//extern int		smtMerror(void);
//extern void		smtMclearErr(void);

extern	int		smtOpenLib(FatInitParams_t *);
extern	int		smtCloseLib(void);
extern	long	smtGetCacheRAMSize(void);
extern	int		smtCacheRAMEntry(unsigned char *);

extern	int		smtPageReadWrap(unsigned char, unsigned long, unsigned long, char *);
extern	int		smtVerifyCheck(unsigned long, unsigned char *);
extern	int		smtBlockCopy(struct SMT_BLKCOPY_PARAMS *);

/*------------------------------------------------------*/
/*	SMART MEDIA FAT FORMAT FUNCTION						*/
/*------------------------------------------------------*/
extern int		smtCisDataWrite(void);
extern int		smtCheckCisData(unsigned char *);
extern void		smtSetMstBoot(unsigned char *);
extern void		smtSetPtbBoot(unsigned char *);
extern int		smtOpenHandle(unsigned char);
extern int		smtCloseHandle(unsigned char);

#endif	//__SMART_MEDIA_FAT_LIBRARY__

/***** End of file *****/

⌨️ 快捷键说明

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