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

📄 nand.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\nand.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  NF16_CheckId PROC
;;;275    static U8 NF16_CheckId(void)
;;;276    {
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;277        int i;
;;;278        U8 id1, id2,id3,id4;
;;;279        
;;;280        NF_nFCE_L();
000004  e59fe210          LDR      lr,|L1.540|
000008  e59ee004          LDR      lr,[lr,#4]
00000c  e3cee080          BIC      lr,lr,#0x80
000010  e59f4204          LDR      r4,|L1.540|
000014  e584e004          STR      lr,[r4,#4]
;;;281        
;;;282        NF_CMD(0x90);
000018  e3a0e090          MOV      lr,#0x90
00001c  e584e008          STR      lr,[r4,#8]
;;;283        NF_ADDR(0x0);
000020  e3a0e000          MOV      lr,#0
000024  e584e00c          STR      lr,[r4,#0xc]
;;;284        
;;;285        for(i=0;i<10;i++); //wait tWB(100ns)////?????
000028  e3a01000          MOV      r1,#0
                  |L1.44|
00002c  e351000a          CMP      r1,#0xa
000030  aa000001          BGE      |L1.60|
000034  e2811001          ADD      r1,r1,#1
000038  eafffffb          B        |L1.44|
;;;286        
;;;287        id1=NF_RDDATA();	// Maker code(K9S1208V:0xec)
                  |L1.60|
00003c  e59fe1d8          LDR      lr,|L1.540|
000040  e59ee010          LDR      lr,[lr,#0x10]
000044  e20e20ff          AND      r2,lr,#0xff
;;;288        id2=NF_RDDATA();	// Devide code(K9S1208V:0x76)
000048  e59fe1cc          LDR      lr,|L1.540|
00004c  e59ee010          LDR      lr,[lr,#0x10]
000050  e20e00ff          AND      r0,lr,#0xff
;;;289        id3=NF_RDDATA();	
000054  e59fe1c0          LDR      lr,|L1.540|
000058  e59ee010          LDR      lr,[lr,#0x10]
00005c  e20e30ff          AND      r3,lr,#0xff
;;;290        id4=NF_RDDATA();	 
000060  e59fe1b4          LDR      lr,|L1.540|
000064  e59ee010          LDR      lr,[lr,#0x10]
000068  e20ec0ff          AND      r12,lr,#0xff
;;;291        
;;;292        NF_nFCE_H();
00006c  e59fe1a8          LDR      lr,|L1.540|
000070  e59ee004          LDR      lr,[lr,#4]
000074  e38ee080          ORR      lr,lr,#0x80
000078  e59f419c          LDR      r4,|L1.540|
00007c  e584e004          STR      lr,[r4,#4]
;;;293        
;;;294        return id2;
;;;295    }
000080  e8bd8010          LDMFD    sp!,{r4,pc}
                          ENDP

                  NF16_Reset PROC
;;;309    void NF16_Reset(void)
;;;310    {
000084  e59f1190          LDR      r1,|L1.540|
;;;311        int i;
;;;312        rNFCONT|=(3<<0); //software mode
000088  e5911004          LDR      r1,[r1,#4]
00008c  e3811003          ORR      r1,r1,#3
000090  e59f2184          LDR      r2,|L1.540|
000094  e5821004          STR      r1,[r2,#4]
;;;313        NF_nFCE_L();
000098  e1a01002          MOV      r1,r2
00009c  e5911004          LDR      r1,[r1,#4]
0000a0  e3c11080          BIC      r1,r1,#0x80
0000a4  e5821004          STR      r1,[r2,#4]
;;;314        NF_CLRRnB(); 
0000a8  e1a01002          MOV      r1,r2
0000ac  e591102c          LDR      r1,[r1,#0x2c]
0000b0  e3811d80          ORR      r1,r1,#0x2000
0000b4  e582102c          STR      r1,[r2,#0x2c]
;;;315        NF_CMD(0xFF);	//reset command
0000b8  e3a010ff          MOV      r1,#0xff
0000bc  e1c22001          BIC      r2,r2,r1
0000c0  e5821008          STR      r1,[r2,#8]
;;;316    
;;;317        for(i=0;i<10;i++);  //tWB = 100ns. //??????
0000c4  e3a00000          MOV      r0,#0
                  |L1.200|
0000c8  e350000a          CMP      r0,#0xa
0000cc  aa000001          BGE      |L1.216|
0000d0  e2800001          ADD      r0,r0,#1
0000d4  eafffffb          B        |L1.200|
;;;318        NF_TRANSRnB();      //wait 200~500us;
                  |L1.216|
0000d8  e1a00000          NOP      
                  |L1.220|
0000dc  e59f1138          LDR      r1,|L1.540|
0000e0  e591102c          LDR      r1,[r1,#0x2c]
0000e4  e3110d80          TST      r1,#0x2000
0000e8  0afffffb          BEQ      |L1.220|
;;;319        NF_nFCE_H();
0000ec  e59f1128          LDR      r1,|L1.540|
0000f0  e5911004          LDR      r1,[r1,#4]
0000f4  e3811080          ORR      r1,r1,#0x80
0000f8  e59f211c          LDR      r2,|L1.540|
0000fc  e5821004          STR      r1,[r2,#4]
;;;320    }
000100  e12fff1e          BX       lr
                          ENDP

                  NF16_Init PROC
;;;346    static void NF16_Init(void)
;;;347    {
000104  e52de004          STR      lr,[sp,#-4]!
;;;348    	rSROM_BW|=(1<<9);
000108  e59f0110          LDR      r0,|L1.544|
00010c  e5900000          LDR      r0,[r0,#0]
000110  e3800f80          ORR      r0,r0,#0x200
000114  e59f1104          LDR      r1,|L1.544|
000118  e5810000          STR      r0,[r1,#0]
;;;349    	
;;;350    	rNFCONF=(1<<22)|(TECH<<16)|(TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4)|(0<<3)|(1<<2)|(0<<1)|(1<<0);
00011c  e59f0100          LDR      r0,|L1.548|
000120  e1c110c0          BIC      r1,r1,r0,ASR #1
000124  e5810000          STR      r0,[r1,#0]
;;;351    	//             Advanced,                                                                     Not support nCE ctl, 16bit, 1KHWord, 5step 
;;;352    	rNFCONT=(0<<16)|(0<<15)|(0<<14)|(0<<13)|(0<<12)|(0<<11)|(1<<10)|(1<<9)|(0<<8)|(1<<7)|(0<<4)|(0<<3)|(1<<2)|(0<<0);  
000128  e59f00f8          LDR      r0,|L1.552|
00012c  e1c11000          BIC      r1,r1,r0
000130  e5810004          STR      r0,[r1,#4]
;;;353    	//           LdStrAddr   illegalAccINT  LoadINT  StoreINT  RnBINT    TransMode  SpareECCLock MainECCLock
;;;354    	//            initECC   Reg_nCE  PageSie Lock-tight Lock  Disable all mode
;;;355    	NF16_Reset();
000134  ebfffffe          BL       NF16_Reset
;;;356    }000138  e49df004          LDR      pc,[sp],#4
                          ENDP

                  Test_K9K2G16 PROC
;;;213    void Test_K9K2G16(void)
;;;214    {
00013c  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;215    	int i,id;
;;;216    	
;;;217    	Uart_Printf("====== K9K2G16 Test ======\n");
000140  e28f00e4          ADR      r0,|L1.556|
000144  ebfffffe          BL       _printf
;;;218    		
;;;219    	while(1)
000148  e1a00000          NOP      
                  |L1.332|
00014c  e1a00000          NOP      
;;;220    	{
;;;221    		i=0;
000150  e3a04000          MOV      r4,#0
;;;222    		//Uart_Printf("\n\n");
;;;223    		NF16_Init();	
000154  ebfffffe          BL       NF16_Init
;;;224    		id=NF16_CheckId();
000158  ebfffffe          BL       NF16_CheckId
00015c  e1a05000          MOV      r5,r0
;;;225    		if(id==0xca)
000160  e35500ca          CMP      r5,#0xca
000164  1a000003          BNE      |L1.376|
;;;226    		Uart_Printf("ID=%x(0xca)\n",id);
000168  e1a01005          MOV      r1,r5
00016c  e28f00d4          ADR      r0,|L1.584|
000170  ebfffffe          BL       _printf
000174  ea000003          B        |L1.392|
;;;227    		else	{
;;;228    			Uart_Printf("Selection fail : ID=%x\n",id);
                  |L1.376|
000178  e1a01005          MOV      r1,r5
00017c  e28f00d4          ADR      r0,|L1.600|
000180  ebfffffe          BL       _printf
;;;229    			return;
;;;230    			}
;;;231    		while(1)
;;;232    		{   //display menu
;;;233    			Uart_Printf("%2d:%s",i,func_k9k2g16_test[i][1]);
;;;234    			i++;
;;;235    			if((int)(func_k9k2g16_test[i][0])==0)
;;;236    			{
;;;237    				Uart_Printf("\n");
;;;238    				break;
;;;239    			}
;;;240    			if((i%4)==0)
;;;241    			Uart_Printf("\n");
;;;242    		}
;;;243    
;;;244    		Uart_Printf("\nPress Enter key to exit : ");
;;;245    		i = Uart_GetIntNum();
;;;246    		if(i==-1) break;		// return.
;;;247    		if(i>=0 && (i<((sizeof(func_k9k2g16_test)-1)/8)) )	// select and execute...
;;;248    			( (void (*)(void)) (func_k9k2g16_test[i][0]) )();
;;;249    	}
;;;250    }
                  |L1.388|
000184  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.392|
000188  e1a00000          NOP                            ;231
                  |L1.396|
00018c  e1a00000          NOP                            ;231
000190  e59f00d8          LDR      r0,|L1.624|           ;233
000194  e0800184          ADD      r0,r0,r4,LSL #3       ;233
000198  e1a01004          MOV      r1,r4                 ;233
00019c  e5902004          LDR      r2,[r0,#4]            ;233
0001a0  e28f00cc          ADR      r0,|L1.628|           ;233
0001a4  ebfffffe          BL       _printf               ;233
0001a8  e2844001          ADD      r4,r4,#1              ;234
0001ac  e59f00bc          LDR      r0,|L1.624|           ;235
0001b0  e7900184          LDR      r0,[r0,r4,LSL #3]     ;235
0001b4  e3500000          CMP      r0,#0                 ;235
0001b8  1a000002          BNE      |L1.456|              ;235
0001bc  e28f00b8          ADR      r0,|L1.636|           ;237
0001c0  ebfffffe          BL       _printf               ;237
0001c4  ea000004          B        |L1.476|              ;238
                  |L1.456|
0001c8  e3140003          TST      r4,#3                 ;240
0001cc  1a000001          BNE      |L1.472|              ;240
0001d0  e28f00a4          ADR      r0,|L1.636|           ;241
0001d4  ebfffffe          BL       _printf               ;241
                  |L1.472|
0001d8  eaffffeb          B        |L1.396|              ;242
                  |L1.476|
0001dc  e28f009c          ADR      r0,|L1.640|           ;244
0001e0  ebfffffe          BL       _printf               ;244
0001e4  ebfffffe          BL       Uart_GetIntNum        ;245
0001e8  e1a04000          MOV      r4,r0                 ;245
0001ec  e3740001          CMN      r4,#1                 ;246
0001f0  1a000000          BNE      |L1.504|              ;246
0001f4  ea000007          B        |L1.536|              ;246
                  |L1.504|
0001f8  e3540000          CMP      r4,#0                 ;247
0001fc  ba000004          BLT      |L1.532|              ;247
000200  e3540006          CMP      r4,#6                 ;247
000204  2a000002          BCS      |L1.532|              ;247
000208  e59f1060          LDR      r1,|L1.624|           ;248
00020c  e7910184          LDR      r0,[r1,r4,LSL #3]     ;248
000210  e12fff30          BLX      r0                    ;248
                  |L1.532|
000214  eaffffcc          B        |L1.332|              ;249
                  |L1.536|
000218  eaffffd9          B        |L1.388|
                  |L1.540|
00021c  40c00000          DCD      0x40c00000
                  |L1.544|
000220  40c20000          DCD      0x40c20000
                  |L1.548|
000224  007f7775          DCD      0x007f7775
                  |L1.552|
000228  00000684          DCD      0x00000684
                  |L1.556|
00022c  3d3d3d3d          DCB      "===="
000230  4b203d3d          DCB      "== K"
000234  47324b39          DCB      "9K2G"
000238  54203631          DCB      "16 T"
00023c  20747365          DCB      "est "
000240  3d3d3d3d          DCB      "===="
000244  000a3d3d          DCB      "==\n\0"
                  |L1.584|
000248  253d4449          DCB      "ID=%"
00024c  78302878          DCB      "x(0x"
000250  0a296163          DCB      "ca)\n"
000254  00000000          DCB      "\0\0\0\0"
                  |L1.600|
000258  656c6553          DCB      "Sele"
00025c  6f697463          DCB      "ctio"
000260  6166206e          DCB      "n fa"
000264  3a206c69          DCB      "il :"
000268  3d444920          DCB      " ID="
00026c  000a7825          DCB      "%x\n\0"
                  |L1.624|
000270  00000000          DCD      func_k9k2g16_test
                  |L1.628|
000274  3a643225          DCB      "%2d:"
000278  00007325          DCB      "%s\0\0"
                  |L1.636|
00027c  0000000a          DCB      "\n\0\0\0"
                  |L1.640|
000280  6572500a          DCB      "\nPre"
000284  45207373          DCB      "ss E"
000288  7265746e          DCB      "nter"
00028c  79656b20          DCB      " key"
000290  206f7420          DCB      " to "
000294  74697865          DCB      "exit"
000298  00203a20          DCB      " : \0"
                          ENDP

                  NF_CheckId PROC
;;;251    static U8 NF_CheckId(void)

⌨️ 快捷键说明

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