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

📄 9311fop.h

📁 详细介绍了arm7-at91r40008,的开发全过程
💻 H
字号:
/*------------------------------------------------------------------*/
/*模块名称:9311fop.h                                            	*/
/*模块功能:9311的文件操作的头文件									*/
/*编写日期:2004年11月                                         		*/
/*编写者:  dingding												*/
/*------------------------------------------------------------------*/

#ifndef DF9311FOP_H
#define DF9311FOP_H


/*------------------------------------------------------------------*/
/*--------------------------系统常量定义----------------------------*/
/*------------------------------------------------------------------*/
//扇区使用标志(针对参数管理)
#define	SFNOUSE		0xFFFF		//未使用
#define SFNEXT		0xF0		//连续标志
#define SFINVALID	0xF1		//内容失效
#define SFERROR		0xF2		//扇区坏

#define SFBOOT1		0x01		//引导程序
#define SFBOOT2		0x02		//二次引导
#define SFPROG		0x03		//主程序
#define SFYCPARA	0x08		//遥测整定

#define	SFRECORD	0x09		//录波

#define SFDAT		0x10		//其他参数文件
#define SFCFG		0x11		//myconfig.dat
#define SFPORT		0x12		//ports.dat
#define SFDEV		0x13		//devices.dat
#define SFIPTBL		0x14		//iptable.dat

#define SFDZFD		0x20		//故障检测
#define SFFD1		0x21		//dzFd1.dat
#define SFFD2		0x22		//dzFd2.dat	

#define SFC			0x30		//端口配置
#define SFC01		0x31		//c0001.dat
#define SFC02		0x32		//c0002.dat
#define SFC41		0x38		//c0041.dat
#define SFC42		0x39		//c0042.dat

#define SFDAR		0x40		//实际库
#define SF9311		0x41		//本机
#define SFDAR01		0x42		//c1
#define SFDAR02		0x43		//c2
#define SFDAR41		0x48		//n1
#define SFDAR42		0x49		//n2

#define SFDAL		0x50		//逻辑库
#define SFDAL01		0x51		//c1
#define SFDAL02		0x52		//c2
#define SFDAL41		0x58		//n1
#define SFDAL42		0x59		//n2

#define SFOTHER		0x80		//其他文件

//扇区分配(偏移量)
#define SLBSAENUM	16			//扇区分配基本个数
#define SABSAESIZE	0x1000		//每个扇区容量
#define SLALLNUM	64			//总扇区个数
#define SLANEW		48			//重新分配扇区限制
#define SLPROGNUM	64			//程序文件头分配个数

#define SABOOT		0x0			//引导程序
#define SABOOTINFO	0x2000		//配合引导程序的信息

#define SAMANAG		0x4000		//管理区
#define SLMANAG		0x100		//限制长度
#define SAMANAGBAK	0x6000		//管理区冗余

#define SAFINFO		0x8000		//文件信息
#define SLFINFO		0x40		//每个文件信息限制长度
#define SAFINFOBAK	0xA000		//文件信息冗余

#define SAYCPARA	0xC000		//遥测整定
#define SATMP		0xE000		//小临时扇区

#define SABOOT2		0x10000		//二次引导
#define SLBOOT2		0x40000		//空间限制
#define SAPROG		0x50000		//主程序
#define SLPROG		0x70000
#define SACFG		0xC0000		//参数起始位置
#define SLCFG		0x40000	
#define SATEMP		0x110000	//临时扇区
#define SATEMPB1	0x120000	//临时扇区2
#define SATEMPB2	0x130000	//临时扇区3

#define SECTORBAK	0x140000		//扇区冗余,仅对主程序和参数

//操作标志
#define FOPWRITE	0x01		//写操作
#define FOPREAD		0x02		//读操作
#define FOPDEL		0x04		//删除操作
#define FOPRENEW	0x08		//重复操作
#define FOPNEXT		0x10		//续写操作

//其他常量
#define LASTFRAME			0x8000		//最后一帧标志
#define FRAMENUM			0x7FFF
#define MAXFILENAMELEN		33
#define FOPERROR			0xFFFF
#define SLITTERSIZE			0x2000
#define SBIGSIZE			0x10000

/*------------------------------------------------------------------*/
/*----------------------------结构定义------------------------------*/
/*------------------------------------------------------------------*/
__packed struct FileInfo{	//文件信息
	char	Name[MAXFILENAMELEN];
	INT32U	Length;		//长度
	INT32U	CreateTime;	//创建时间
	INT32U	Attr;		//文件属性
	INT16U	Crc;		//校验
};

struct FMemInfo{	//文件存储信息
	char	Name[MAXFILENAMELEN];	
	INT32U	Addr;		//文件地址
	INT16U	SAddr;		//扇区位置
	INT16U	Flag;		//文件标志
};

struct FOPInfo{		//文件操作信息
	INT16U	Flag;		//操作标志
	INT16U	Num;		//续写次数
	INT16U	Ltmp;		//上次操作长度
	INT32U	Length;		//已操作长度
	struct FMemInfo MInfo;
};
	

/*------------------------------------------------------------------*/
/*--------------------------函数声明--------------------------------*/
/*------------------------------------------------------------------*/
//公共函数
BOOL FInit(void);
BOOL FReadInfo(struct FileInfo* pFile);
INT16U FReadInfos(void* pData, void* ListName);
INT16U FWrite(INT8U* pData, INT16U Num, INT16U Length, struct FileInfo* pFile);
INT16U FRead(INT8U* pData, INT16U Num, INT16U Length, struct FileInfo* pFile);
BOOL FDelete(struct FileInfo* pFile);
BOOL FDeleteAll(void);
//私有函数
INT16U FCRC(struct FileInfo* pFile, struct FMemInfo* pMem);
BOOL FSetADDR(struct FMemInfo* pMInfo, INT16U* SFlag, INT16U Len);
BOOL FGetADDR(struct FMemInfo* pMInfo);
BOOL FGetInfo(struct FileInfo* pInfo, INT16U SAddr);
BOOL FSetInfo(struct FileInfo* pInfo, INT16U SAddr);
BOOL FGetManage(INT16U* SFlag, INT16U Len);
BOOL FSetManage(INT16U* SFlag, INT16U Len);
BOOL FFlashCpy(INT32U Daddr, INT32U Saddr, INT32U Count, BOOL Flag);
BOOL FSectorErase(INT16U Sector);
INT16U FClass(char *name);
INT16U FAnewSector(INT16U* Flag, INT16U Cur);
INT16U GetFlashNumber(INT32U Addr);
INT32U GetFlashAddr(INT16U Number);
INT32U	GetRealSector(INT32U Addr);

INT8U FGetSamp(void* pData, INT16U Attr[3], BOOL Flag);
INT32U FReadSamp(INT16U Attr[3], INT32U offset, INT8U* pData, INT32U Len);
BOOL FDelSamp(INT16U Attr[3]);


#endif

⌨️ 快捷键说明

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