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

📄 nand.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;252    {
00029c  e92d4010          STMFD    sp!,{r4,lr}
;;;253        int i;
;;;254        U8 id,id1, id2,id3,id4;
;;;255        
;;;256        NF_nFCE_L();
0002a0  e51fe08c          LDR      lr,|L1.540|
0002a4  e59ee004          LDR      lr,[lr,#4]
0002a8  e3cee080          BIC      lr,lr,#0x80
0002ac  e51f4098          LDR      r4,|L1.540|
0002b0  e584e004          STR      lr,[r4,#4]
;;;257        
;;;258        NF_CMD(0x90);
0002b4  e3a0e090          MOV      lr,#0x90
0002b8  e584e008          STR      lr,[r4,#8]
;;;259        NF_ADDR(0x0);
0002bc  e3a0e000          MOV      lr,#0
0002c0  e584e00c          STR      lr,[r4,#0xc]
;;;260        
;;;261        for(i=0;i<10;i++); //wait tWB(100ns)////?????
0002c4  e3a01000          MOV      r1,#0
                  |L1.712|
0002c8  e351000a          CMP      r1,#0xa
0002cc  aa000001          BGE      |L1.728|
0002d0  e2811001          ADD      r1,r1,#1
0002d4  eafffffb          B        |L1.712|
;;;262    
;;;263    //    id=NF_RDDATA()<<8;	// Maker code(K9S1208V:0xec)
;;;264    //    id|=NF_RDDATA();	// Devide code(K9S1208V:0x76)
;;;265    
;;;266        id1=NF_RDDATA();	// Maker code(K9S1208V:0xec)
                  |L1.728|
0002d8  e51fe0c4          LDR      lr,|L1.540|
0002dc  e59ee010          LDR      lr,[lr,#0x10]
0002e0  e20e20ff          AND      r2,lr,#0xff
;;;267        id2=NF_RDDATA();	// Devide code(K9S1208V:0x76)
0002e4  e51fe0d0          LDR      lr,|L1.540|
0002e8  e59ee010          LDR      lr,[lr,#0x10]
0002ec  e20e00ff          AND      r0,lr,#0xff
;;;268        id3=NF_RDDATA();	
0002f0  e51fe0dc          LDR      lr,|L1.540|
0002f4  e59ee010          LDR      lr,[lr,#0x10]
0002f8  e20e30ff          AND      r3,lr,#0xff
;;;269        id4=NF_RDDATA();	 
0002fc  e51fe0e8          LDR      lr,|L1.540|
000300  e59ee010          LDR      lr,[lr,#0x10]
000304  e20ec0ff          AND      r12,lr,#0xff
;;;270          
;;;271        NF_nFCE_H();
000308  e51fe0f4          LDR      lr,|L1.540|
00030c  e59ee004          LDR      lr,[lr,#4]
000310  e38ee080          ORR      lr,lr,#0x80
000314  e51f4100          LDR      r4,|L1.540|
000318  e584e004          STR      lr,[r4,#4]
;;;272        //Uart_Printf("\n%x,%x,%x,%x\n ",id1,id2,id3,id4);    
;;;273        return id2;
;;;274    }
00031c  e8bd8010          LDMFD    sp!,{r4,pc}
                          ENDP

                  NF_Reset PROC
;;;296    void NF_Reset(void)
;;;297    {
000320  e51f110c          LDR      r1,|L1.540|
;;;298    	int i;
;;;299    	rNFCONT|=(3<<0); //software mode
000324  e5911004          LDR      r1,[r1,#4]
000328  e3811003          ORR      r1,r1,#3
00032c  e51f2118          LDR      r2,|L1.540|
000330  e5821004          STR      r1,[r2,#4]
;;;300    	NF_nFCE_L();
000334  e1a01002          MOV      r1,r2
000338  e5911004          LDR      r1,[r1,#4]
00033c  e3c11080          BIC      r1,r1,#0x80
000340  e5821004          STR      r1,[r2,#4]
;;;301    	NF_CLRRnB(); 
000344  e1a01002          MOV      r1,r2
000348  e591102c          LDR      r1,[r1,#0x2c]
00034c  e3811d80          ORR      r1,r1,#0x2000
000350  e582102c          STR      r1,[r2,#0x2c]
;;;302    	NF_CMD(0xFF);	//reset command
000354  e3a010ff          MOV      r1,#0xff
000358  e1c22001          BIC      r2,r2,r1
00035c  e5821008          STR      r1,[r2,#8]
;;;303    
;;;304    	for(i=0;i<10;i++);  //tWB = 100ns. //??????
000360  e3a00000          MOV      r0,#0
                  |L1.868|
000364  e350000a          CMP      r0,#0xa
000368  aa000001          BGE      |L1.884|
00036c  e2800001          ADD      r0,r0,#1
000370  eafffffb          B        |L1.868|
;;;305    	NF_TRANSRnB();      //wait 200~500us;
                  |L1.884|
000374  e1a00000          NOP      
                  |L1.888|
000378  e51f1164          LDR      r1,|L1.540|
00037c  e591102c          LDR      r1,[r1,#0x2c]
000380  e3110d80          TST      r1,#0x2000
000384  0afffffb          BEQ      |L1.888|
;;;306    	NF_nFCE_H();
000388  e51f1174          LDR      r1,|L1.540|
00038c  e5911004          LDR      r1,[r1,#4]
000390  e3811080          ORR      r1,r1,#0x80
000394  e51f2180          LDR      r2,|L1.540|
000398  e5821004          STR      r1,[r2,#4]
;;;307    }
00039c  e12fff1e          BX       lr
                          ENDP

                  NF_Init PROC
;;;321    static void NF_Init(void)
;;;322    {
0003a0  e52de004          STR      lr,[sp,#-4]!
;;;323    	rSROM_BW|=(1<<9);	
0003a4  e51f018c          LDR      r0,|L1.544|
0003a8  e5900000          LDR      r0,[r0,#0]
0003ac  e3800f80          ORR      r0,r0,#0x200
0003b0  e51f1198          LDR      r1,|L1.544|
0003b4  e5810000          STR      r0,[r1,#0]
;;;324    	
;;;325    	rNFCONF=(0<<22)|(TECH<<16)|(TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4)|(0<<3)|(0<<2)|(1<<1)|(1<<0);
0003b8  e59f00f8          LDR      r0,|L1.1208|
0003bc  e1c11000          BIC      r1,r1,r0
0003c0  e5810000          STR      r0,[r1,#0]
;;;326    	// AdvFlash(R)		[22]		Advanced NAND, 0:256/512, 1:1024/2048
;;;327    	// TCEH				[21:16]	nCE High hold time
;;;328    	// TACLS			[14:12]	CLE&ALE duration = HCLK*TACLS.
;;;329    	// TWRPH0			[10:8]	TWRPH0 duration = HCLK*(TWRPH0+1)
;;;330    	// TWRPH1			[6:4]	TWRPH1 duration = HCLK*(TWRPH1+1)
;;;331    	// HW_nCE			[3]		H/W nCE control
;;;332    	// BusWidth(H/W set)	[2]	NAND bus width. 0:8-bit, 1:16-bit.	
;;;333    	// PageSize(H/W set)	[1]		NAND memory page size
;;;334    	//						when [22]==0, 0:256, 1:512 bytes/page.
;;;335    	//						when [22]==1, 0:1024, 1:2048 bytes/page.
;;;336    	// AddrCycle(H/W set)	[0]		NAND flash addr size
;;;337    	//						when [22]==0, 0:3-addr, 1:4-addr.
;;;338    	//						when [22]==1, 0:4-addr, 1:5-addr.	
;;;339    	// 						Advance off,Not support nCE ctl, 8bit, 512B, 4step 
;;;340    	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);
0003c4  e51f01a4          LDR      r0,|L1.552|
0003c8  e1c11000          BIC      r1,r1,r0
0003cc  e5810004          STR      r0,[r1,#4]
;;;341    	// LdStrAddr   illegalAccINT  LoadINT  StoreINT  RnBINT    TransMode  SpareECCLock MainECCLock
;;;342    	// initECC   Reg_nCE  PageSie Lock-tight Lock  Software mode
;;;343    	NF_Reset();
0003d0  ebfffffe          BL       NF_Reset
;;;344    }
0003d4  e49df004          LDR      pc,[sp],#4
                          ENDP

                  Test_K9D1G08 PROC
;;;174    void Test_K9D1G08(void)
;;;175    {
0003d8  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;176    	int i,id;
;;;177    	
;;;178    	Uart_Printf("====== K9D1G08 Test ======\n");
0003dc  e28f00d8          ADR      r0,|L1.1212|
0003e0  ebfffffe          BL       _printf
;;;179    		
;;;180    	while(1)
0003e4  e1a00000          NOP      
                  |L1.1000|
0003e8  e1a00000          NOP      
;;;181    	{
;;;182    		i=0;
0003ec  e3a04000          MOV      r4,#0
;;;183    		//Uart_Printf("\n\n");
;;;184    		NF_Init();	
0003f0  ebfffffe          BL       NF_Init
;;;185    		id=NF_CheckId();
0003f4  ebfffffe          BL       NF_CheckId
0003f8  e1a05000          MOV      r5,r0
;;;186    		if(id==0x79)
0003fc  e3550079          CMP      r5,#0x79
000400  1a000003          BNE      |L1.1044|
;;;187    		Uart_Printf("ID=%x(0x79)\n",id);
000404  e1a01005          MOV      r1,r5
000408  e28f00c8          ADR      r0,|L1.1240|
00040c  ebfffffe          BL       _printf
000410  ea000003          B        |L1.1060|
;;;188    		else	{
;;;189    			Uart_Printf("Selection fail : ID=%x\n",id);
                  |L1.1044|
000414  e1a01005          MOV      r1,r5
000418  e24f0f72          ADR      r0,|L1.600|
00041c  ebfffffe          BL       _printf
;;;190    			return;
;;;191    			}
;;;192    		while(1)
;;;193    		{   //display menu
;;;194    			Uart_Printf("%2d:%s",i,func_k9d1g08_test[i][1]);
;;;195    			i++;
;;;196    			if((int)(func_k9d1g08_test[i][0])==0)
;;;197    			{
;;;198    				Uart_Printf("\n");
;;;199    				break;
;;;200    			}
;;;201    			if((i%4)==0)
;;;202    			Uart_Printf("\n");
;;;203    		}
;;;204    
;;;205    		Uart_Printf("\nPress Enter key to exit : ");
;;;206    		i = Uart_GetIntNum();
;;;207    		if(i==-1) break;		// return.
;;;208    		if(i>=0 && (i<((sizeof(func_k9d1g08_test)-1)/8)) )	// select and execute...
;;;209    			( (void (*)(void)) (func_k9d1g08_test[i][0]) )();
;;;210    	}
;;;211    }
                  |L1.1056|
000420  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.1060|
000424  e1a00000          NOP                            ;192
                  |L1.1064|
000428  e1a00000          NOP                            ;192
00042c  e59f00b4          LDR      r0,|L1.1256|          ;194
000430  e0800184          ADD      r0,r0,r4,LSL #3       ;194
000434  e1a01004          MOV      r1,r4                 ;194
000438  e5902004          LDR      r2,[r0,#4]            ;194
00043c  e24f0f74          ADR      r0,|L1.628|           ;194
000440  ebfffffe          BL       _printf               ;194
000444  e2844001          ADD      r4,r4,#1              ;195
000448  e59f0098          LDR      r0,|L1.1256|          ;196
00044c  e7900184          LDR      r0,[r0,r4,LSL #3]     ;196
000450  e3500000          CMP      r0,#0                 ;196
000454  1a000002          BNE      |L1.1124|             ;196
000458  e24f0f79          ADR      r0,|L1.636|           ;198
00045c  ebfffffe          BL       _printf               ;198
000460  ea000004          B        |L1.1144|             ;199
                  |L1.1124|
000464  e3140003          TST      r4,#3                 ;201
000468  1a000001          BNE      |L1.1140|             ;201
00046c  e24f0f7e          ADR      r0,|L1.636|           ;202
000470  ebfffffe          BL       _printf               ;202
                  |L1.1140|
000474  eaffffeb          B        |L1.1064|             ;203
                  |L1.1144|
000478  e24f0f80          ADR      r0,|L1.640|           ;205
00047c  ebfffffe          BL       _printf               ;205
000480  ebfffffe          BL       Uart_GetIntNum        ;206
000484  e1a04000          MOV      r4,r0                 ;206
000488  e3740001          CMN      r4,#1                 ;207
00048c  1a000000          BNE      |L1.1172|             ;207
000490  ea000007          B        |L1.1204|             ;207
                  |L1.1172|
000494  e3540000          CMP      r4,#0                 ;208
000498  ba000004          BLT      |L1.1200|             ;208
00049c  e3540006          CMP      r4,#6                 ;208
0004a0  2a000002          BCS      |L1.1200|             ;208
0004a4  e59f103c          LDR      r1,|L1.1256|          ;209
0004a8  e7910184          LDR      r0,[r1,r4,LSL #3]     ;209
0004ac  e12fff30          BLX      r0                    ;209
                  |L1.1200|
0004b0  eaffffcc          B        |L1.1000|             ;210
                  |L1.1204|
0004b4  eaffffd9          B        |L1.1056|
                  |L1.1208|
0004b8  003f7773          DCD      0x003f7773
                  |L1.1212|
0004bc  3d3d3d3d          DCB      "===="
0004c0  4b203d3d          DCB      "== K"
0004c4  47314439          DCB      "9D1G"
0004c8  54203830          DCB      "08 T"
0004cc  20747365          DCB      "est "
0004d0  3d3d3d3d          DCB      "===="
0004d4  000a3d3d          DCB      "==\n\0"
                  |L1.1240|
0004d8  253d4449          DCB      "ID=%"
0004dc  78302878          DCB      "x(0x"
0004e0  0a293937          DCB      "79)\n"
0004e4  00000000          DCB      "\0\0\0\0"
                  |L1.1256|
0004e8  00000000          DCD      func_k9d1g08_test
                          ENDP

                  Test_K9S1208 PROC
;;;134    void Test_K9S1208(void)
;;;135    {
0004ec  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;136    	int i,id;
;;;137    	
;;;138    	Uart_Printf("====== K9S1208 Test ======\n");
0004f0  e28f00d4          ADR      r0,|L1.1484|
0004f4  ebfffffe          BL       _printf
;;;139    		
;;;140    	while(1)
0004f8  e1a00000          NOP      
                  |L1.1276|
0004fc  e1a00000          NOP      
;;;141    	{
;;;142    		i=0;
000500  e3a04000          MOV      r4,#0
;;;143    		//Uart_Printf("\n\n");
;;;144    		NF_Init();	
000504  ebfffffe          BL       NF_Init

⌨️ 快捷键说明

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