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

📄 k9f1g08.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\K9F1G08.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  NF1G08_Init PROC
;;;999    static void NF1G08_Init(void)
;;;1000   {
                  |L1.0|
000000  e59f0074          LDR      r0,|L1.124|
;;;1001   	// for S3C2442
;;;1002   
;;;1003   	rNFCONF = (TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4)|(0<<0);	
000004  e3a0144e          MOV      r1,#0x4e000000
000008  e5810000          STR      r0,[r1,#0]
;;;1004   	// TACLS		[14:12]	CLE&ALE duration = HCLK*TACLS.
;;;1005   	// TWRPH0		[10:8]	TWRPH0 duration = HCLK*(TWRPH0+1)
;;;1006   	// TWRPH1		[6:4]	TWRPH1 duration = HCLK*(TWRPH1+1)
;;;1007   	// AdvFlash(R)	[3]		Advanced NAND, 0:256/512, 1:1024/2048
;;;1008   	// PageSize(R)	[2]		NAND memory page size
;;;1009   	//						when [3]==0, 0:256, 1:512 bytes/page.
;;;1010   	//						when [3]==1, 0:1024, 1:2048 bytes/page.
;;;1011   	// AddrCycle(R)	[1]		NAND flash addr size
;;;1012   	//						when [3]==0, 0:3-addr, 1:4-addr.
;;;1013   	//						when [3]==1, 0:4-addr, 1:5-addr.
;;;1014   	// BusWidth(R/W) [0]	NAND bus width. 0:8-bit, 1:16-bit.
;;;1015   	
;;;1016   	rNFCONT = (0<<13)|(0<<12)|(0<<10)|(0<<9)|(0<<8)|(1<<6)|(1<<5)|(1<<4)|(1<<1)|(1<<0);
00000c  e3a00073          MOV      r0,#0x73
000010  e3a0144e          MOV      r1,#0x4e000000
000014  e5810004          STR      r0,[r1,#4]
;;;1017   	// Lock-tight	[13]	0:Disable lock, 1:Enable lock.
;;;1018   	// Soft Lock	[12]	0:Disable lock, 1:Enable lock.
;;;1019   	// EnablillegalAcINT[10]	Illegal access interupt control. 0:Disable, 1:Enable
;;;1020   	// EnbRnBINT	[9]		RnB interrupt. 0:Disable, 1:Enable
;;;1021   	// RnB_TrandMode[8]		RnB transition detection config. 0:Low to High, 1:High to Low
;;;1022   	// SpareECCLock	[6]		0:Unlock, 1:Lock
;;;1023   	// MainECCLock	[5]		0:Unlock, 1:Lock
;;;1024   	// InitECC(W)	[4]		1:Init ECC decoder/encoder.
;;;1025   	// Reg_nCE		[1]		0:nFCE=0, 1:nFCE=1.
;;;1026   	// NANDC Enable	[0]		operating mode. 0:Disable, 1:Enable.
;;;1027   
;;;1028   //	rNFSTAT = 0;
;;;1029       
;;;1030   //    Nand_Reset();
;;;1031   }
000018  e1a0f00e          MOV      pc,lr
                          ENDP

                  Test_K9F1G08 PROC
;;;156    void Test_K9F1G08(void)
;;;157    {
00001c  e92d4010          STMFD    sp!,{r4,lr}
;;;158    	int i;
;;;159    	U8 ch;
;;;160    
;;;161    	Uart_Printf("\nK9F1G08 Nand flash test start.\n");
000020  e28f0058          ADR      r0,|L1.128|
000024  ebfffffe          BL       Uart_Printf
;;;162    
;;;163    	NF1G08_Init();
000028  ebfffffe          BL       NF1G08_Init
;;;164    
;;;165    	while(1) {
00002c  e1a00000          NOP      
                  |L1.48|
000030  e1a00000          NOP      
;;;166    		PrintSubMessage();
000034  ebfffffe          BL       PrintSubMessage
;;;167    		Uart_Printf("\nSelect(-1 to exit): ");
000038  e28f0064          ADR      r0,|L1.164|
00003c  ebfffffe          BL       Uart_Printf
;;;168    		i = Uart_GetIntNum();
000040  ebfffffe          BL       Uart_GetIntNum
000044  e1a04000          MOV      r4,r0
;;;169    		
;;;170    		if(i==-1) break;
000048  e3740001          CMN      r4,#1
00004c  1a000000          BNE      |L1.84|
000050  ea000008          B        |L1.120|
;;;171    		
;;;172    		if(i>=0 && (i<(sizeof(n1G08_func)/8)) ) 
                  |L1.84|
000054  e3540000          CMP      r4,#0
000058  ba000005          BLT      |L1.116|
00005c  e354000b          CMP      r4,#0xb
000060  2a000003          BCS      |L1.116|
;;;173    	    	( (void (*)(void)) (n1G08_func[i][0]) )();	// execute selected function.
000064  e59f1050          LDR      r1,|L1.188|
000068  e7910184          LDR      r0,[r1,r4,LSL #3]
00006c  e1a0e00f          MOV      lr,pc
000070  e1a0f000          MOV      pc,r0
;;;174    	}
                  |L1.116|
000074  eaffffed          B        |L1.48|
;;;175    
;;;176    }
                  |L1.120|
000078  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.124|
00007c  00007770          DCD      0x00007770
                  |L1.128|
000080  46394b0a          DCB      "\nK9F"
000084  38304731          DCB      "1G08"
000088  6e614e20          DCB      " Nan"
00008c  6c662064          DCB      "d fl"
000090  20687361          DCB      "ash "
000094  74736574          DCB      "test"
000098  61747320          DCB      " sta"
00009c  0a2e7472          DCB      "rt.\n"
0000a0  00000000          DCB      "\0\0\0\0"
                  |L1.164|
0000a4  6c65530a          DCB      "\nSel"
0000a8  28746365          DCB      "ect("
0000ac  7420312d          DCB      "-1 t"
0000b0  7865206f          DCB      "o ex"
0000b4  3a297469          DCB      "it):"
0000b8  00000020          DCB      " \0\0\0"
                  |L1.188|
0000bc  00000000          DCD      n1G08_func
                          ENDP

                  NF1G08_CheckId PROC
;;;964    static U16 NF1G08_CheckId(void)
;;;965    {
0000c0  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;966        int i;
;;;967    	U16 id, id4th;
;;;968    
;;;969    	
;;;970    	NF_nFCE_L();
0000c4  e3a0044e          MOV      r0,#0x4e000000
0000c8  e5900004          LDR      r0,[r0,#4]
0000cc  e3c00002          BIC      r0,r0,#2
0000d0  e3a0144e          MOV      r1,#0x4e000000
0000d4  e5810004          STR      r0,[r1,#4]
;;;971          	NF_CMD(0x90);
0000d8  e3a00090          MOV      r0,#0x90
0000dc  e3a0144e          MOV      r1,#0x4e000000
0000e0  e5810008          STR      r0,[r1,#8]
;;;972    	NF_ADDR(0x0);
0000e4  e3a00000          MOV      r0,#0
0000e8  e3a0144e          MOV      r1,#0x4e000000
0000ec  e581000c          STR      r0,[r1,#0xc]
;;;973    	for (i=0; i<10; i++);
0000f0  e3a05000          MOV      r5,#0
                  |L1.244|
0000f4  e355000a          CMP      r5,#0xa
0000f8  aa000001          BGE      |L1.260|
0000fc  e2855001          ADD      r5,r5,#1
000100  eafffffb          B        |L1.244|
;;;974    	Uart_Printf("NFSTAT: 0x%x\n", rNFSTAT);
                  |L1.260|
000104  e3a0044e          MOV      r0,#0x4e000000
000108  e5900020          LDR      r0,[r0,#0x20]
00010c  e1a01000          MOV      r1,r0
000110  e28f0034          ADR      r0,|L1.332|
000114  ebfffffe          BL       Uart_Printf
;;;975           id=NF_RDDATA8()<<8;	// Maker code 0xec
000118  e3a0044e          MOV      r0,#0x4e000000
00011c  e5d00010          LDRB     r0,[r0,#0x10]
000120  e1a04400          MOV      r4,r0,LSL #8
;;;976           id|=NF_RDDATA8();	// Devide code(K9S1208V:0x76), (K9K2G16U0M:0xca)
000124  e3a0044e          MOV      r0,#0x4e000000
000128  e5d00010          LDRB     r0,[r0,#0x10]
00012c  e1804004          ORR      r4,r0,r4
;;;977    
;;;978    	NF_nFCE_H();
000130  e3a0044e          MOV      r0,#0x4e000000
000134  e5900004          LDR      r0,[r0,#4]
000138  e3800002          ORR      r0,r0,#2
00013c  e3a0144e          MOV      r1,#0x4e000000
000140  e5810004          STR      r0,[r1,#4]
;;;979        
;;;980           return id;
000144  e1a00004          MOV      r0,r4
;;;981    }
000148  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.332|
00014c  5453464e          DCB      "NFST"
000150  203a5441          DCB      "AT: "
000154  78257830          DCB      "0x%x"
000158  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  NF1G08_Print_Id PROC
;;;197    void NF1G08_Print_Id(void)
;;;198    {
00015c  e92d4070          STMFD    sp!,{r4-r6,lr}
;;;199    	U16 id;
;;;200    	U8 maker, device;
;;;201    
;;;202    //	NF1G08_Init();
;;;203    	id = NF1G08_CheckId();
000160  ebfffffe          BL       NF1G08_CheckId
000164  e1a04000          MOV      r4,r0
;;;204    	
;;;205    	device = (U8)id;
000168  e20460ff          AND      r6,r4,#0xff
;;;206    	maker = (U8)(id>>8);
00016c  e1a05424          MOV      r5,r4,LSR #8
;;;207    	
;;;208    	Uart_Printf("Maker:%x, Device:%x\n", maker, device);
000170  e1a02006          MOV      r2,r6
000174  e1a01005          MOV      r1,r5
000178  e28f0004          ADR      r0,|L1.388|
00017c  ebfffffe          BL       Uart_Printf
;;;209    }
000180  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                  |L1.388|
000184  656b614d          DCB      "Make"
000188  78253a72          DCB      "r:%x"
00018c  6544202c          DCB      ", De"
000190  65636976          DCB      "vice"
000194  0a78253a          DCB      ":%x\n"
000198  00000000          DCB      "\0\0\0\0"
                          ENDP

                  NFCon_Int_1G08 PROC
;;;623    void __irq NFCon_Int_1G08(void)
;;;624    {
00019c  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;625           NFConDone_1G08=1;
0001a0  e3a00001          MOV      r0,#1
0001a4  e59f1054          LDR      r1,|L1.512|
0001a8  e5810000          STR      r0,[r1,#0]  ; NFConDone_1G08
;;;626    	rINTMSK|=BIT_NFCON;
0001ac  e3a0044a          MOV      r0,#0x4a000000
0001b0  e5900008          LDR      r0,[r0,#8]
0001b4  e3800740          ORR      r0,r0,#0x1000000
0001b8  e3a0144a          MOV      r1,#0x4a000000
0001bc  e5810008          STR      r0,[r1,#8]
;;;627    	ClearPending(BIT_NFCON);
0001c0  e3a00740          MOV      r0,#0x1000000
0001c4  e3a0144a          MOV      r1,#0x4a000000
0001c8  e5810000          STR      r0,[r1,#0]
0001cc  e3a00740          MOV      r0,#0x1000000
0001d0  e3a0144a          MOV      r1,#0x4a000000
0001d4  e5810010          STR      r0,[r1,#0x10]
0001d8  e3a0044a          MOV      r0,#0x4a000000
0001dc  e5900010          LDR      r0,[r0,#0x10]
;;;628    	if(rNFSTAT&0x8) Uart_Printf("Illegal Access is detected!!!\n");
0001e0  e3a0044e          MOV      r0,#0x4e000000
0001e4  e5900020          LDR      r0,[r0,#0x20]
0001e8  e3100008          TST      r0,#8
0001ec  0a000001          BEQ      |L1.504|
0001f0  e28f000c          ADR      r0,|L1.516|
0001f4  ebfffffe          BL       Uart_Printf
;;;629    //	else Uart_Printf("RnB is Detected!!!\n"); 
;;;630    }
                  |L1.504|
0001f8  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
0001fc  e25ef004          SUBS     pc,lr,#4
                  |L1.512|
000200  00000040          DCD      ||.bss$2|| + 64
                  |L1.516|
000204  656c6c49          DCB      "Ille"
000208  206c6167          DCB      "gal "
00020c  65636341          DCB      "Acce"
000210  69207373          DCB      "ss i"
000214  65642073          DCB      "s de"
000218  74636574          DCB      "tect"
00021c  21216465          DCB      "ed!!"
000220  00000a21          DCB      "!\n\0\0"
                          ENDP

                  NF1G08_EraseBlock PROC
;;;572    static int NF1G08_EraseBlock(U32 block)
;;;573    {
000224  e92d4038          STMFD    sp!,{r3-r5,lr}
000228  e1a04000          MOV      r4,r0
;;;574        U32 blockPage=(block<<6);
00022c  e1a05304          MOV      r5,r4,LSL #6
;;;575        int i;
;;;576    
;;;577        NFConDone_1G08=0;
000230  e3a00000          MOV      r0,#0
000234  e51f103c          LDR      r1,|L1.512|
000238  e5810000          STR      r0,[r1,#0]  ; NFConDone_1G08
;;;578        rNFCONT|=(1<<9);
00023c  e3a0044e          MOV      r0,#0x4e000000
000240  e5900004          LDR      r0,[r0,#4]
000244  e3800f80          ORR      r0,r0,#0x200
000248  e3a0144e          MOV      r1,#0x4e000000
00024c  e5810004          STR      r0,[r1,#4]
;;;579        rNFCONT|=(1<<10);
000250  e3a0044e          MOV      r0,#0x4e000000
000254  e5900004          LDR      r0,[r0,#4]
000258  e3800e40          ORR      r0,r0,#0x400
00025c  e3a0144e          MOV      r1,#0x4e000000
000260  e5810004          STR      r0,[r1,#4]
;;;580        pISR_NFCON= (unsigned)NFCon_Int_1G08;
000264  e59f012c          LDR      r0,|L1.920|
000268  e59f112c          LDR      r1,|L1.924|
00026c  e5810f80          STR      r0,[r1,#0xf80]
;;;581        rSRCPND=BIT_NFCON;
000270  e3a00740          MOV      r0,#0x1000000
000274  e3a0144a          MOV      r1,#0x4a000000
000278  e5810000          STR      r0,[r1,#0]
;;;582        rINTMSK=~(BIT_NFCON);
00027c  e3e00740          MVN      r0,#0x1000000
000280  e3a0144a          MOV      r1,#0x4a000000
000284  e5810008          STR      r0,[r1,#8]
;;;583    	
;;;584    #if BAD_CHECK

⌨️ 快捷键说明

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