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

📄 2442lib.txt

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

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

                          AREA ||.text||, CODE, READONLY

                  Delay PROC
;;;28     void Delay(int time)
;;;29     {
                  |L1.0|
000000  e92d4070          STMFD    sp!,{r4-r6,lr}
000004  e1a05000          MOV      r5,r0
;;;30           	// time=0: adjust the Delay function by WatchDog timer.
;;;31           	// time>0: the number of loop time
;;;32           	// resolution of time is 100us.
;;;33      	int i, adjust=0;
000008  e3a06000          MOV      r6,#0
;;;34     
;;;35         	if(time==0)
00000c  e3550000          CMP      r5,#0
000010  1a00000f          BNE      |L1.84|
;;;36         	{
;;;37            	time   = 200;
000014  e3a050c8          MOV      r5,#0xc8
;;;38             	adjust = 1;
000018  e3a06001          MOV      r6,#1
;;;39             	delayLoopCount = 800;
00001c  e3a00fc8          MOV      r0,#0x320
000020  e59f1420          LDR      r1,|L1.1096|
000024  e5810000          STR      r0,[r1,#0]  ; delayLoopCount
;;;40     
;;;41                 	//PCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable
;;;42             	rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); 
000028  e59f041c          LDR      r0,|L1.1100|
00002c  e3a01453          MOV      r1,#0x53000000
000030  e5810000          STR      r0,[r1,#0]
;;;43             	rWTDAT = 0xffff;                              //for first update
000034  e0660806          RSB      r0,r6,r6,LSL #16
000038  e3a01453          MOV      r1,#0x53000000
00003c  e5810004          STR      r0,[r1,#4]
;;;44             	rWTCNT = 0xffff;                              //resolution=64us @any PCLK 
000040  e3a01453          MOV      r1,#0x53000000
000044  e5810008          STR      r0,[r1,#8]
;;;45     		rWTCON = ((PCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start
000048  e59f0400          LDR      r0,|L1.1104|
00004c  e3a01453          MOV      r1,#0x53000000
000050  e5810000          STR      r0,[r1,#0]
;;;46         	}
;;;47     
;;;48         	for(;time>0;time--)
                  |L1.84|
000054  e1a00000          NOP      
                  |L1.88|
000058  e3550000          CMP      r5,#0
00005c  da00000a          BLE      |L1.140|
000060  ea000001          B        |L1.108|
                  |L1.100|
000064  e2455001          SUB      r5,r5,#1
000068  eafffffa          B        |L1.88|
;;;49            	for(i=0;i<delayLoopCount;i++);
                  |L1.108|
00006c  e3a04000          MOV      r4,#0
                  |L1.112|
000070  e59f03d0          LDR      r0,|L1.1096|
000074  e5900000          LDR      r0,[r0,#0]  ; delayLoopCount
000078  e1540000          CMP      r4,r0
00007c  aa000001          BGE      |L1.136|
000080  e2844001          ADD      r4,r4,#1
000084  eafffff9          B        |L1.112|
                  |L1.136|
000088  eafffff5          B        |L1.100|
;;;50     
;;;51         	if(adjust==1)
                  |L1.140|
00008c  e3560001          CMP      r6,#1
000090  1a00000b          BNE      |L1.196|
;;;52         	{
;;;53             	rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); //Watch-dog timer stop
000094  e59f03b0          LDR      r0,|L1.1100|
000098  e3a01453          MOV      r1,#0x53000000
00009c  e5810000          STR      r0,[r1,#0]
;;;54             	i = 0xffff - rWTCNT;                     //1count->64us, 200*800 cycle runtime = 64*i us
0000a0  e3a00453          MOV      r0,#0x53000000
0000a4  e5900008          LDR      r0,[r0,#8]
0000a8  e26040ff          RSB      r4,r0,#0xff
0000ac  e2844cff          ADD      r4,r4,#0xff00
;;;55     
;;;56     		//Uart_Printf("\nrWTCNT=%x ", rWTCNT);
;;;57     		//Uart_Printf("\ni (0xffff -rWTCNT)=%d", i);
;;;58     		
;;;59             	delayLoopCount = 16000000/(i*64);         //200*800:64*i=1*x:100 -> x=160000*100/(64*i)   
0000b0  e1a00304          MOV      r0,r4,LSL #6
0000b4  e59f1398          LDR      r1,|L1.1108|
0000b8  ebfffffe          BL       __rt_sdiv
0000bc  e59f1384          LDR      r1,|L1.1096|
0000c0  e5810000          STR      r0,[r1,#0]  ; delayLoopCount
;;;60             	//Uart_Printf("\ndelayLoopCount=%d", delayLoopCount);
;;;61         	}
;;;62         		
;;;63     }
                  |L1.196|
0000c4  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                          ENDP

                  Port_Init PROC
;;;67     void Port_Init(void)
;;;68     {
0000c8  e59f0388          LDR      r0,|L1.1112|
;;;69         //CAUTION:Follow the configuration order for setting the ports. 
;;;70         // 1) setting value(GPnDAT) 
;;;71         // 2) setting control register  (GPnCON)
;;;72         // 3) configure pull-up resistor(GPnUP)  
;;;73     
;;;74         //32bit data bus configuration  
;;;75         //*** PORT A GROUP
;;;76         //Ports  : GPA22 GPA21  GPA20 GPA19 GPA18 GPA17 GPA16 GPA15 GPA14 GPA13 GPA12  
;;;77         //Signal : nFCE nRSTOUT nFRE   nFWE  ALE   CLE  nGCS5 nGCS4 nGCS3 nGCS2 nGCS1 
;;;78         //Binary :  1     1      1  , 1   1   1    1   ,  1     1     1     1
;;;79         //Ports  : GPA11   GPA10  GPA9   GPA8   GPA7   GPA6   GPA5   GPA4   GPA3   GPA2   GPA1  GPA0
;;;80         //Signal : ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0 
;;;81         //Binary :  1       1      1      1   , 1       1      1      1   ,  1       1     1      1         
;;;82         rGPACON = 0x7fffff; 
0000cc  e3a01456          MOV      r1,#0x56000000
0000d0  e5810000          STR      r0,[r1,#0]
;;;83     
;;;84         //**** PORT B GROUP
;;;85         //Ports  : GPB10    GPB9    GPB8    GPB7    GPB6     GPB5    GPB4   GPB3   GPB2     GPB1      GPB0
;;;86         //Signal : nXDREQ0 nXDACK0 nXDREQ1 nXDACK1 nSS_KBD nDIS_OFF L3CLOCK L3DATA L3MODE nIrDATXDEN Keyboard
;;;87         //Setting: OUTPUT  OUTPUT   OUTPUT  OUTPUT   OUTPUT   OUTPUT   OUTPUT OUTPUT OUTPUT   OUTPUT    OUTPUT 
;;;88         //Binary :   01  ,  01       01  ,   01      01   ,  01       01  ,   01     01   ,  01        01  
;;;89         rGPBCON = 0x155555;
0000d4  e59f0380          LDR      r0,|L1.1116|
0000d8  e3a01456          MOV      r1,#0x56000000
0000dc  e5810010          STR      r0,[r1,#0x10]
;;;90         rGPBUP  = 0x7ff;     // The pull up function is disabled GPB[10:0]
0000e0  e59f0378          LDR      r0,|L1.1120|
0000e4  e3a01456          MOV      r1,#0x56000000
0000e8  e5810018          STR      r0,[r1,#0x18]
;;;91     
;;;92         //*** PORT C GROUP
;;;93         //Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8  GPC7   GPC6   GPC5 GPC4 GPC3  GPC2  GPC1 GPC0
;;;94         //Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND  
;;;95         //Binary :  10   10  , 10    10  , 10    10  , 10   10  , 10     10  ,  10   10 , 10     10 , 10   10
;;;96         rGPCCON = 0xaaaaaaaa;       
0000ec  e59f0370          LDR      r0,|L1.1124|
0000f0  e3a01456          MOV      r1,#0x56000000
0000f4  e5810020          STR      r0,[r1,#0x20]
;;;97         rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0] 
0000f8  e59f0368          LDR      r0,|L1.1128|
0000fc  e3a01456          MOV      r1,#0x56000000
000100  e5810028          STR      r0,[r1,#0x28]
;;;98     
;;;99         //*** PORT D GROUP
;;;100        //Ports  : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
;;;101        //Signal : VD23  VD22  VD21  VD20  VD19  VD18  VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9  VD8
;;;102        //Binary : 10    10  , 10    10  , 10    10  , 10   10 , 10   10 , 10   10 , 10   10 ,10   10
;;;103        rGPDCON = 0xaaaaaaaa;       
000104  e59f0358          LDR      r0,|L1.1124|
000108  e3a01456          MOV      r1,#0x56000000
00010c  e5810030          STR      r0,[r1,#0x30]
;;;104        rGPDUP  = 0xffff;     // The pull up function is disabled GPD[15:0]
000110  e59f0350          LDR      r0,|L1.1128|
000114  e3a01456          MOV      r1,#0x56000000
000118  e5810038          STR      r0,[r1,#0x38]
;;;105    
;;;106        //*** PORT E GROUP
;;;107        //Ports  : GPE15  GPE14 GPE13   GPE12   GPE11   GPE10   GPE9    GPE8     GPE7  GPE6  GPE5   GPE4  
;;;108        //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK I2SSDO 
;;;109        //Binary :  10     10  ,  10      10  ,  10      10   ,  10      10   ,   10    10  , 10     10  ,     
;;;110        //-------------------------------------------------------------------------------------------------------
;;;111        //Ports  :  GPE3   GPE2  GPE1    GPE0    
;;;112        //Signal : I2SSDI CDCLK I2SSCLK I2SLRCK     
;;;113        //Binary :  10     10  ,  10      10 
;;;114        rGPECON = 0xaaaaaaaa;       
00011c  e59f0340          LDR      r0,|L1.1124|
000120  e3a01456          MOV      r1,#0x56000000
000124  e5810040          STR      r0,[r1,#0x40]
;;;115        rGPEUP  = 0xffff;     // The pull up function is disabled GPE[15:0]
000128  e59f0338          LDR      r0,|L1.1128|
00012c  e3a01456          MOV      r1,#0x56000000
000130  e5810048          STR      r0,[r1,#0x48]
;;;116    
;;;117    	
;;;118        //*** PORT F GROUP
;;;119        //Ports  : GPF7   GPF6   GPF5   GPF4      GPF3     GPF2  GPF1   GPF0
;;;120        //Signal : nLED_8 nLED_4 nLED_2 nLED_1 nIRQ_PCMCIA EINT2 KBDINT EINT0
;;;121        //Setting: Output Output Output Output    EINT3    EINT2 EINT1  EINT0
;;;122        //Binary :  01      01 ,  01     01  ,     10       10  , 10     10
;;;123        rGPFCON = 0x55aa;
000134  e59f0330          LDR      r0,|L1.1132|
000138  e3a01456          MOV      r1,#0x56000000
00013c  e5810050          STR      r0,[r1,#0x50]
;;;124        rGPFUP  = 0xff;     // The pull up function is disabled GPF[7:0]
000140  e3a000ff          MOV      r0,#0xff
000144  e3a01456          MOV      r1,#0x56000000
000148  e5810058          STR      r0,[r1,#0x58]
;;;125    
;;;126        //*** PORT G GROUP
;;;127        //Ports  : GPG15 GPG14 GPG13 GPG12 GPG11    GPG10    GPG9     GPG8     GPG7      GPG6    
;;;128        //Signal : nYPON  YMON nXPON XMON  EINT19 DMAMODE1 DMAMODE0 DMASTART KBDSPICLK KBDSPIMOSI
;;;129        //Setting: nYPON  YMON nXPON XMON  EINT19  Output   Output   Output   SPICLK1    SPIMOSI1
;;;130        //Binary :   11    11 , 11    11  , 10      01    ,   01       01   ,    11         11
;;;131        //-----------------------------------------------------------------------------------------
;;;132        //Ports  :    GPG5       GPG4    GPG3    GPG2    GPG1    GPG0    
;;;133        //Signal : KBDSPIMISO LCD_PWREN EINT11 nSS_SPI IRQ_LAN IRQ_PCMCIA
;;;134        //Setting:  SPIMISO1  LCD_PWRDN EINT11   nSS0   EINT9    EINT8
;;;135        //Binary :     11         11   ,  10      11  ,  10        10
;;;136        rGPGCON = 0xff95ffba;
00014c  e59f031c          LDR      r0,|L1.1136|
000150  e3a01456          MOV      r1,#0x56000000
000154  e5810060          STR      r0,[r1,#0x60]
;;;137        rGPGUP  = 0xffff;    // The pull up function is disabled GPG[15:0]
000158  e59f0308          LDR      r0,|L1.1128|
00015c  e3a01456          MOV      r1,#0x56000000
000160  e5810068          STR      r0,[r1,#0x68]
;;;138    
;;;139        //*** PORT H GROUP
;;;140        //Ports  :  GPH10    GPH9  GPH8 GPH7  GPH6  GPH5 GPH4 GPH3 GPH2 GPH1  GPH0 
;;;141        //Signal : CLKOUT1 CLKOUT0 UCLK nCTS1 nRTS1 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0
;;;142        //Binary :   10   ,  10     10 , 11    11  , 10   10 , 10   10 , 10    10
;;;143        rGPHCON = 0x2afaaa;
000164  e59f0308          LDR      r0,|L1.1140|
000168  e3a01456          MOV      r1,#0x56000000
00016c  e5810070          STR      r0,[r1,#0x70]
;;;144        rGPHUP  = 0x7ff;    // The pull up function is disabled GPH[10:0]
000170  e59f02e8          LDR      r0,|L1.1120|
000174  e3a01456          MOV      r1,#0x56000000
000178  e5810078          STR      r0,[r1,#0x78]
;;;145    
;;;146        // Added for S3C2442, DonGo
;;;147        //PORT J GROUP
;;;148        //Ports	:  GPJ12    GPJ11     GPJ10	GPJ9  GPJ8      GPJ7	GPJ6  GPJ5	GPJ4  GPJ3  GPJ2  GPJ1  GPJ0
;;;149        //Signal : CAMRESET CAMCLKOUT CAMHREF CAMVS CAMPCLKIN CAMD7 CAMD6 CAMD5 CAMD4 CAMD3 CAMD2 CAMD1 CAMD0
;;;150        //Setting: Out      Out      CAMHREF CAMVS CAMPCLKIN CAMD7 CAMD6 CAMD5 CAMD4 CAMD3 CAMD2 CAMD1 CAMD0
;;;151        //Binary : 01	  01        10      10    10        10    10    10    10    10    10    10    10
;;;152        //PU_OFF : 1	  0 		1	    1     1         1     1     1		1	1     1     1     1
;;;153        //---------------------------------------------------------------------------------------
;;;154        rGPJDAT = (1<<12)|(0<<11);
00017c  e3a00d40          MOV      r0,#0x1000
000180  e3a01456          MOV      r1,#0x56000000
000184  e58100d4          STR      r0,[r1,#0xd4]
;;;155        rGPJCON = 0x016aaaa;
000188  e59f02e8          LDR      r0,|L1.1144|
00018c  e3a01456          MOV      r1,#0x56000000
000190  e58100d0          STR      r0,[r1,#0xd0]
;;;156        rGPJUP	= ~((0<<12)|(1<<11));
000194  e3e00e80          MVN      r0,#0x800
000198  e3a01456          MOV      r1,#0x56000000
00019c  e58100d8          STR      r0,[r1,#0xd8]
;;;157    
;;;158        rGPJDAT = (0<<12)|(0<<11);
0001a0  e3a00000          MOV      r0,#0
0001a4  e3a01456          MOV      r1,#0x56000000
0001a8  e58100d4          STR      r0,[r1,#0xd4]
;;;159        rGPJCON = 0x016aaaa;
0001ac  e59f02c4          LDR      r0,|L1.1144|
0001b0  e3a01456          MOV      r1,#0x56000000
0001b4  e58100d0          STR      r0,[r1,#0xd0]
;;;160        rGPJUP	= 0x1fff;//~((1<<12)|(1<<11));
0001b8  e59f02bc          LDR      r0,|L1.1148|
0001bc  e3a01456          MOV      r1,#0x56000000
0001c0  e58100d8          STR      r0,[r1,#0xd8]
;;;161    
;;;162    	
;;;163        //rGPJCON = 0x02aaaaaa;
;;;164        //rGPJUP  = 0x1fff;    // The pull up function is disabled GPH[10:0]
;;;165    
;;;166        //External interrupt will be falling edge triggered. 
;;;167        rEXTINT0 = 0x22222222;    // EINT[7:0]
0001c4  e59f02b4          LDR      r0,|L1.1152|
0001c8  e3a01456          MOV      r1,#0x56000000
0001cc  e5810088          STR      r0,[r1,#0x88]
;;;168        rEXTINT1 = 0x22222222;    // EINT[15:8]
0001d0  e3a01456          MOV      r1,#0x56000000
0001d4  e581008c          STR      r0,[r1,#0x8c]
;;;169        rEXTINT2 = 0x22222222;    // EINT[23:16]
0001d8  e3a01456          MOV      r1,#0x56000000
0001dc  e5810090          STR      r0,[r1,#0x90]
;;;170    }
0001e0  e1a0f00e          MOV      pc,lr
                          ENDP

                  Uart_TxEmpty PROC
;;;214    void Uart_TxEmpty(int ch)
;;;215    {
0001e4  e3500000          CMP      r0,#0
;;;216        if(ch==0)
0001e8  1a000005          BNE      |L1.516|
;;;217            while(!(rUTRSTAT0 & 0x4)); //Wait until tx shifter is empty.
0001ec  e1a00000          NOP      
                  |L1.496|
0001f0  e3a01450          MOV      r1,#0x50000000
0001f4  e5911010          LDR      r1,[r1,#0x10]
0001f8  e3110004          TST      r1,#4
0001fc  0afffffb          BEQ      |L1.496|

⌨️ 快捷键说明

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