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

📄 onenand.inc

📁 一个可以驱动 onenand的代码,使用ADS编译
💻 INC
字号:
/*;====================================================================
; File Name : OneNand.a
; Function  : OneNand Register Address(Assembly)
; Program   : 
; Version   : 0.0
; History
;   13/NOV/2003 : First Writing
;====================================================================*/

@        GBLL   BIG_ENDIAN__
@BIG_ENDIAN__   SETL   {FALSE}

/*;======================================
; OneNand Registers 
; OneNand is mapped Bank0 of S3C2410
;======================================*/

;/****************************************************************************/
;/*  OneNAND Register Address Definitions                                    */
;/****************************************************************************/
.equ 	ONLD_REG_MANUF_ID,               0x0001E000
.equ 	ONLD_REG_DEV_ID,                 0x0001E002
.equ 	ONLD_REG_VER_ID,                 0x0001E004
.equ 	ONLD_REG_DATABUF_SIZE,           0x0001E006
.equ 	ONLD_REG_BOOTBUF_SIZE,           0x0001E008
.equ 	ONLD_REG_BUF_AMOUNT,             0x0001E00A
.equ 	ONLD_REG_TECH,                   0x0001E00C
                                                
.equ 	ONLD_REG_START_ADDR1,            0x0001E200
.equ 	ONLD_REG_START_ADDR2,            0x0001E202
.equ 	ONLD_REG_START_ADDR3,            0x0001E204
.equ 	ONLD_REG_START_ADDR4,            0x0001E206
.equ 	ONLD_REG_START_ADDR5,            0x0001E208
.equ 	ONLD_REG_START_ADDR6,            0x0001E20A
.equ 	ONLD_REG_START_ADDR7,            0x0001E20C
.equ 	ONLD_REG_START_ADDR8,            0x0001E20E
     	                                           
.equ	ONLD_REG_START_BUF,              0x0001E400
                                                
.equ 	ONLD_REG_CMD,                    0x0001E440
.equ 	ONLD_REG_SYS_CONF1,              0x0001E442
.equ 	ONLD_REG_SYS_CONF2,              0x0001E444
                                                
.equ 	ONLD_REG_CTRL_STAT,              0x0001E480
.equ 	ONLD_REG_INT,                    0x0001E482
                                                
.equ 	ONLD_REG_ULOCK_START_BA,         0x0001E498
.equ 	ONLD_REG_ULOCK_END_BA,           0x0001E49A
.equ 	ONLD_REG_WR_PROTECT_STAT,        0x0001E49C
                                                  
.equ 	ONLD_REG_ECC_STAT,               0x0001FE00
.equ 	ONLD_REG_ECC_RSLT_MB0,           0x0001FE02
.equ 	ONLD_REG_ECC_RSLT_SB0,           0x0001FE04
.equ 	ONLD_REG_ECC_RSLT_MB1,           0x0001FE06
.equ 	ONLD_REG_ECC_RSLT_SB1,           0x0001FE08
.equ 	ONLD_REG_ECC_RSLT_MB2,           0x0001FE0A
.equ	ONLD_REG_ECC_RSLT_SB2,           0x0001FE0C
.equ 	ONLD_REG_ECC_RSLT_MB3,           0x0001FE0E
.equ 	ONLD_REG_ECC_RSLT_SB3,           0x0001FE10



;/****************************************************************************/
;/* OneNAND Main Buffer Address                                              */
;/****************************************************************************/
.equ 	ONLD_BT_MB0_ADDR,                0x00000000
.equ 	ONLD_BT_MB1_ADDR,                0x00000200
.equ 	ONLD_DT_MB00_ADDR,               0x00000400
.equ 	ONLD_DT_MB01_ADDR,               0x00000600
.equ 	ONLD_DT_MB02_ADDR,               0x00000800
.equ 	ONLD_DT_MB03_ADDR,               0x00000A00
.equ 	ONLD_DT_MB10_ADDR,               0x00000C00
.equ 	ONLD_DT_MB11_ADDR,               0x00000E00
.equ 	ONLD_DT_MB12_ADDR,               0x00001000
.equ 	ONLD_DT_MB13_ADDR,               0x00001200
                                                              
.equ 	ONLD_BT_SB0_ADDR,                0x00010000
.equ 	ONLD_BT_SB1_ADDR,                0x00010010
.equ 	ONLD_DT_SB00_ADDR,               0x00010020
.equ 	ONLD_DT_SB01_ADDR,               0x00010030
.equ 	ONLD_DT_SB02_ADDR,               0x00010040
.equ 	ONLD_DT_SB03_ADDR,               0x00010050
.equ 	ONLD_DT_SB10_ADDR,               0x00010060
.equ 	ONLD_DT_SB11_ADDR,               0x00010070
.equ 	ONLD_DT_SB12_ADDR,               0x00010080
.equ 	ONLD_DT_SB13_ADDR,               0x00010090


;/****************************************************************************/
;/* OneNAND Register Masking values                                          */
;/****************************************************************************/
.equ 	MASK_DFS,                        0x8000
.equ 	MASK_FBA,                        0x01FF
.equ 	MASK_DBS,                        0x8000
.equ 	MASK_FCBA,                       0x01FF
.equ 	MASK_FCPA,                       0x00FC
.equ 	MASK_FCSA,                       0x0003
.equ 	MASK_FPA,                        0x00FC
.equ 	MASK_FSA,                        0x0003
.equ 	MASK_BSA,                        0x0F00
.equ 	MASK_BSC,                        0x0003


;/****************************************************************************/
;/* OneNAND Start Buffer Register Setting values                              */
;/****************************************************************************/
.equ 	BSA_BT_BUF0,                     0x0800
.equ 	BSA_BT_BUF1,                     0x0900
.equ 	BSA_DT_BUF00,                    0x0000
.equ 	BSA_DT_BUF01,                    0x0100
.equ 	BSA_DT_BUF02,                    0x0200
.equ 	BSA_DT_BUF03,                    0x0300
.equ 	BSA_DT_BUF10,                    0x0400
.equ 	BSA_DT_BUF11,                    0x0500
.equ 	BSA_DT_BUF12,                    0x0600
.equ	BSA_DT_BUF13,                    0x0700
                                
.equ 	BSC_1_SECTOR,                    0x0001
.equ 	BSC_2_SECTOR,                    0x0002
.equ 	BSC_3_SECTOR,                    0x0003
.equ 	BSC_4_SECTOR,                    0x0000


;/****************************************************************************/
;/* OneNAND Command Set                                                       */
;/****************************************************************************/
.equ 	ONLD_CMD_READ_PAGE,              0x0000
.equ 	ONLD_CMD_READ_SPARE,             0x0013
.equ 	ONLD_CMD_WRITE_PAGE,             0x0080
.equ 	ONLD_CMD_WRITE_SPARE,            0x001A
.equ 	ONLD_CMD_CPBACK_PRGM,            0x001B
.equ 	ONLD_CMD_ULOCK_NAND,             0x0023
.equ 	ONLD_CMD_LOCK_NAND,              0x002A
.equ 	ONLD_CMD_LOCK_TIGHT,             0x002C
.equ 	ONLD_CMD_ULOCK_BTRAM,            0x0027
.equ 	ONLD_CMD_LOCK_BTRAM,             0x0029
.equ 	ONLD_CMD_ERASE_BLK,              0x0094
.equ 	ONLD_CMD_RST_NF_CORE,            0x00F0
.equ 	ONLD_CMD_RESET,                  0x00F3
.equ 	ONLD_CMD_CACHE_PRGM,             0x008C
.equ 	ONLD_CMD_OPT_ACCESS,             0x0065


;/****************************************************************************/
;/* OneNAND System Configureation1 Register Values                            */
;/****************************************************************************/
.equ 	SYNC_READ_MODE,                  0x8000
.equ 	ASYNC_READ_MODE,                 0x0000
                                
.equ 	BST_RD_LATENCY_8,                0x0000      /*   N/A   */
.equ 	BST_RD_LATENCY_9,                0x1000      /*   N/A   */
.equ 	BST_RD_LATENCY_10,               0x2000      /*   N/A   */
.equ 	BST_RD_LATENCY_3,                0x3000      /*   min   */
.equ 	BST_RD_LATENCY_4,                0x4000      /* default */
.equ 	BST_RD_LATENCY_5,                0x5000      
.equ 	BST_RD_LATENCY_6,                0x6000
.equ 	BST_RD_LATENCY_7,                0x7000
                                
.equ 	BST_LENGTH_CONT,                 0x0000      /* default */
.equ 	BST_LENGTH_4WD,                  0x0200
.equ 	BST_LENGTH_8WD,                  0x0400
.equ 	BST_LENGTH_16WD,                 0x0600
.equ 	BST_LENGTH_32WD,                 0x0800      /* N/A on spare */
                                
.equ 	CONF1_ECC_ON,                    0xFEFF
.equ 	CONF1_ECC_OFF,                   0x0100      /* (~CONF1_ECC_ON)  0x0100 */
                                
.equ 	RDY_POLAR,                       0x0080
.equ 	INT_POLAR,                       0x0040
.equ 	IOBE_ENABLE,                     0x0020
                                
.equ 	BWPS_UNLOCKED,                   0x0001
                            
                            
;/****************************************************************************/
;/* OneNAND Controller Status Register Values                                 */
;/****************************************************************************/
.equ 	CTRL_BUSY,                       0x8000
.equ 	FAULT_CHK,                       0x4000
.equ 	READ_BUSY,                       0x2000
.equ 	WRITE_BUSY,                      0x1000
                                
.equ 	ERASE_BUSY,                      0x0800
.equ 	RESET_BUSY,                      0x0400
.equ 	PRE_CACHEPROGRAM_FAIL,           0x0010
                                
.equ 	CUR_PROGRAM_FAIL,                0x0400      /* 0x0080 */
.equ 	TIME_OUT,                        0x0001
                            
                            
;/****************************************************************************/
;/* OneNAND Interrupt Status Register Values                                  */
;/****************************************************************************/
.equ 	INT_MASTER,                      0x8000
.equ 	INT_CLEAR,                       0x0000
                                
.equ 	INT_READ,                        0x0080
.equ 	INT_WRITE,                       0x0040
.equ 	INT_ERASE,                       0x0020
.equ 	INT_RESET,                       0x0010
                                
.equ 	PEND_INT,                        (INT_MASTER)
.equ 	PEND_READ,                       (INT_MASTER + INT_READ)
.equ 	PEND_WRITE,                      (INT_MASTER + INT_WRITE)
.equ 	PEND_ERASE,                      (INT_MASTER + INT_ERASE)
.equ 	PEND_RESET,                      (INT_MASTER + INT_RESET)


;/****************************************************************************/
;/* OneNAND Write Protection Status Register Values                           */
;/****************************************************************************/
.equ 	UNLOCKED_STAT,                   0x0004
.equ 	LOCKED_STAT,                     0x0002
.equ 	LOCK_TIGHTEN_STAT,               0x0001


;/****************************************************************************/
;/* OneNAND ECC Status Register Valuies                                       */
;/****************************************************************************/
.equ 	ECC_SB0_NO_ERR,                  0x0000
.equ 	ECC_SB0_1BIT_ERR,                0x0001
.equ 	ECC_SB0_2BIT_ERR,                0x0002
.equ 	ECC_MB0_NO_ERR,                  0x0000
.equ 	ECC_MB0_1BIT_ERR,                0x0004
.equ 	ECC_MB0_2BIT_ERR,                0x0008
                                
.equ 	ECC_SB1_NO_ERR,                  0x0000
.equ 	ECC_SB1_1BIT_ERR,                0x0010
.equ 	ECC_SB1_2BIT_ERR,                0x0020
.equ 	ECC_MB1_NO_ERR,                  0x0000
.equ 	ECC_MB1_1BIT_ERR,                0x0040
.equ 	ECC_MB1_2BIT_ERR,                0x0080
                                
.equ 	ECC_SB2_NO_ERR,                  0x0000
.equ 	ECC_SB2_1BIT_ERR,                0x0100
.equ 	ECC_SB2_2BIT_ERR,                0x0200
.equ 	ECC_MB2_NO_ERR,                  0x0000
.equ 	ECC_MB2_1BIT_ERR,                0x0400
.equ 	ECC_MB2_2BIT_ERR,                0x0800
                                
.equ 	ECC_SB3_NO_ERR,                  0x0000
.equ 	ECC_SB3_1BIT_ERR,                0x1000
.equ 	ECC_SB3_2BIT_ERR,                0x2000
.equ 	ECC_MB3_NO_ERR,                  0x0000
.equ 	ECC_MB3_1BIT_ERR,                0x4000
.equ 	ECC_MB3_2BIT_ERR,                0x8000
                                
.equ 	ECC_ANY_2BIT_ERR,                0xAAAA
.equ 	ECC_ANY_BIT_ERR,                 0xFFFF
.equ 	ECC_MAIN_BIT_ERR,                0xCCCC
.equ 	ECC_SPARE_BIT_ERR,               0x3333
.equ 	ECC_REG_CLEAR,                   0x0000


;/****************************************************************************/
;/* OneNAND Misc Values                                                       */
;/****************************************************************************/
.equ 	SECTOR0,                         0x0000
.equ 	SECTOR1,                         0x0001
.equ 	SECTOR2,                         0x0002
.equ 	SECTOR3,                         0x0003
                                
.equ 	DATA_BUF0,                       0x0000
.equ 	DATA_BUF1,                       0x0001
                                
.equ 	SECTOR0_OFFSET,                  0x0000
.equ 	SECTOR1_OFFSET,                  0x0200
.equ 	SECTOR2_OFFSET,                  0x0400
.equ 	SECTOR3_OFFSET,                  0x0600

⌨️ 快捷键说明

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