📄 oren_mtd.h
字号:
#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 + -