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

📄 oren_mtd.h

📁 M-System DOC(Disk on a Chip) Flash芯片映像读写工具, 可以进行二片Flash芯片的内容互相拷贝, 提高烧录程序的效率.
💻 H
📖 第 1 页 / 共 3 页
字号:
#define OREN_WP                         0x1
#define OREN_RP                         0x2
#define OREN_HW_LOCK                    0x4
/*******************************    DOWNLOAD FLAGS    *****************************/
#define OREN_DOWNLOAD_OK                0x0
#define OREN_DOWNLOAD_ERROR             0x1  
#define OREN_DOWNLOAD_MAIN_UNIT_ERROR   0x2

/*******************************   ERASE_FLAGS        *****************************/
#define OREN_WAIT_FOR_READY             0x1

/*******************************   FLASH_TYPE      *****************************/
#define OREN_SLC_TYPE                   0x1
#define OREN_MLC_TYPE                   0x2


/*******************************   Micellencious      *****************************/
#define OREN_CHIP_ID_OREN               0xaa   
#define OREN_CHIP_ID_COMPLEMENT         0x55
#define OREN_KEY_LENGTH                 8
#define OREN_BUSY_DELAY                 3000000L
#define OREN_DOWNLOAD_DELAY             300000L  
#define OREN_FIFO_DELAY                 30000L
#define OREN_ICMU_DELAY                 30000L  
#define OREN_ALIAS_RESOLUTION           17
#define OREN_UNIQUE_ID_LENGTH           16                     
#define OREN_DEFAULT_START_ADR          0xC8000L
#define OREN_DEFAULT_STOP_ADR           0xE0000L
#define OREN_OTP_LOCK_MARK              0
#define OREN_ERASE_MARK                 0x55
#define OREN_CUSTOMER_OTP_SIZE          6L*1024L
#define OREN_BITS_IN_BYTE               8
#define OREN_CHANGEABLE_PROTECTED_AREA  2
#define OREN_TOTAL_PROTECTED_AREA       2
#define OREN_BBT_BLOCKS_PERPAGE_SHIFT   12
#define OREN_BBT_BLOCKS_PERPAGE_MASK    0xfff
#define OREN_MLC_BB_PERCENTAGE          5
#define OREN_SLC_BB_PERCENTAGE          5
#define OP_COMPLETED                    0x0 
#define OREN_MLC_BAD_BLOCK_PERCENTAGE   5
#define OREN_SLC_BAD_BLOCK_PERCENTAGE   2
#define OREN_MAX_NUMBER_OF_PLANES       4

/**************************** Sequences offsets ************************************/
/************** Rom sequences **************/ 
#define  RESET_SEQ                      0x07   
#define  READ_ID_SEQ_ROM                0x09       
#define  STATUS_READ_SEQ                0x0D    
/************* Common sequences ************/
#define  READ_ID_SEQ_RAM                0x80 
#define  STATUS_READ_MULTI_PLANE        0x84 
#define  AREA_A_POINT_SEQ               0x87     
#define  AREA_C_POINT_SEQ               0x89  
#define  PAGE_PROG_3_BYTES_AUTO         0x8B 
#define  PAGE_PROG_4_5_BYTES_AUTO       0x90  
#define  PAGE_PROG_4_5_BYTES_DUMMY      0x95  
#define  READ_3_BYTES                   0x9A  
#define  READ_4_BYTES                   0x9D 
#define  BLOCK_ERASE_2_BYTES            0xA0 
#define  BLOCK_ERASE_3_BYTES_1_PLANE    0xA4 
#define  READ_ID_2                      0xA8    
#define  AREA_B_POINT_SEQ               0xAC  
#define  BLOCK_ERASE_3_BYTES_4_PLANES   0xAE 
#define  BLOCK_ERASE_3_BYTES_2_PLANES   0xB8 
/************* 2K page sequences ***********/
#define  PAGE_PROG_1_SECTORS_2K         0x90     /*** 4/5 address bytes ***/   
#define  PAGE_PROG_2_SECTORS_2K         0xA8     /*** 4/5 address bytes ***/        
#define  PAGE_PROG_3_SECTORS_2K         0xB0     /*** 4/5 address bytes ***/   
#define  PAGE_PROG_4_SECTORS_2K         0x96     /*** 4/5 address bytes ***/    
#define  CACHE_PAGE_PROG_1_SECTOR_2K    0x8B     /*** 4/5 address bytes ***/   
#define  CACHE_PAGE_PROG_2_SECTOR_2K    0xBB     /*** 4/5 address bytes ***/   
#define  CACHE_PAGE_PROG_3_SECTOR_2K    0xC3     /*** 4/5 address bytes ***/   
#define  CACHE_PAGE_PROG_4_SECTOR_2K    0xCE     /*** 4/5 address bytes ***/   
#define  READ_SECTOR_SETUP              0x80     /*** 4/5 address bytes ***/   
#define  READ_SECTOR_DATA               0x89     /*** 4/5 address bytes ***/   
#define  READ_SECTORS_RANDOM_OUTPUT     0x83     /*** 4/5 address bytes ***/   
#define  BLOCK_ERASE_2K                 0xA4

/**********************************************************************************/

/*******************************        ENUMERATIONS         **************************/
typedef enum FL_DPS_IndexEnum
{
  DPS_0 = 0,
  DPS_1 = 1
} FL_DPS_IndexE ;

typedef enum FL_AsicModeEnum 
{
  RESET_MODE      = 0,
  NORMAL_MODE     = 1,
  POWER_DOWN_MODE = 2 
} FL_AsicModeE;

typedef enum FL_EccModeEnum
{
  ECC_WRITE_MODE = 0,
  ECC_READ_MODE  = 1      
}FL_EccModeE;

typedef enum FL_IrqTriggerEnum
{
  IRQ_PROTECTION ,
  IRQ_FREADY     ,
  IRQ_FIFO_ERROR ,
  IRQ_NOT_PENDING 
} FL_IrqTriggerE;

typedef enum FL_IrqTypeEnum
{
  LEVEL_TYPE_INT = 0,
  EDGE_TYPE_INT  = 1
} FL_IrqTypeE;


typedef enum FL_FlashCommandsEnum
{
  READ_AREA_A_CMD        = 0x00 ,
  READ_AREA_B_CMD        = 0x01 ,
  READ_AREA_C_CMD        = 0x50 , 
  READ_ID_CMD            = 0x90 ,
  READ_ID_2_CMD          = 0x91 ,
  PAGE_PROG_CYCLE_1_CMD  = 0x80 , 
  PAGE_PROG_CYCLE_2_CMD  = 0x10 ,
  PAGE_PROG_DUMMY_CMD    = 0x11 ,
  PAGE_PROG_CACHE_CMD    = 0x15,  
  PAGE_ERASE_CYCLE_1_CMD = 0x60 ,
  PAGE_ERASE_CYCLE_2_CMD = 0xD0 ,
  READ_STATUS_CMD        = 0x70 ,   
  READ_STATUS_MULTI_CMD  = 0x71 ,
  RESET_COMMAND          = 0xFF,
  READ_2_CMD             = 0x30,
  READ_DATA_OUTPUT_1     = 0x05,
  READ_DATA_OUTPUT_2     = 0xE0,
  WRITE_DATA_OUTPUT      = 0x85
}FL_FlashCommandsE ;

typedef enum FL_ResetTriggerEnum
{
  BOOT_DETECTOR_TRIGGER,
  RSTIN_TRIGGER, 
  NOT_KNOWN_TRIGGER
} FL_ResetTriggerE ; 


 
/*******************************      STRUCTS         ******************************/
typedef struct 
{   
    FLByte banks                 ; /* 2 bits for low bank            */
                                   /* 2 bits for high bank           */ 
                                   /* 4 bits reserved as 0           */
    FLByte rfu_0_b_1             ; /* 8 bits reserved as 0           */
    LEushort lowUnit             ; /* low unit physical unit number  */
    LEushort highUnit            ; /* high unit physical unit number */
    FLWord rfu_0_w_1             ; /* 16 bits reserved as 0          */                     
    FLByte protectionKey[8]      ; /* 64 bits protection key         */
    FLByte protectionType        ; /* 1 bits reserved as 0           */
                                   /* 1 bits read protection         */ 
                                   /* 1 bits write protection        */
                                   /* 1 bits lock set                */
                                   /* 4 bits revision number         */
    FLByte rfu_0_b_2             ; /* 8 bits reserved as 0           */
} DPS_Struct ,*DPS_StructPtr ;

typedef struct  
{
  /*************************    Input parameters    ********************************/
  PhyUnitType  *phyUnits ;        /*** The actual physical units                          ***/
  FLByte        phyPage ;         /*** The page that the units reside in                  ***/
  FLByte        floor ;           /*** The floor                                          ***/
  FLByte        bank ;            /*** The bank                                           ***/
  FLWord        noOfPhySectors ;  /*** Number of physical units to access in  parallel    ***/  
  FLByte        sectorOffset;     /*** Offset of sector in page                           ***/    
  FLByte FAR1  *mainBuffer ;      /*** Pointer to the main buffer                         ***/
  FLByte FAR1  *extraBuffer;      /*** Pointer to the extra buffer                        ***/
  FLDword       opFlags ;         /*** Operation flags                                    ***/  
  FLByte        verifyWrite ;     /*** Verify that write succeeded                        ***/
  /*************************    RawMode parameters   *******************************/ 
  FLWord        offset;           /*** Offset when working in RAW mode                    ***/    
  FLWord        length;           /*** Length when working in raw mode                    ***/ 
  /**************************    Output parameters   ********************************/
  FLSByte       maxBitErrors;      /*** In verify write option it returns the Max errors in sector read ***/ /* cahr is used because of the EDC code */
  FLDword      noOfSectorsPassed; /*** Number of sectors that were successfully passed   ***/                                      
  FLDword      freeSectorsFound;  /*** Number of  free sectors found                        ***/   
  /**********************************************************************************/
} OREN_OperationArgsStruct ,*OREN_OperationArgsStructPtr ;

typedef struct 
{
  FLDword  LockMark ;
  LEulong  COTP_Size ;
} customerLockStruct,*customerLockStructPtr ;

typedef struct 
{
  FLWord wOREN_BUS_SWAP_REG_Val ;
  FLByte bOREN_CONFIGURATION_REG_Val ; 
  FLByte bOREN_INTERRUPT_CONTROL_REG_Val ;
  FLByte bOREN_OUTPUT_CONTROL_REG_Val ;
  FLByte bOREN_FLASH_ACCESS_CONFIG_REG_Val ;
  FLByte bOREN_ECC_CONTROL_REG_1_Val ;
} OREN_RegSavedVal_S,*OREN_RegSavedVal_P ;

#endif /* MTD_OREN_H */

⌨️ 快捷键说明

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