📄 2442lib.txt
字号:
; 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 + -