📄 target.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\target.o --depend=.\rvmdk\target.d --device=DARMP --apcs=interwork -O1 -I. -I..\BSP -I..\..\..\..\uCOS-II\Ports\ARM\Generic\RealView -I..\..\..\..\uCOS-II\Source -I..\..\..\..\uC-CPU -I..\..\..\..\uC-CPU\ARM\RealView -I..\..\..\..\uC-LIB -I..\..\..\..\uC-TCPIP\IF -I..\..\..\..\uC-TCPIP\IF\Ether -I..\..\..\..\uC-TCPIP\NIC\ETHER\LPC2378 -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY\DP83848 -I..\..\..\..\uC-TCPIP\OS\uCOS-II -I..\..\..\..\uC-TCPIP\Source -I..\..\..\..\uC-LCD\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\TCPIP\Source -I..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -Ie:\Keil_ARM\ARM\INC\Philips -D__IN_CHIP --omf_browse=.\rvmdk\target.crf BSP\target.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
IRQ_Exception PROC
;;;57 void IRQ_Exception(void)
;;;58 {
000000 e92d4010 PUSH {r4,lr}
;;;59 CPU_FNCT_VOID pfnct;
;;;60 pfnct = (CPU_FNCT_VOID)VICAddress;
000004 e3a04000 MOV r4,#0
000008 e5140fd0 LDR r0,[r4,#-0xfd0]
;;;61 if (pfnct != (CPU_FNCT_VOID)0) { /* Make sure we don't have a NULL pointer */
00000c e3500000 CMP r0,#0
000010 0a000001 BEQ |L1.28|
;;;62 (*pfnct)();
000014 e1a0e00f MOV lr,pc
000018 e12fff10 BX r0
|L1.28|
;;;63 }
;;;64 VICAddress = 1;
00001c e3a00001 MOV r0,#1
000020 e5040fd0 STR r0,[r4,#-0xfd0]
;;;65 //while(1); // 这一句替换为自己的代码
;;;66 }
000024 e8bd4010 POP {r4,lr}
000028 e12fff1e BX lr
;;;67 /*********************************************************************************************************
ENDP
IRQ_DefException PROC
;;;85
;;;86 while(1); // 这一句替换为自己的代码
00002c eafffffe B IRQ_DefException
;;;87 }
;;;88 /*********************************************************************************************************
ENDP
FIQ_Exception PROC
;;;107 {
;;;108 while(1); // 这一句替换为自己的代码
000030 eafffffe B FIQ_Exception
;;;109 }
;;;110
ENDP
Timer0_Exception PROC
;;;129 {
;;;130 T0IR = 0x01;
000034 e59f133c LDR r1,|L1.888|
000038 e3a00001 MOV r0,#1
00003c e5810000 STR r0,[r1,#0]
;;;131 VICVectAddr = 0; // 通知中断控制器中断结束
000040 e3a00000 MOV r0,#0
000044 e5000fd0 STR r0,[r0,#-0xfd0]
;;;132 OSTimeTick();
000048 eafffffe B OSTimeTick
;;;133 }
;;;134
ENDP
Timer0Init PROC
;;;153 {
;;;154 T0IR = 0xffffffff;
00004c e59f0324 LDR r0,|L1.888|
000050 e3e01000 MVN r1,#0
000054 e5801000 STR r1,[r0,#0]
;;;155 T0TC = 0;
000058 e3a01000 MOV r1,#0
00005c e5801008 STR r1,[r0,#8]
;;;156 T0TCR = 0x01;
000060 e3a01001 MOV r1,#1
000064 e5801004 STR r1,[r0,#4]
;;;157 T0MCR = 0x03;
000068 e3a01003 MOV r1,#3
00006c e5801014 STR r1,[r0,#0x14]
;;;158 T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
000070 e3a01b36 MOV r1,#0xd800
000074 e5801018 STR r1,[r0,#0x18]
;;;159 }
000078 e12fff1e BX lr
;;;160
ENDP
VICInit PROC
;;;182
;;;183 VICIntEnClr = 0xffffffff;
00007c e3e01000 MVN r1,#0
000080 e3a00000 MOV r0,#0
000084 e5001fec STR r1,[r0,#-0xfec]
;;;184 VICDefVectAddr = (uint32)IRQ_DefException;
000088 e24f1064 ADR r1,IRQ_DefException
00008c e5001fcc STR r1,[r0,#-0xfcc]
;;;185
;;;186 VICVectAddr0 = (uint32)Timer0_Exception;
000090 e24f1064 ADR r1,Timer0_Exception
000094 e5001f00 STR r1,[r0,#-0xf00]
;;;187 VICVectCntl0 = (VIC_IRQEN| VIC_TIMER0);
000098 e3a01024 MOV r1,#0x24
00009c e5001e00 STR r1,[r0,#-0xe00]
;;;188 VICIntEnable = 1 << VIC_TIMER0;
0000a0 e3a01010 MOV r1,#0x10
0000a4 e5001ff0 STR r1,[r0,#-0xff0]
;;;189 }
0000a8 e12fff1e BX lr
;;;190
ENDP
TargetInit PROC
;;;208 void TargetInit(void)
;;;209 {
0000ac e92d4010 PUSH {r4,lr}
;;;210 OS_ENTER_CRITICAL();
0000b0 ef000002 SVC #0x2
;;;211 srand((uint32) TargetInit);
0000b4 e24f0010 ADR r0,TargetInit
0000b8 ebfffffe BL srand
;;;212 VICInit();
0000bc ebfffffe BL VICInit
;;;213 Timer0Init();
0000c0 ebfffffe BL Timer0Init
;;;214 OS_EXIT_CRITICAL();
0000c4 ef000003 SVC #0x3
;;;215 }
0000c8 e8bd4010 POP {r4,lr}
0000cc e12fff1e BX lr
;;;216
ENDP
InitialiseUART0 PROC
;;;235 void InitialiseUART0(uint32 bps)
;;;236 {
0000d0 e92d4010 PUSH {r4,lr}
;;;237 uint16 Fdiv;
;;;238
;;;239 PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x05; /* 选择管脚为UART0 */
0000d4 e59f22a0 LDR r2,|L1.892|
0000d8 e5923000 LDR r3,[r2,#0]
0000dc e3c3300f BIC r3,r3,#0xf
0000e0 e3833005 ORR r3,r3,#5
0000e4 e5823000 STR r3,[r2,#0]
;;;240
;;;241 U0LCR = 0x80; /* 允许访问分频因子寄存器 */
0000e8 e59f4290 LDR r4,|L1.896|
0000ec e3a02080 MOV r2,#0x80
0000f0 e5c4200c STRB r2,[r4,#0xc]
;;;242 Fdiv = (Fpclk / 16) / bps; /* 设置波特率 */
0000f4 e1a01000 MOV r1,r0
0000f8 e59f0284 LDR r0,|L1.900|
0000fc ebfffffe BL __aeabi_uidivmod
;;;243 U0DLM = Fdiv / 256;
000100 e1a01420 LSR r1,r0,#8
000104 e5c41004 STRB r1,[r4,#4]
;;;244 U0DLL = Fdiv % 256;
000108 e5c40000 STRB r0,[r4,#0]
;;;245 U0LCR = 0x03; /* 禁止访问分频因子寄存器 */
00010c e3a00003 MOV r0,#3
000110 e5c4000c STRB r0,[r4,#0xc]
;;;246 /* 且设置为8,1,n */
;;;247 U0IER = 0x00; /* 禁止中断 */
000114 e3a00000 MOV r0,#0
000118 e5c40004 STRB r0,[r4,#4]
;;;248 U0FCR = 0x00; /* 初始化FIFO */
00011c e5c40008 STRB r0,[r4,#8]
;;;249 }
000120 e8bd4010 POP {r4,lr}
000124 e12fff1e BX lr
;;;250
ENDP
TargetResetInit PROC
;;;268 void TargetResetInit(void)
;;;269 {
000128 e52de004 PUSH {lr}
;;;270 #ifdef __DEBUG_RAM
;;;271 MEMMAP = 0x2; //remap
;;;272 #endif
;;;273
;;;274 #ifdef __DEBUG_FLASH
;;;275 MEMMAP = 0x1; //remap
;;;276 #endif
;;;277
;;;278 #ifdef __IN_CHIP
;;;279 MEMMAP = 0x1; //remap
00012c e59f0254 LDR r0,|L1.904|
000130 e3a03001 MOV r3,#1
000134 e5c03040 STRB r3,[r0,#0x40]
;;;280 #endif
;;;281
;;;282 PINSEL0 = (PINSEL0 & 0xFFFF0000) | 0x05 | 0x50;
000138 e240181d SUB r1,r0,#0x1d0000
00013c e5912000 LDR r2,[r1,#0]
000140 e1a02822 LSR r2,r2,#16
000144 e1a02802 LSL r2,r2,#16
000148 e3822055 ORR r2,r2,#0x55
00014c e5812000 STR r2,[r1,#0]
;;;283
;;;284 /* 设置系统各部分时钟 */
;;;285 PLLCON = 1;
000150 e5c03080 STRB r3,[r0,#0x80]
;;;286 #if (Fpclk / (Fcclk / 4)) == 1
;;;287 VPBDIV = 0;
000154 e3a02000 MOV r2,#0
000158 e5c02100 STRB r2,[r0,#0x100]
;;;288 #endif
;;;289 #if (Fpclk / (Fcclk / 4)) == 2
;;;290 VPBDIV = 2;
;;;291 #endif
;;;292 #if (Fpclk / (Fcclk / 4)) == 4
;;;293 VPBDIV = 1;
;;;294 #endif
;;;295
;;;296 #if (Fcco / Fcclk) == 2
;;;297 PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
;;;298 #endif
;;;299 #if (Fcco / Fcclk) == 4
;;;300 PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
00015c e3a01023 MOV r1,#0x23
000160 e5c01084 STRB r1,[r0,#0x84]
;;;301 #endif
;;;302 #if (Fcco / Fcclk) == 8
;;;303 PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
;;;304 #endif
;;;305 #if (Fcco / Fcclk) == 16
;;;306 PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
;;;307 #endif
;;;308 PLLFEED = 0xaa;
000164 e3a0c0aa MOV r12,#0xaa
000168 e5c0c08c STRB r12,[r0,#0x8c]
;;;309 PLLFEED = 0x55;
00016c e3a0e055 MOV lr,#0x55
000170 e5c0e08c STRB lr,[r0,#0x8c]
|L1.372|
;;;310 while((PLLSTAT & (1 << 10)) == 0);
000174 e1d018b8 LDRH r1,[r0,#0x88]
000178 e3110b01 TST r1,#0x400
00017c 0afffffc BEQ |L1.372|
;;;311 PLLCON = 3;
000180 e3a01003 MOV r1,#3
000184 e5c01080 STRB r1,[r0,#0x80]
;;;312 PLLFEED = 0xaa;
000188 e5c0c08c STRB r12,[r0,#0x8c]
;;;313 PLLFEED = 0x55;
00018c e5c0e08c STRB lr,[r0,#0x8c]
;;;314
;;;315 /* 设置存储器加速模块 */
;;;316 MAMCR = 0;
000190 e5c02000 STRB r2,[r0,#0]
;;;317 #if Fcclk < 20000000
;;;318 MAMTIM = 1;
;;;319 #else
;;;320 #if Fcclk < 40000000
;;;321 MAMTIM = 2;
;;;322 #else
;;;323 MAMTIM = 3;
000194 e5c01004 STRB r1,[r0,#4]
;;;324 #endif
;;;325 #endif
;;;326 MAMCR = 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -