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

📄 flflash.h

📁 cpc-1631的BSP包for VxWorks操作系统
💻 H
字号:
/* flflash.h - True Flash File System */

/* Copyright 1984-2004 Wind River Systems, Inc. */
#include "copyright_wrs.h"

/* FAT-FTL Lite Software Development Kit
 * Copyright (C) M-Systems Ltd. 1995-1997	*/

/*
modification history
--------------------
01a,29jul04,alr  modified file header, restarted history
*/

#ifndef FLFLASH_H
#define FLFLASH_H

#ifdef __cplusplus
extern "C" {
#endif

#include "flsocket.h"

/* Some useful types for mapped Flash locations */

typedef volatile unsigned char FAR0 * FlashPTR;
typedef volatile unsigned short int FAR0 * FlashWPTR;
typedef volatile unsigned long FAR0 * FlashDPTR;

typedef unsigned short FlashType;	/* JEDEC id */

#define	NOT_FLASH	0

/* page characteristics flags */
#define  BIG_PAGE    0x0100             /* page size > 100H*/
#define  FULL_PAGE  0x0200          	/* no partial page programming*/

/* MTD write routine mode flags */
#define OVERWRITE	1	/* Overwriting non-erased area  */
#define EDC		2	/* Activate ECC/EDC		*/
#define EXTRA		4	/* Read/write spare area	*/


/*----------------------------------------------------------------------*/
/*	         Flash array identification structure			*/
/*									*/
/* This structure contains a description of the Flash array and		*/
/* routine pointers for the map, read, write & erase functions.		*/
/* 									*/
/* The structure is initialized by the MTD that identifies the Flash	*/
/* array.                                                               */
/* On entry to an MTD, the Flash structure contains default routines	*/
/* for all operations. This routines are sufficient forread-only access	*/
/* to NOR Flash on a memory-mapped socket. The MTD should override the	*/
/* default routines with MTD specific ones when appropriate.		*/
/*----------------------------------------------------------------------*/

/* Flash array identification structure */

typedef struct tFlash FLFlash;		/* Forward definition */

struct tFlash {
  FlashType	type;			/* Flash device type (JEDEC id) */
  long int	erasableBlockSize;	/* Smallest physically erasable size
					   (with interleaving taken in account) */
  long int	chipSize;		/* chip size */
  int		noOfChips;		/* no of chips in array */
  int		interleaving;		/* chip interleaving
					   (The interleaving is defined as
					   the address difference between
					   two consecutive bytes on a chip) */
  unsigned	flags;			/* Special capabilities & options
					   Bits 0-7 may be used by FLite.
					   Bits 8-15 are not used bt FLite
					   and may be used by MTD's for MTD-
					   specific purposes. */
  void *	mtdVars;		/* Points to MTD private area for
					   this socket.
					   This field, if used by the MTD, is
					   initialized by the MTD identification
					   routine */
  FLSocket *	socket;			/* Socket of this drive */


/* Flag bit values */

#define SUSPEND_FOR_WRITE	1	/* MTD provides suspend for write */
#define	NFTL_ENABLED		2	/* Flash can run NFTL */


/*----------------------------------------------------------------------*/
/*      	          f l a s h . m a p				*/
/*									*/
/* MTD specific map routine						*/
/*                                                                      */
/* The default routine maps by socket mapping, and is suitable for all  */
/* NOR Flash.                                                           */
/* NAND or other type Flash should use map-through-copy emulation: Read */
/* a block of Flash to an internal buffer and return a pointer to that	*/
/* buffer.								*/
/*									*/
/* Parameters:                                                          */
/*	vol		: Pointer identifying drive			*/
/*      address		: Card address to map				*/
/*	length		: Length to map					*/
/*                                                                      */
/* Returns:                                                             */
/*	Pointer to required card address				*/
/*----------------------------------------------------------------------*/
  void FAR0 *	(*map)(FLFlash *, CardAddress, int);

/*----------------------------------------------------------------------*/
/*      	          f l a s h . r e a d				*/
/*									*/
/* MTD specific Flash read routine					*/
/*									*/
/* The default routine reads by copying from a mapped window, and is	*/
/* suitable for all NOR Flash.						*/
/*									*/
/* Parameters:                                                          */
/*	vol		: Pointer identifying drive			*/
/*      address		: Card address to read				*/
/*	buffer		: Area to read into				*/
/*	length		: Length to read				*/
/*                                                                      */
/*----------------------------------------------------------------------*/
  FLStatus	(*read)(FLFlash *, CardAddress, void FAR1 *, int, int);

/*----------------------------------------------------------------------*/
/*                       f l a s h . w r i t e				*/
/*									*/
/* MTD specific Flash write routine					*/
/*									*/
/* The default routine returns a write-protect error.			*/
/*									*/
/* Parameters:                                                          */
/*	vol		: Pointer identifying drive			*/
/*      address		: Card address to write to			*/
/*      buffer		: Address of data to write			*/
/*	length		: Number of bytes to write			*/
/*	modes		: See write mode flags definition above		*/
/*                                                                      */
/* Returns:                                                             */
/*	FLStatus	: 0 on success, failed otherwise		*/
/*----------------------------------------------------------------------*/
  FLStatus 	(*write)(FLFlash *, CardAddress, const void FAR1 *, int, int);

/*----------------------------------------------------------------------*/
/*                       f l a s h . e r a s e				*/
/*									*/
/* Erase one or more contiguous Flash erasable blocks			*/
/*									*/
/* The default routine returns a write-protect error.			*/
/*									*/
/* Parameters:                                                          */
/*	vol		: Pointer identifying drive			*/
/*      firstErasableBlock : Number of first block to erase		*/
/*	numOfErasableBlocks: Number of blocks to erase			*/
/*                                                                      */
/* Returns:                                                             */
/*	FLStatus	: 0 on success, failed otherwise		*/
/*----------------------------------------------------------------------*/
  FLStatus 	(*erase)(FLFlash *, int, int);

/*----------------------------------------------------------------------*/
/*      	 f l a s h . s e t P o w e r O n C a l l b a c k	*/
/*									*/
/* Register power on callback routine. Default: no routine is 		*/
/* registered.								*/
/*									*/
/* Parameters:                                                          */
/*	vol		: Pointer identifying drive			*/
/*                                                                      */
/*----------------------------------------------------------------------*/
  void 	(*setPowerOnCallback)(FLFlash *);
};



/* MTD registration information */

extern int noOfMTDs;	/* No. of MTDs actually registered */

typedef FLStatus (*MTDidentifyRoutine) (FLFlash vol);

extern MTDidentifyRoutine mtdTable[];


/* See interface documentation of functions in flash.c	*/

extern void flIntelIdentify(FLFlash *, 
                            void (*)(FLFlash *, CardAddress, unsigned char, FlashPTR), 
                            CardAddress);

extern FLStatus	flIntelSize(FLFlash *, 
                            void (*)(FLFlash *, CardAddress, unsigned char, FlashPTR), 
                            CardAddress);

extern FLStatus	flIdentifyFlash(FLSocket *socket, FLFlash *flash);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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