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

📄 flstruct.h

📁 H3 M-system NAND flash driver in Linux OS, M-DOC driver
💻 H
📖 第 1 页 / 共 3 页
字号:
FLSDword bootImageLen;      /* Reserved 0 */

FLDword  vmAddressingLimit; /* Reserved 0 */

FLWord   embeddedCISlength; /* Reserved 0 */

FLByte   FAR1 * embeddedCIS; /* Reserved NULL */
} FormatParams3;

/*--------------------------------------------------*/
/* Flags for format routine (non partition related) */
/*--------------------------------------------------*/
#ifdef BDK_ACCESS
#define TL_LEAVE_BINARY_AREA       0x8  /* Is assumed to be a single bit */
#define TL_LEAVE_SOME_BINARY_AREA  0x9  /* Must include TL_LEAVE_BINARY_AREA bits */
#endif /*BDK_ACCESS*/

#define TL_SINGLE_FLOOR            0x10 /* Format only a selection of the floors  */
#define TL_DO_NOT_PERFORM_DOWNLOAD 0x20 /* Do not issue a download operation at   */
                                        /* end of the format routine.             */
#define TL_FAIL_ON_UNMARKED_BB     0x80 /* Fail in case an unmarked bad block is  */
                                        /* Found.                                 */

#define TL_LEAVE_SOME_PARTITIONS   0x9

/*--------------------------------------------------*/
/* Formatting parameter structure definition        */
/*--------------------------------------------------*/
#define FL_LENGTH_IN_BYTES          0
#define FL_LENGTH_IN_SECTORS        1
#define FL_LENGTH_IN_UNITS          2
#define FL_LENGTH_IN_PERCENTS       3
#define FL_LENGTH_IN_CYLINDERS		10

/*--------------------------------------------------*/
/* Internal Partition flags - N O T   F O R   U S E */
/*--------------------------------------------------*/
#define TL_SIMPLE_MATCHING         0x10 /* Use simple matching for partition */
#define TL_FORCE_REL               0x20 /* Use RELIABLE mode                 */
#define TL_FAST_MODE               0x40 /* Use FAST mode                     */
#define TL_NO_PLANES               0x80 /* Do not match blocks for planes    */

/*--------------------------------------------------*/
/* External Disk Partition Flags (TL_NORMAL_FORMAT):*/
/*--------------------------------------------------*/
#define TL_NORMAL_FORMAT       0             

#ifdef BDK_ACCESS
/*--------------------------------------------------*/
/* External Binary Partition Flags                  */
/* (TL_NORMAL_FORMAT / TL_SPL_FORMAT)               */
/*--------------------------------------------------*/
#define TL_SPL_FORMAT          (TL_SIMPLE_MATCHING | TL_NO_PLANES | TL_FORCE_REL) /* SPL partition */
#endif /*BDK_ACCESS*/

/*--------------------------------------------------*/
/* External spacing factors - only 1 value          */
/*--------------------------------------------------*/
#define FL_NORMAL_SPACING      1

/*--------------------------------------------------*/
/* Standard initializer for                         */
/* BDTLPartitionFormatParams3 structure             */
/*--------------------------------------------------*/

#define TL_DEFAULT_PERCENTAGE     0 /* Use default percentage of the media      */
#define TL_NO_BOOST               0 /* Do not use any performance boost         */ 
#define TL_BASIC_BOOST            1 /* Use basic 1% performance boost           */
#define TL_ENHANCED_PERFORMANCE 100 /* Define as enhanced performance partition */

#define TL_BDTL_STD_SPACE_FACTOR	FL_NORMAL_SPACING
#define TL_BDTL_STD_SPARE_UNITS_NO	3
#define STD_BDTL_PARAMS3 {0,                       /* Total  Length       */ \
                          0,                      /* Fast   Length       */ \
                          FL_LENGTH_IN_BYTES,      /* Total  Length type  */ \
                          FL_LENGTH_IN_PERCENTS,   /* Fast   Length type  */ \
                          TL_BDTL_STD_SPACE_FACTOR,/* Spaced Factor       */ \
                          TL_BDTL_STD_SPARE_UNITS_NO,/* No of spare units   */ \
                          0,0,0,0,                 /* Reserved 0          */ \
                          {0,0,0,0,0,0,0,0},0}     /* No H/W protection   */

/*--------------------------------------------------*/
/* Standard initializer for                         */
/* BinaryPartitionFormatParams3 structure           */
/*--------------------------------------------------*/
#define TL_BDK_STD_SPARE_BLOCKS_NO	1
#define STD_BINARY_PARAMS3 {0,                  /* Partition length       */ \
                            FL_LENGTH_IN_BYTES, /* Partition length type  */ \
                            {'B','I','P','O'},  /* Signature              */ \
				            0,					/* 0 -normal partition , TL_SPL_FORMAT for SPL Partition */ \
							TL_BDK_STD_SPARE_BLOCKS_NO,/* Number of spare blocks */ \
                            0,0,0,0,            /* Reserved 0             */ \
							{0,0,0,0,0,0,0,0},  /* Protection key         */ \
							0}                  /* Protection type        */ \

/*--------------------------------------------------*/
/* Standard initializer for FormatParams3 structure */
/*--------------------------------------------------*/
#define STD_FORMAT_PARAMS3 {TL_DEFAULT_PERCENTAGE, /* Percent used               */ \
                            1,                     /* No of Disk Partitions      */ \
							0,                     /* No of Binary Partitions    */ \
							NULL,                  /* Disk partition structure   */ \
							NULL,                  /* Binary partition structure */ \
							0,                     /* This cascaded device       */ \
							0,                     /* Total cascaded devices     */ \
							NULL,                  /* Progress call back         */ \
							0, 0,                  /* Reserved 0                 */ \
							0, 0, 0, NULL}         /* Reserved 0                 */



#ifdef BDK_ACCESS
/**************************************************************************/
/*  Structures and defines for BDK routines:                              */
/**************************************************************************/
#define BDK_SIGNATURE_NAME              4

typedef struct {
    FLByte       oldSign[BDK_SIGNATURE_NAME];
    FLByte       newSign[BDK_SIGNATURE_NAME];
    FLByte       signOffset;
    FLDword      startingBlock;
    FLDword      length;
    FLByte       flags;
    FLByte FAR1 *bdkBuffer;
} BDKStruct;

#define ERASE_BEFORE_WRITE              8

#endif /*BDK_ACCESS*/


/**************************************************************************/
/*  Defines for Defrag routines:                                          */
/**************************************************************************/
#define FL_MINIMAL_DEFRAGMENTATION	    -1
#define FL_MAXIMUM_DEFRAGMENTATION	    -20
#define FL_STATIC_WEAR_LEVELING_DELAYED -2
#define FL_STATIC_WEAR_LEVELING_NOW     -3
#define FL_STATIC_WEAR_LEVELING_ON      -4
#define FL_STATIC_WEAR_LEVELING_OFF     -5

#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
typedef  struct {
  FLByte	jumpInstruction[3];
  FLSByte	OEMname[8];
  Unaligned	bytesPerSector;
  FLByte	sectorsPerCluster;
  LEushort	reservedSectors;
  FLByte	noOfFATS;
  Unaligned	rootDirectoryEntries;
  Unaligned	totalSectorsInVolumeDOS3;
  FLByte	mediaDescriptor;
  LEushort	sectorsPerFAT;
  LEushort	sectorsPerTrack;
  LEushort	noOfHeads;
  LEulong	noOfHiddenSectors;
  LEulong	totalSectorsInVolume;
} BPB;
#else /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
#define FL_BPB_JUMP_INSTRUCTION_OFFSET		0	/* size 3, array */
#define FL_BPB_OEM_NAME_OFFSET			3	/* size 8, array */
#define FL_BPB_BYTES_PER_SECTOR_OFFSET		11	/* size 2, unaligned */
#define FL_BPB_SECTORS_PER_CLUSTER_OFFSET	13	/* size 1 */
#define FL_BPB_RESERVED_SECTORS_OFFSET		14	/* size 2 */
#define FL_BPB_NO_OF_FATS_OFFSET		16	/* size 1 */
#define FL_BPB_ROOT_DIR_ENTRIES_OFFSET		17	/* size 2, unaligned */
#define FL_BPB_TOTAL_SECTORS_IN_VOL_DOS3_OFFSET	19	/* size 2, unaligned */
#define FL_BPB_MEDIA_DESCRIPTOR_OFFSET		21	/* size 1 */
#define FL_BPB_SECTORS_PER_FAT_OFFSET		22	/* size 2 */
#define FL_BPB_SECTORS_PER_TRACK_OFFSET		24	/* size 2 */
#define FL_BPB_NO_OF_HEADS_OFFSET		26	/* size 2 */
#define FL_BPB_NO_OF_HIDDEN_SECTORS_OFFSET	28	/* size 4 */
#define FL_BPB_TOTAL_SECTORS_IN_VOL_OFFSET	32	/* size 4 */
#define FL_BPB_SIZE				36
typedef FLByte BPB[FL_BPB_SIZE];
#endif /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
typedef struct {
FLDword length;
FLWord lengthType;
FLByte pType;
FLByte flags;
}LogicalPartitionParams;

#define STD_LOG_PARTITION_PARAMS	{0,                         /* Partition length       */ \
                                     FL_LENGTH_IN_BYTES,        /* Bytes, Sectors ...     */ \
									 DOS4_PARTIT,               /* Partition type         */ \
									 FL_MARK_PARTITION_BOOTABLE}/* Either bootable or not */ \

typedef struct {
SectorNo bootSectorNo;
SectorNo sectorsInVolume;
SectorNo MBR;
int MBRslot;
} LogPartitionInfo;

#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED
typedef  struct  {
  FLSByte   name[11];
  FLByte    attributes;		/* mapped below */
  FLByte    lowerCaseFlags;
  FLByte    createTimeMilisec;
  LEushort  createTimeHourMin;
  LEushort  createDate;
  LEushort  lastAccessedDate;
  LEushort  reserved1;
  LEushort	updateTime;
	/* The date field is encoded as follows:     */
	/* 	bit 0-4:	Day of month (1-31)	         */
	/* 	bit 5-8:	Month (1-12)                 */
	/*	bit 9-15:	Year relative to 1980        */
  LEushort	updateDate;
	/* The DOS time field is encoded as follows: */
	/*	bit 0-4:	seconds divided by 2 (0-29)  */
	/*      bit 5-10:	minutes (0-59)           */
	/*	bit 11-15:	hours (0-23)                 */
  LEushort	startingCluster;
  LEulong	fileSize;
} DirectoryEntry;
#else /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
#define FL_DIRECTORY_ENTRY_NAME_OFFSET			0	/* size 11, array */
#define FL_DIRECTORY_ENTRY_ATTRIBUTES_OFFSET		11	/* size 1 */
#define FL_DIRECTORY_ENTRY_LOWERCASE_FLAGS_OFFSET	12	/* size 1 */
#define FL_DIRECTORY_ENTRY_CREATE_TIME_MILLISEC_OFFSET	13	/* size 1 */
#define FL_DIRECTORY_ENTRY_CREATE_TIME_HOURMIN_OFFSET	14	/* size 2 */
#define FL_DIRECTORY_ENTRY_CREATE_DATE_OFFSET		16	/* size 2 */
#define FL_DIRECTORY_ENTRY_LAST_ACCESS_DATE_OFFSET	18	/* size 2 */
#define FL_DIRECTORY_ENTRY_RESERVED1_OFFSET		20	/* size 2 */
#define FL_DIRECTORY_ENTRY_UPDATE_TIME_OFFSET		22	/* size 2 */
#define FL_DIRECTORY_ENTRY_UPDATE_DATE_OFFSET		24	/* size 2 */
#define FL_DIRECTORY_ENTRY_STARTING_CLUSTER_OFFSET	26	/* size 2 */
#define FL_DIRECTORY_ENTRY_FILESIZE_OFFSET		28	/* size 4 */
#define FL_DIRECTORY_ENTRY_SIZE				32
typedef FLByte DirectoryEntry[FL_DIRECTORY_ENTRY_SIZE];
#endif /*FL_NO_PACKED_STRUCTS_SUPPORTED*/
/* FAT Format Parameters record - given to flFormatFS */

typedef struct {
FLWord		noOfRootEntries;
FLWord		noOfSectorsPerCluster;                                 
FLByte		noOfFATs;
FLByte		pType;
FLByte		reserved1;
FLByte		flags;                                             
FLByte      volumeId[4];  /* FAT partition identification number */
FLByte*     volumeLabel;  /* FAT partition label string. If NULL, no label */
} FATFormatParams;


#define FAT12_PARTIT                     0x01
#define FAT16_PARTIT                     0x04
#define EX_PARTIT                        0x05
#define DOS4_PARTIT                      0x06
#define FAT32_PARTIT                     0x0b

#define FL_TFAT_MODE                     0x1

#define FS_USE_DEFAULT_CLUSTER_SIZE	0

#define STD_FAT_FORMAT_PARAMS	{512,                         /* No of entries in the rood directory */ \
                                 FS_USE_DEFAULT_CLUSTER_SIZE, /* No of sectors per cluster           */ \
								 1,                           /* No of FAT copies                    */ \
								 0,                           /* Partition type                      */ \
								 0, 0,                        /* Reseved 0                           */ \
								 {0, 0, 0, 0},                /* FAT Volume ID                       */ \
								 NULL}                        /* FAT Lable               */


#endif /* FLSTRUCT_H */

⌨️ 快捷键说明

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