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

📄 dosformt.h

📁 H3 M-system NAND flash driver in Linux OS, M-DOC driver
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** *                                                                            * * Project: DOC Driver for Linux 2.4 Block device driver for mDOC H3  family  * * of devices under Linux kernel 2.4.                                         * *                                                                            * *   Version: 1.0                                                             * *   Email questions to: oemsupport@sandisk.com                               * *   Copyright (C) SanDisk IL Ltd. 1995 - 2007                                * *   SanDisk IL Ltd., 7 Atir Yeda Street, Kfar Saba 44425, Israel             * *                                                                            * ****************************************************************************** *                                                                            * * This program is free software; you can redistribute it and/or modify it    * * under the terms of the GNU General Public License as published by the Free * * Software Foundation; either version 2 of the License, or any later version.* * This program is distributed in the hope that it will be useful, but WITHOUT* * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      * * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for  * * more details, which is set forth in the readme.txt file.                   * * You should have received a copy of the GNU General Public License along    * * with this program; if not, write to the Free Software Foundation, Inc., 51 * * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA                    * *                                                                            * * This License does not grant you any right to use the trademarks, service   * * marks or logos of SanDisk IL Ltd. or SanDisk Corporation.                  * * Subject to the foregoing, SanDisk IL Ltd., for itself and on behalf of its * * licensors, hereby reserves all intellectual property rights in the program,* * except for the rights expressly granted in this License.                   * *                                                                            * ******************************************************************************//*
 * $Log:   V:/PVCSDB/DiskOnChip/archives/Testing/TrueFFS 6.3/Drop 2.5/3/common/dosformt.h-arc  $
 * 
 *    Rev 1.10.1.0   Nov 12 2006 09:47:10   Yaniv.Iarovici
 * Added FAT 32 support.
 * 
 *    Rev 1.10   Sep 11 2006 13:45:18   yaniv.iarovici
 * Legal header added
 * 
 *    Rev 1.9   Aug 09 2006 16:52:48   Polina.Marimont
 * initial for DOC Driver 1.0
 */

#ifndef DOSFORMT_H
#define DOSFORMT_H

#include "flbase.h"
#include "fltl.h"


#define DRIVE_NUMBER            0x80
#define EXTENDED_BOOT_SIGNATURE 0x29
#define BACKUP_OF_BOOT_SECTOR   6
#define FSI_LEADING_SIGNATURE   0x41615252
#define FSI_STRUCTURE_SIGNATURE 0x61417272

#ifndef FL_ROOT_DIR_ENTRIES
#define FL_ROOT_DIR_ENTRIES 512
#endif /* FL_ROOT_DIR_ENTRIES */


/* The BIOS parameter block (a part of the boot sector)		    */
/* Note that this is NOT the customary definition of the BPB    */
/* (customary is to start it on 'bytesPerSector'). To avoid the */
/* nuisance of a structure that starts at an odd offset, we add */
/* the first 11 bytes of the boot sector here.			        */

#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED

#ifdef FL_WINDOWS_PACKING
#pragma pack(push, 1)
#endif /* FL_WINDOWS_PACKING */


#else /* FL_NO_PACKED_STRUCTS_SUPPORTED */

#endif /* FL_NO_PACKED_STRUCTS_SUPPORTED */

typedef struct 
{
    FLDword   size;
    FLByte    clusterSize;
}DiskParamsTable;

#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED

typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
  BPB	bpb;
  FLByte	physicalDriveNo;
  FLSByte	reserved0;
  FLSByte	extendedBootSignature;
  FLSByte	volumeId[4];
  FLSByte	volumeLabel[11];
  FLSByte	systemId[8];
  FLSByte	bootstrap[448];
  LEushort	signature;
} DOSBootSector;
typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
  BPB	    bpb;
  LEulong	FAT32Size;
  LEushort  extFlags;
  LEushort  FSVer;
  LEulong   RootClus;
  LEushort  FSInfo;
  LEushort  bckUpBootSect;
  FLByte    reserved[12];
  FLByte    physicalDriveNo;
  FLSByte	reserved0;
  FLSByte	extendedBootSignature;
  FLSByte	volumeId[4];
  FLSByte	volumeLabel[11];
  FLSByte	systemId[8];
  FLSByte	bootstrap[420];
  LEushort	signature;
} FAT32BootSector;

typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
  LEulong FSI_LeadSig;
  FLByte  FSI_Reserved1[480];
  LEulong FSI_StructSig;
  LEulong FSI_Free_Count;
  LEulong FSI_Nxt_Free;
  FLByte  FSI_Reserved2[14];
  LEushort	signature;
}FAT32FSInfo;
#else /* FL_NO_PACKED_STRUCTS_SUPPORTED */

#define FL_DOSBOOTSECTOR_BPB_OFFSET			0	/* size 36 */
#define FL_DOSBOOTSECTOR_PHYSICAL_DRIVE_NO_OFFSET	36	/* size 1 */
#define FL_DOSBOOTSECTOR_RESERVED0_OFFSET		37	/* size 1 */
#define FL_DOSBOOTSECTOR_EXTENDED_BOOT_SIGNATURE_OFFSET	38	/* size 1 */
#define FL_DOSBOOTSECTOR_VOLUME_ID_OFFSET		39	/* size 4, array */
#define FL_DOSBOOTSECTOR_VOLUME_LABEL_OFFSET		43	/* size 11, array */
#define FL_DOSBOOTSECTOR_SYSTEM_ID_OFFSET		54	/* size 8, array */
#define FL_DOSBOOTSECTOR_BOOTSTRAP_OFFSET		62	/* size 448, array */
#define FL_DOSBOOTSECTOR_SIGNATURE_OFFSET		510	/* size 2 */
#define FL_DOSBOOTSECTOR_SIZE				512

#define FL_FAT32BOOTSECTOR_BPB_OFFSET			0	/* size 36 */
#define FL_FAT32BOOTSECTOR_FAT32SIZE_OFFSET	    36	/* size 4 */
#define FL_FAT32BOOTSECTOR_EXTFLAGS_OFFSET		40	/* size 2 */
#define FL_FAT32BOOTSECTOR_FSVER_OFFSET	        42	/* size 2 */ 
#define FL_FAT32BOOTSECTOR_ROOTCLUSTER_OFFSET	44	/* size 4 */
#define FL_FAT32BOOTSECTOR_FSINFO_OFFSET		48	/* size 2 */
#define FL_FAT32BOOTSECTOR_BCKUPBOOTSECT_OFFSET	50	/* size 2*/
#define FL_FAT32BOOTSECTOR_RESERVED_OFFSET	    52	/* size 12, array */
#define FL_FAT32BOOTSECTOR_PHYDRIVENO_OFFSET	64	/* size 1 */
#define FL_FAT32BOOTSECTOR_RESERVED0_OFFSET	    65	/* size 1*/
#define FL_FAT32BOOTSECTOR_EXTSIGNATURE_OFFSET	66	/* size 1 */
#define FL_FAT32BOOTSECTOR_VOLUMEID_OFFSET	    67	/* size 4, array */
#define FL_FAT32BOOTSECTOR_VOLUMELABEL_OFFSET	71	/* size 11, array */
#define FL_FAT32BOOTSECTOR_SYSTEMID_OFFSET	    82	/* size 8 */
#define FL_FAT32BOOTSECTOR_BOOTSTRAP_OFFSET	    90	/* size 420, array */
#define FL_FAT32BOOTSECTOR_SIGNATURE_OFFSET		510	/* size 2 */
#define FL_FAT32BOOTSECTOR_SIZE				    512



#define FL_FAT32_FSINFO_LEADSIGNATURE_OFFSET	0   /* size 4*/
#define FL_FAT32_FSINFO_RESERVED1_OFFSET		4   /* size 480, array*/
#define FL_FAT32_FSINFO_STRUCTSIGNATURE_OFFSET	484 /* size 4*/
#define FL_FAT32_FSINFO_FREECOUNT_OFFSET		488 /* size 4*/
#define FL_FAT32_FSINFO_NEXTFREE_OFFSET			492 /* size 4*/
#define FL_FAT32_FSINFO_RESERVED2_OFFSET		496 /* size 4*/
#define FL_FAT32_FSINFO_SIGNATURE_OFFSET		510 /* size 14, array*/
#define FL_FAT32_FSINFO_SIZE				    512

typedef FLByte DOSBootSector[FL_DOSBOOTSECTOR_SIZE];
typedef FLByte FAT32BootSector[FL_FAT32BOOTSECTOR_SIZE];
typedef FLByte FAT32FSInfo[FL_FAT32_FSINFO_SIZE];
#endif /* FL_NO_PACKED_STRUCTS_SUPPORTED */



#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED

typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
	FLByte	   orderNum;			/* 6 significant bits of LFN order number */
	Unaligned  name1[5];			/* part 1 of scattered name */
	FLByte	   attributes;			/* file attributes, must be RO, System, Hidden, Volume */
	FLByte	   reserved;			/* must be 0 */
	FLByte	   checksum;			/* checksum created from short form name */
	LEushort   name2[6];			/* part 2 of scattered name */
	LEushort   startingCluster;		/* must be 0 */
	LEushort   name3[2];			/* part 3 of scattered name */
} LfnDirectoryEntry;
#else /* FL_NO_PACKED_STRUCTS_SUPPORTED */

#define FL_LFN_DIRECTORY_ENTRY_ORDER_NUM_OFFSET			0	/* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_NAME1_OFFSET			1	/* size 10, unaligned array of 2 */
#define FL_LFN_DIRECTORY_ENTRY_ATTRIBUTES_OFFSET		11	/* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_RESERVED_OFFSET			12	/* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_CHECKSUM_OFFSET			13	/* size 1 */
#define FL_LFN_DIRECTORY_ENTRY_NAME2_OFFSET			14	/* size 12, array of 2 */
#define FL_LFN_DIRECTORY_ENTRY_STARTING_CLUSTER_OFFSET		26	/* size 2 */
#define FL_LFN_DIRECTORY_ENTRY_NAME3_OFFSET			28	/* size 4, array of 2 */
#define FL_LFN_DIRECTORY_ENTRY_SIZE				32

typedef FLByte LfnDirectoryEntry[FL_LFN_DIRECTORY_ENTRY_SIZE];
#endif /* FL_NO_PACKED_STRUCTS_SUPPORTED */

/* Directory entry attribute bits */



#ifndef FL_NO_PACKED_STRUCTS_SUPPORTED

typedef FL_PACKED_STRUCTURES_BEFORE struct FL_PACKED_STRUCTURES_AFTER {
  /* First partition entry starts here. We do not map it as a	*/
  /* separate structure because it is not longword aligned	*/
  FLByte	activeFlag;	/* 80h = bootable */
  FLByte        startingHead;
  LEushort	startingCylinderSector;

⌨️ 快捷键说明

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