📄 bsp.txt
字号:
000188 eafffffe B |L1.392|
;;;1006 VIC_Dummy();
;;;1007 }
;;;1008
ENDP
VIC_DummyWDT PROC
;;;998 {
;;;999 VIC_SpuriousInt = VIC_WDT;
00018c e59f1448 LDR r1,|L1.1500|
000190 e3a00000 MOV r0,#0
000194 e5810000 STR r0,[r1,#0] ; VIC_SpuriousInt
|L1.408|
000198 eafffffe B |L1.408|
;;;1000 VIC_Dummy();
;;;1001 }
;;;1002
ENDP
BSP_Init PROC
;;;159 void BSP_Init (void)
;;;160 {
00019c e92d41f0 PUSH {r4-r8,lr}
;;;161 MEMMAP = 2; /* Remap 64 bytes of int. RAM to 0x00 */
0001a0 e59f5424 LDR r5,|L1.1484|
0001a4 e3a07002 MOV r7,#2
0001a8 e5c57040 STRB r7,[r5,#0x40]
;;;162
;;;163 OS_CPU_InitExceptVect();
0001ac ebfffffe BL OS_CPU_InitExceptVect
;;;164
;;;165 BSP_PLL_Init(); /* Initialize PLL0 and the VPB Divider Register */
0001b0 ebfffffe BL BSP_PLL_Init
0001b4 e3a04000 MOV r4,#0
0001b8 e5c54000 STRB r4,[r5,#0]
0001bc e3a06003 MOV r6,#3
0001c0 e5c56004 STRB r6,[r5,#4]
0001c4 e5c57000 STRB r7,[r5,#0]
0001c8 e3a0120f MOV r1,#0xf0000000
0001cc e2450975 SUB r0,r5,#0x1d4000
0001d0 e5801028 STR r1,[r0,#0x28]
0001d4 e580102c STR r1,[r0,#0x2c]
0001d8 e2805901 ADD r5,r0,#0x4000
0001dc e5854000 STR r4,[r5,#0]
0001e0 e5901008 LDR r1,[r0,#8]
0001e4 e3c11901 BIC r1,r1,#0x4000
0001e8 e5801008 STR r1,[r0,#8]
0001ec e5901018 LDR r1,[r0,#0x18]
0001f0 e38118ff ORR r1,r1,#0xff0000
0001f4 e5801018 STR r1,[r0,#0x18]
;;;166 BSP_MAM_Init(); /* Initialize the Memory Acceleration Module */
;;;167 BSP_IO_Init(); /* Initialize the board's I/Os */
;;;168
;;;169 VIC_Init(); /* Initialize the Vectored Interrupt Controller */
0001f8 ebfffffe BL VIC_Init
0001fc e3a00000 MOV r0,#0
000200 ebfffffe BL LED_Off
000204 ebfffffe BL BSP_CPU_PclkFreq
000208 e59f13d0 LDR r1,|L1.1504|
00020c ebfffffe BL __aeabi_uidivmod
000210 e2800001 ADD r0,r0,#1
000214 e20000ff AND r0,r0,#0xff
000218 e2871821 ADD r1,r7,#0x210000
00021c e1811400 ORR r1,r1,r0,LSL #8
000220 e2850902 ADD r0,r5,#0x8000
000224 e5801000 STR r1,[r0,#0]
000228 e5951004 LDR r1,[r5,#4]
00022c e3c11403 BIC r1,r1,#0x3000000
000230 e3811401 ORR r1,r1,#0x1000000
000234 e5851004 STR r1,[r5,#4]
000238 e5901000 LDR r1,[r0,#0]
00023c e3811401 ORR r1,r1,#0x1000000
000240 e5801000 STR r1,[r0,#0]
000244 e5140ff4 LDR r0,[r4,#-0xff4]
000248 e3c00010 BIC r0,r0,#0x10
00024c e5040ff4 STR r0,[r4,#-0xff4]
000250 e24f0f86 ADR r0,Tmr_TickISR_Handler
000254 e5040ef8 STR r0,[r4,#-0xef8]
000258 e3a00024 MOV r0,#0x24
00025c e5040df8 STR r0,[r4,#-0xdf8]
000260 e3a00010 MOV r0,#0x10
000264 e5040ff0 STR r0,[r4,#-0xff0]
000268 ebfffffe BL BSP_CPU_PclkFreq
00026c e3a01064 MOV r1,#0x64
000270 ebfffffe BL __aeabi_uidivmod
000274 e245190a SUB r1,r5,#0x28000
000278 e5814004 STR r4,[r1,#4]
00027c e5814010 STR r4,[r1,#0x10]
000280 e5810018 STR r0,[r1,#0x18]
000284 e5816014 STR r6,[r1,#0x14]
000288 e5814028 STR r4,[r1,#0x28]
00028c e581403c STR r4,[r1,#0x3c]
000290 e3a00001 MOV r0,#1
000294 e5810004 STR r0,[r1,#4]
;;;170 LED_Init(); /* Initialize the LED controls */
;;;171 ADC_Init(); /* Intiialize the ADC control */
;;;172
;;;173 Tmr_TickInit(); /* Initialize the uC/OS-II tick interrupt */
;;;174 }
000298 e8bd41f0 POP {r4-r8,lr}
00029c e12fff1e BX lr
;;;175
ENDP
BSP_CPU_ClkFreq PROC
;;;194
;;;195 msel = (CPU_INT32U)(PLLCFG & 0x1F);
0002a0 e59f0324 LDR r0,|L1.1484|
0002a4 e5d00084 LDRB r0,[r0,#0x84]
;;;196 cpu_clk_freq = CPU_OSC_FREQ * (msel + 1);
0002a8 e59f1320 LDR r1,|L1.1488|
0002ac e200001f AND r0,r0,#0x1f ;195
0002b0 e2800001 ADD r0,r0,#1
0002b4 e0000091 MUL r0,r1,r0
;;;197 return (cpu_clk_freq);
;;;198 }
0002b8 e12fff1e BX lr
;;;199
ENDP
OS_CPU_ExceptHndlr PROC
;;;269 void OS_CPU_ExceptHndlr (CPU_INT32U except_id)
;;;270 {
0002bc e92d4070 PUSH {r4-r6,lr}
;;;271 CPU_FNCT_VOID pfnct;
;;;272
;;;273 int t=1;
;;;274 if (except_id == OS_CPU_ARM_EXCEPT_IRQ) {
0002c0 e3500006 CMP r0,#6
0002c4 e3a01001 MOV r1,#1 ;273
0002c8 e3a04000 MOV r4,#0 ;273
0002cc 1a00000a BNE |L1.764|
;;;275
;;;276 pfnct = (CPU_FNCT_VOID)VICVectAddr; /* Read the interrupt vector from the VIC */
0002d0 e5140fd0 LDR r0,[r4,#-0xfd0]
0002d4 e3a05001 MOV r5,#1
0002d8 ea000003 B |L1.748|
|L1.732|
;;;277 while (pfnct != (CPU_FNCT_VOID)0) { /* Make sure we don't have a NULL pointer */
;;;278 (*pfnct)(); /* Execute the ISR for the interrupting device */
0002dc e1a0e00f MOV lr,pc
0002e0 e12fff10 BX r0
;;;279 VICVectAddr = 1; /* Acknowlege the VIC interrupt */
0002e4 e5045fd0 STR r5,[r4,#-0xfd0]
;;;280 pfnct = (CPU_FNCT_VOID)VICVectAddr; /* Read the interrupt vector from the VIC */
0002e8 e5140fd0 LDR r0,[r4,#-0xfd0]
|L1.748|
0002ec e3500000 CMP r0,#0 ;277
0002f0 1afffff9 BNE |L1.732|
|L1.756|
;;;281 }
;;;282
;;;283 } else {
;;;284
;;;285 /* Infinite loop on other exceptions. */
;;;286 /* Should be replaced by other behavior (reboot, etc.) */
;;;287 while (DEF_TRUE) {
;;;288 if(t==0){
;;;289 VICVectAddr = 0;
;;;290 break;
;;;291 }
;;;292
;;;293 ;
;;;294 }
;;;295 }
;;;296 }
0002f4 e8bd4070 POP {r4-r6,lr}
0002f8 e12fff1e BX lr
|L1.764|
0002fc e3510000 CMP r1,#0 ;288
000300 1afffffd BNE |L1.764|
000304 e5044fd0 STR r4,[r4,#-0xfd0] ;289
000308 eafffff9 B |L1.756|
;;;297
ENDP
BSP_IntDisAll PROC
;;;312 {
;;;313 VICIntEnClear = 0xFFFFFFFFL; /* Disable ALL interrupts */
00030c e3e00000 MVN r0,#0
000310 e3a01000 MOV r1,#0
000314 e5010fec STR r0,[r1,#-0xfec]
;;;314 }
000318 e12fff1e BX lr
;;;315
ENDP
LED_On PROC
;;;362 void LED_On (CPU_INT08U led)
;;;363 {
00031c e59f12b4 LDR r1,|L1.1496|
;;;364 switch (led) {
000320 e3500009 CMP r0,#9
000324 308ff100 ADDCC pc,pc,r0,LSL #2
;;;365 case 0:
;;;366 IO1SET = GPIO1_LEDS;
;;;367 break;
;;;368
;;;369 case 1:
;;;370 IO1SET = GPIO1_LED1;
;;;371 IO2SET=0xf0000000;
;;;372 break;
;;;373
;;;374 case 2:
;;;375 IO1SET = GPIO1_LED2;
;;;376 break;
;;;377
;;;378 case 3:
;;;379 IO1SET = GPIO1_LED3;
;;;380 break;
;;;381
;;;382 case 4:
;;;383 IO1SET = GPIO1_LED4;
;;;384 break;
;;;385
;;;386 case 5:
;;;387 IO1SET = GPIO1_LED5;
;;;388 break;
;;;389
;;;390 case 6:
;;;391 IO1SET = GPIO1_LED6;
;;;392 break;
;;;393
;;;394 case 7:
;;;395 IO1SET = GPIO1_LED7;
;;;396 break;
;;;397
;;;398 case 8:
;;;399 IO1SET = GPIO1_LED8;
;;;400 break;
;;;401
;;;402 default:
;;;403 break;
;;;404 }
;;;405 }
000328 e12fff1e BX lr
00032c ea000007 B |L1.848|
000330 ea000008 B |L1.856|
000334 ea00000c B |L1.876|
000338 ea00000d B |L1.884|
00033c ea00000e B |L1.892|
000340 ea00000f B |L1.900|
000344 ea000010 B |L1.908|
000348 ea000011 B |L1.916|
00034c ea000012 B |L1.924|
|L1.848|
000350 e3a008ff MOV r0,#0xff0000 ;366
000354 ea000011 B |L1.928|
|L1.856|
000358 e3a00801 MOV r0,#0x10000 ;370
00035c e5810014 STR r0,[r1,#0x14] ;370
000360 e3a0020f MOV r0,#0xf0000000 ;371
000364 e5810024 STR r0,[r1,#0x24] ;371
000368 e12fff1e BX lr
|L1.876|
00036c e3a00802 MOV r0,#0x20000 ;375
000370 ea00000a B |L1.928|
|L1.884|
000374 e3a00701 MOV r0,#0x40000 ;379
000378 ea000008 B |L1.928|
|L1.892|
00037c e3a00702 MOV r0,#0x80000 ;383
000380 ea000006 B |L1.928|
|L1.900|
000384 e3a00601 MOV r0,#0x100000 ;387
000388 ea000004 B |L1.928|
|L1.908|
00038c e3a00602 MOV r0,#0x200000 ;391
000390 ea000002 B |L1.928|
|L1.916|
000394 e3a00501 MOV r0,#0x400000 ;395
000398 ea000000 B |L1.928|
|L1.924|
00039c e3a00502 MOV r0,#0x800000 ;399
|L1.928|
0003a0 e5810014 STR r0,[r1,#0x14] ;399
0003a4 e12fff1e BX lr
;;;406
ENDP
LED_Toggle PROC
;;;493 void LED_Toggle (CPU_INT08U led)
;;;494 {
0003a8 e59f1228 LDR r1,|L1.1496|
;;;495 CPU_INT32U are_off;
;;;496 CPU_INT32U are_on;
;;;497
;;;498
;;;499 switch (led) {
0003ac e3500009 CMP r0,#9
0003b0 308ff100 ADDCC pc,pc,r0,LSL #2
;;;500 case 0:
;;;501 are_off = ( (IO1PIN ^ GPIO1_LEDS) & GPIO1_LEDS);
;;;502 are_on = (~(IO1PIN ^ GPIO1_LEDS) & GPIO1_LEDS);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -