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

📄 nanddefs.h

📁 M-System DOC(Disk on a Chip) Flash芯片的诊断工具, 可以从Flash芯片中获取特定的数据信息, 用于判断芯片当前的状态.
💻 H
字号:
/***********************************************************************************/
/*                        M-Systems Confidential                                   */
/*           Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2003            */
/*                         All Rights Reserved                                     */
/***********************************************************************************/
/*                            NOTICE OF M-SYSTEMS OEM                              */
/*                           SOFTWARE LICENSE AGREEMENT                            */
/*                                                                                 */
/*      THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE                 */
/*      AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT           */
/*      FOR THE SPECIFIC TERMS AND CONDITIONS OF USE,                              */
/*      OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE:                               */
/*      E-MAIL = info@m-sys.com                                                    */
/***********************************************************************************/

/*
 * $Log:   V:/PVCSDB/DiskOnChip/archives/general storage/TrueFFS/src/mtd/nanddefs.h-arc  $
 * 
 *    Rev 1.2   Dec 03 2003 17:59:08   roneng
 * Add definition for Toshiba 2K Page SLC 1GBit & 2GBit
 * 
 *    Rev 1.1   Aug 10 2003 13:57:18   roneng
 * - Add definition for 1GBit,2Gbit & 4GBit samsung flashes 
 * 
 *    Rev 1.0   Apr 09 2003 12:15:56   OriS
 * Initial revision.
 * 
 */

#ifndef NANDDEFS_H
#define NANDDEFS_H

#include "flflash.h"
#ifdef MTD_STANDALONE
#include "mtdsa.h"
#endif /* MTD_STANDALONE */

typedef FLByte Reg8bitType;
typedef FLWord Reg16bitType;

typedef struct {
#ifdef RAM_MTD
  FLWord        pageSize;
  FLWord        pageAndTailSize;
#endif /* RAM_MTD */
  FLWord        vendorID;
  FLWord        chipID;
  FLDword       pageMask;        /* ...these............... */
  FLWord        pageAreaSize;    /* .......variables....... */
  FLWord        tailSize;        /* .............interleave */
  FLWord        noOfBlocks;      /* total erasable blocks in flash device*/
  FLWord        pagesPerBlock;
  FLByte        currentFloor;    /*    0 .. totalFloors-1   */
  FLDword       floorSize;       /*    in bytes             */
  FLDword       floorSizeMask;
  FLByte        floorSizeBits;
  FLByte        if_cfg;          /* host access type        */
  FLWord        flags;           /* bitwise: BIG_PAGE, SLOW_IO etc. */
  FLBuffer*             buffer;          /* buffer for map through buffer */
#if (defined(VERIFY_WRITE) || defined(VERIFY_ERASE) || defined(MTD_RECONSTRUCT_BBT) || defined(VERIFY_VOLUME))
  FLByte*               readBackBuffer;  /* buffer for map through buffer */
#endif /* VERIFY_WRITE || VERIFY_ERASE || VERIFY_VOLUME */
  FLWord                win_io;          /* pointer to DOC CDSN_IO          */
  NDOC2window           win;             /* pointer to DOC memory window    */
} NFDC21Vars;

#define NFDC21thisVars   ((NFDC21Vars *) flash->mtdVars)
#define NFDC21thisWin    (NFDC21thisVars->win)
#define NFDC21thisIO     (NFDC21thisVars->win_io)
#define NFDC21thisBuffer (NFDC21thisVars->buffer->flData)

     /* Flash commands */

#define SERIAL_DATA_INPUT   0x80
#define READ_MODE           0x00
#define READ_MODE_2         0x50
#define RESET_FLASH         0xff
#define SETUP_WRITE         0x10
#define SETUP_ERASE         0x60
#define CONFIRM_ERASE       0xd0
#define READ_STATUS         0x70
#define READ_ID             0x90
#define SUSPEND_ERASE       0xb0
#define REGISTER_READ       0xe0

/* commands for moving flash pointer to areeas A,B or C of page */
typedef enum { AREA_A = READ_MODE, AREA_B = 0x1, AREA_C = READ_MODE_2 } PointerOp;

#define FAIL             0x01    /* error in block erase   */
#define EXTRA_LEN        8       /* In memory of 4MB chips */ 
#define SECTOR_EXTRA_LEN 16 

     /* Flash IDs*/

#define KM29N16000_FLASH    0xec64
#define KM29N32000_FLASH    0xece5
#define KM29V64000_FLASH    0xece6
#define KM29V128000_FLASH   0xec73
#define KM29V256000_FLASH   0xec75
#define KM29V512000_FLASH   0xec76
#define KM29V1024000_FLASH  0xec79
#define K9F1G08U0M_FLASH    0xecc1
#define K9F2G08U0M_FLASH    0xecda
#define K9F4G08U0M_FLASH    0xecdc

#define NM29N16_FLASH       0x8f64
#define NM29N32_FLASH       0x8fe5
#define NM29N64_FLASH       0x8fe6
#define TC5816_FLASH        0x9864
#define TC5832_FLASH        0x98e5
#define TC5864_FLASH        0x98e6
#define TC58128_FLASH       0x9873
#define TC58256_FLASH       0x9875
#define TC58512_FLASH       0x9876
#define TC581024_FLASH      0x9877

#define TC58100FT           0x9879   /* Toshiba 128MBx8  MLC */
#define TC58010FT           0x9879   /* Toshiba 128MBx8  SLC */
#define KF2816U0C           0xEC53   /* Samsung 16MBx16  SLC */      
#define KF2832U0C           0xEC55   /* Samsung 32MB*16  SLC */
#define TC58020FT           0x98DA   /* Toshiba 256MBx8  MLC */

#define TC58NVG0S3AFT05     0x98F1   /* Toshiba 128MBx8  2KP */
#define TC58NVG1S3AFT05     0x98DA   /* Toshiba 256MBx8  2KP */
   /*******************************/
   /****   Exported routines   ****/
   /*******************************/

/* DiskOnChip 2000 family registration routines */
#ifndef MTD_STANDALONE
  extern FLBoolean checkWinForDOC(unsigned driveNo, NDOC2window memWinPtr);
#endif /* MTD_STANDALONE */
#ifndef MTD_FOR_EXB
  extern FLStatus flRegisterDOC2000(void);
  extern FLStatus flRegisterDOCSOC(FLDword lowAddress, FLDword highAddress);
#else
  FLStatus doc2000SearchForWindow(FLSocket * socket, FLDword lowAddress,
                                  FLDword highAddress);
  FLStatus doc2000Identify(FLFlash vol);
  void doc2000FreeWindow(FLSocket * socket);
#endif /* MTD_FOR_EXB */

/* DiskOnChip Plus family registration routines */ 
#ifndef MTD_STANDALONE
  extern FLBoolean checkWinForDOCPLUS(unsigned driveNo, NDOC2window memWinPtr);
  extern void docSocketInit(FLSocket vol);
#endif /* MTD_STANDALONE */
#ifndef MTD_FOR_EXB
  extern FLStatus flRegisterDOCPLUS(void);
  extern FLStatus flRegisterDOCPLUSSOC(FLDword lowAddress, FLDword highAddress);
  extern FLStatus flRegisterDOCOREN(void);
  extern FLStatus flRegisterDOCRam(void);
#else
  FLStatus docPlusSearchForWindow(FLSocket * socket, FLDword lowAddress,
                                  FLDword highAddress);
  FLStatus docPlusIdentify(FLFlash vol);
  void docPlusFreeWindow(FLSocket * socket);
#endif /* MTD_FOR_EXB */

#endif /* NANDDEFS_H */

⌨️ 快捷键说明

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