📄 bsp.lst
字号:
370 */
371
\ In segment CODE, align 4, keep-with-next
372 void OS_CPU_FIQ_ISR_Handler (void)
373 {
\ OS_CPU_FIQ_ISR_Handler:
\ 00000000 00B5 PUSH {LR}
374 PFNCT pfnct;
375
376
377 #if 1
378 pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
\ 00000002 .... LDR R0,??DataTable6 ;; 0xfffff030
\ 00000004 0068 LDR R0,[R0, #+0]
379 if (pfnct != (PFNCT)0) { /* Make sure we don't have a NULL pointer */
\ 00000006 0100 MOVS R1,R0
\ 00000008 0029 CMP R1,#+0
\ 0000000A 01D0 BEQ ??OS_CPU_FIQ_ISR_Handler_0
380 (*pfnct)(); /* Execute the ISR for the interrupting device */
\ 0000000C ........ BL ??rT_BX_R0
381 }
382 #else
383 pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
384 while (pfnct != (PFNCT)0) { /* Make sure we don't have a NULL pointer */
385 (*pfnct)(); /* Execute the ISR for the interrupting device */
386 pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
387 }
388 #endif
389 }
\ ??OS_CPU_FIQ_ISR_Handler_0:
\ 00000010 01BC POP {R0}
\ 00000012 0047 BX R0 ;; return
390
391
392 /*
393 *********************************************************************************************************
394 * TIMER #0 IRQ HANDLER
395 *
396 * Description : This function handles the timer interrupt that is used to generate TICKs for uC/OS-II.
397 *
398 * Arguments : none
399 *********************************************************************************************************
400 */
401
\ In segment CODE, align 4, keep-with-next
402 void Tmr_TickISR_Handler (void)
403 {
\ Tmr_TickISR_Handler:
\ 00000000 00B5 PUSH {LR}
404 T0IR = 0xFF; /* Clear timer #0 interrupt */
\ 00000002 0548 LDR R0,??Tmr_TickISR_Handler_0 ;; 0xe0004000
\ 00000004 FF21 MOVS R1,#+255
\ 00000006 0160 STR R1,[R0, #+0]
405 OSTimeTick(); /* If the interrupt is from the tick source, call OSTimeTick() */
\ 00000008 ........ _BLF OSTimeTick,??OSTimeTick??rT
406 VICVectAddr = 0;
\ 0000000C .... LDR R0,??DataTable6 ;; 0xfffff030
\ 0000000E 0021 MOVS R1,#+0
\ 00000010 0160 STR R1,[R0, #+0]
407 }
\ 00000012 01BC POP {R0}
\ 00000014 0047 BX R0 ;; return
\ 00000016 C046 Nop
\ ??Tmr_TickISR_Handler_0:
\ 00000018 004000E0 DC32 0xe0004000
408
409
410 /*
411 *********************************************************************************************************
412 * Vectored Interrupt Controller
413 *********************************************************************************************************
414 */
415
\ In segment CODE, align 4, keep-with-next
416 void VIC_Init (void)
417 {
418 VICIntEnClear = 0xFFFFFFFF; /* Disable ALL interrupts */
\ VIC_Init:
\ 00000000 1548 LDR R0,??VIC_Init_0 ;; 0xfffff014
\ 00000002 0021 MOVS R1,#+0
\ 00000004 C943 MVNS R1,R1 ;; #-1
\ 00000006 0160 STR R1,[R0, #+0]
419 VICProtection = 0; /* Setup interrupt controller */
\ 00000008 1448 LDR R0,??VIC_Init_0+0x4 ;; 0xfffff020
\ 0000000A 0021 MOVS R1,#+0
\ 0000000C 0160 STR R1,[R0, #+0]
420
421 VICVectAddr1 = (INT32U)VIC_DummyWDT; /* Set the vector address */
\ 0000000E 1448 LDR R0,??VIC_Init_0+0x8 ;; 0xfffff104
\ 00000010 1449 LDR R1,??VIC_Init_0+0xC ;; VIC_DummyWDT
\ 00000012 0160 STR R1,[R0, #+0]
422 VICVectAddr2 = (INT32U)VIC_DummyTIMER0;
\ 00000014 .... LDR R0,??DataTable7 ;; 0xfffff108
\ 00000016 1449 LDR R1,??VIC_Init_0+0x10 ;; VIC_DummyTIMER0
\ 00000018 0160 STR R1,[R0, #+0]
423 VICVectAddr3 = (INT32U)VIC_DummyTIMER1;
\ 0000001A 1448 LDR R0,??VIC_Init_0+0x14 ;; 0xfffff10c
\ 0000001C 1449 LDR R1,??VIC_Init_0+0x18 ;; VIC_DummyTIMER1
\ 0000001E 0160 STR R1,[R0, #+0]
424 VICVectAddr4 = (INT32U)VIC_DummyUART0;
\ 00000020 1448 LDR R0,??VIC_Init_0+0x1C ;; 0xfffff110
\ 00000022 1549 LDR R1,??VIC_Init_0+0x20 ;; VIC_DummyUART0
\ 00000024 0160 STR R1,[R0, #+0]
425 VICVectAddr5 = (INT32U)VIC_DummyUART1;
\ 00000026 1548 LDR R0,??VIC_Init_0+0x24 ;; 0xfffff114
\ 00000028 1549 LDR R1,??VIC_Init_0+0x28 ;; VIC_DummyUART1
\ 0000002A 0160 STR R1,[R0, #+0]
426 VICVectAddr6 = (INT32U)VIC_DummyPWM0;
\ 0000002C 1548 LDR R0,??VIC_Init_0+0x2C ;; 0xfffff118
\ 0000002E 1649 LDR R1,??VIC_Init_0+0x30 ;; VIC_DummyPWM0
\ 00000030 0160 STR R1,[R0, #+0]
427 VICVectAddr7 = (INT32U)VIC_DummyI2C;
\ 00000032 1648 LDR R0,??VIC_Init_0+0x34 ;; 0xfffff11c
\ 00000034 1649 LDR R1,??VIC_Init_0+0x38 ;; VIC_DummyI2C
\ 00000036 0160 STR R1,[R0, #+0]
428 VICVectAddr8 = (INT32U)VIC_DummySPI;
\ 00000038 1648 LDR R0,??VIC_Init_0+0x3C ;; 0xfffff120
\ 0000003A 1749 LDR R1,??VIC_Init_0+0x40 ;; VIC_DummySPI
\ 0000003C 0160 STR R1,[R0, #+0]
429 VICVectAddr9 = (INT32U)VIC_DummyRTC;
\ 0000003E 1748 LDR R0,??VIC_Init_0+0x44 ;; 0xfffff124
\ 00000040 1749 LDR R1,??VIC_Init_0+0x48 ;; VIC_DummyRTC
\ 00000042 0160 STR R1,[R0, #+0]
430 VICVectAddr10 = (INT32U)VIC_DummyEINT0;
\ 00000044 1748 LDR R0,??VIC_Init_0+0x4C ;; 0xfffff128
\ 00000046 1849 LDR R1,??VIC_Init_0+0x50 ;; VIC_DummyEINT0
\ 00000048 0160 STR R1,[R0, #+0]
431 VICVectAddr11 = (INT32U)VIC_DummyEINT1;
\ 0000004A 1848 LDR R0,??VIC_Init_0+0x54 ;; 0xfffff12c
\ 0000004C 1849 LDR R1,??VIC_Init_0+0x58 ;; VIC_DummyEINT1
\ 0000004E 0160 STR R1,[R0, #+0]
432 VICVectAddr12 = (INT32U)VIC_DummyEINT2;
\ 00000050 1848 LDR R0,??VIC_Init_0+0x5C ;; 0xfffff130
\ 00000052 1949 LDR R1,??VIC_Init_0+0x60 ;; VIC_DummyEINT2
\ 00000054 0160 STR R1,[R0, #+0]
433 }
\ 00000056 7047 BX LR ;; return
\ ??VIC_Init_0:
\ 00000058 14F0FFFF DC32 0xfffff014
\ 0000005C 20F0FFFF DC32 0xfffff020
\ 00000060 04F1FFFF DC32 0xfffff104
\ 00000064 ........ DC32 VIC_DummyWDT
\ 00000068 ........ DC32 VIC_DummyTIMER0
\ 0000006C 0CF1FFFF DC32 0xfffff10c
\ 00000070 ........ DC32 VIC_DummyTIMER1
\ 00000074 10F1FFFF DC32 0xfffff110
\ 00000078 ........ DC32 VIC_DummyUART0
\ 0000007C 14F1FFFF DC32 0xfffff114
\ 00000080 ........ DC32 VIC_DummyUART1
\ 00000084 18F1FFFF DC32 0xfffff118
\ 00000088 ........ DC32 VIC_DummyPWM0
\ 0000008C 1CF1FFFF DC32 0xfffff11c
\ 00000090 ........ DC32 VIC_DummyI2C
\ 00000094 20F1FFFF DC32 0xfffff120
\ 00000098 ........ DC32 VIC_DummySPI
\ 0000009C 24F1FFFF DC32 0xfffff124
\ 000000A0 ........ DC32 VIC_DummyRTC
\ 000000A4 28F1FFFF DC32 0xfffff128
\ 000000A8 ........ DC32 VIC_DummyEINT0
\ 000000AC 2CF1FFFF DC32 0xfffff12c
\ 000000B0 ........ DC32 VIC_DummyEINT1
\ 000000B4 30F1FFFF DC32 0xfffff130
\ 000000B8 ........ DC32 VIC_DummyEINT2
434
435
\ In segment CODE, align 4, keep-with-next
436 void VIC_Dummy (void)
437 {
\ VIC_Dummy:
\ 00000000 00B5 PUSH {LR}
438 while (1) {
439 (void)VIC_SpuriousInt;
\ ??VIC_Dummy_0:
\ 00000002 FEE7 B ??VIC_Dummy_0
440 }
441 }
442
443
\ In segment CODE, align 4, keep-with-next
444 void VIC_DummyWDT (void)
445 {
\ VIC_DummyWDT:
\ 00000000 00B5 PUSH {LR}
446 VIC_SpuriousInt = VIC_WDT;
\ 00000002 .... LDR R0,??DataTable19 ;; VIC_SpuriousInt
\ 00000004 0021 MOVS R1,#+0
\ 00000006 0160 STR R1,[R0, #+0]
447 VIC_Dummy();
\ 00000008 ........ BL VIC_Dummy
448 }
\ 0000000C 01BC POP {R0}
\ 0000000E 0047 BX R0 ;; return
449
450
\ In segment CODE, align 4, keep-with-next
451 void VIC_DummyTIMER0 (void)
452 {
\ VIC_DummyTIMER0:
\ 00000000 00B5 PUSH {LR}
453 VIC_SpuriousInt = VIC_TIMER0;
\ 00000002 .... LDR R0,??DataTable19 ;; VIC_SpuriousInt
\ 00000004 0421 MOVS R1,#+4
\ 00000006 0160 STR R1,[R0, #+0]
454 VIC_Dummy();
\ 00000008 ........ BL VIC_Dummy
455 }
\ 0000000C 01BC POP {R0}
\ 0000000E 0047 BX R0 ;; return
456
457
\ In segment CODE, align 4, keep-with-next
458 void VIC_DummyTIMER1 (void)
459 {
\ VIC_DummyTIMER1:
\ 00000000 00B5 PUSH {LR}
460 VIC_SpuriousInt = VIC_TIMER1;
\ 00000002 .... LDR R0,??DataTable19 ;; VIC_SpuriousInt
\ 00000004 0521 MOVS R1,#+5
\ 00000006 0160 STR R1,[R0, #+0]
461 VIC_Dummy();
\ 00000008 ........ BL VIC_Dummy
462 }
\ 0000000C 01BC POP {R0}
\ 0000000E 0047 BX R0 ;; return
463
464
\ In segment CODE, align 4, keep-with-next
465 void VIC_DummyUART0 (void)
466 {
\ VIC_DummyUART0:
\ 000000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -