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

📄 bsp.s79

📁 ARM仿真案例
💻 S79
📖 第 1 页 / 共 5 页
字号:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0fffff130H
// unsigned long volatile __data VICVectAddr12
VICVectAddr12:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0fffff208H
// union <unnamed> volatile __data _A_VICVectCntl2
_A_VICVectCntl2:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e002c000H
// union <unnamed> volatile __data _A_PINSEL0
_A_PINSEL0:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0028004H
// union <unnamed> volatile __data _A_IOSET
_A_IOSET:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0028008H
// union <unnamed> volatile __data _A_IODIR
_A_IODIR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e002800cH
// union <unnamed> volatile __data _A_IOCLR
_A_IOCLR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0004000H
// union <unnamed> volatile __data _A_T0IR
_A_T0IR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0004004H
// union <unnamed> volatile __data _A_T0TCR
_A_T0TCR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0004010H
// unsigned long volatile __data T0PC
T0PC:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0004014H
// union <unnamed> volatile __data _A_T0MCR
_A_T0MCR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0004018H
// unsigned long volatile __data T0MR0
T0MR0:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0004028H
// union <unnamed> volatile __data _A_T0CCR
_A_T0CCR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e000403cH
// union <unnamed> volatile __data _A_T0EMR
_A_T0EMR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e01fc040H
// union <unnamed> volatile __data _A_MEMMAP
_A_MEMMAP:
        DS8 4
//   16 
//   17 /*
//   18 *********************************************************************************************************
//   19 *                                              CONSTANTS
//   20 *********************************************************************************************************
//   21 */
//   22 
//   23 #define  BSP_UNDEF_INSTRUCTION_VECTOR_ADDR   (*(INT32U *)0x00000004L)
//   24 #define  BSP_SWI_VECTOR_ADDR                 (*(INT32U *)0x00000008L)
//   25 #define  BSP_PREFETCH_ABORT_VECTOR_ADDR      (*(INT32U *)0x0000000CL)
//   26 #define  BSP_DATA_ABORT_VECTOR_ADDR          (*(INT32U *)0x00000010L)
//   27 #define  BSP_IRQ_VECTOR_ADDR                 (*(INT32U *)0x00000018L)
//   28 #define  BSP_FIQ_VECTOR_ADDR                 (*(INT32U *)0x0000001CL)
//   29 
//   30 #define  BSP_IRQ_ISR_ADDR                    (*(INT32U *)0x00000038L)
//   31 #define  BSP_FIQ_ISR_ADDR                    (*(INT32U *)0x0000003CL)
//   32 
//   33 /*
//   34 *********************************************************************************************************
//   35 *                                               DATA TYPES
//   36 *********************************************************************************************************
//   37 */
//   38 
//   39 typedef  void (*PFNCT)(void);
//   40 
//   41 /*
//   42 *********************************************************************************************************
//   43 *                                              VARIABLES
//   44 *********************************************************************************************************
//   45 */
//   46 

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   47 INT32U  VIC_SpuriousInt;
VIC_SpuriousInt:
        DS8 4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI NoFunction
        ARM
??BSP_Init??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock0
        REQUIRE BSP_Init
//   48 
//   49 /*
//   50 *********************************************************************************************************
//   51 *                                              PROTOTYPES
//   52 *********************************************************************************************************
//   53 */
//   54 
//   55 void  VIC_Init(void);
//   56 void  VIC_Dummy(void);
//   57 void  VIC_DummyWDT(void);
//   58 void  VIC_DummyTIMER0(void);
//   59 void  VIC_DummyTIMER1(void);
//   60 void  VIC_DummyUART0(void);
//   61 void  VIC_DummyUART1(void);
//   62 void  VIC_DummyPWM0(void);
//   63 void  VIC_DummyI2C(void);
//   64 void  VIC_DummySPI(void);
//   65 void  VIC_DummyRTC(void);
//   66 void  VIC_DummyEINT0(void);
//   67 void  VIC_DummyEINT1(void);
//   68 void  VIC_DummyEINT2(void);
//   69 
//   70 /*
//   71 *********************************************************************************************************
//   72 *                                         BSP INITIALIZATION
//   73 *
//   74 * Description : This function should be called by your application code before you make use of any of the
//   75 *               functions found in this module.
//   76 *               
//   77 * Arguments   : none
//   78 *********************************************************************************************************
//   79 */
//   80 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function BSP_Init
        THUMB
//   81 void  BSP_Init (void)
//   82 {
BSP_Init:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//   83     MEMMAP                            = 2;                      /* Remap 64 bytes of int. RAM to 0x00  */
        LDR      R0,??BSP_Init_0  ;; 0xe01fc040
        MOVS     R1,#+2
        STR      R1,[R0, #+0]
//   84     
//   85     BSP_IRQ_VECTOR_ADDR               = 0xE59FF018;             /* LDR PC,[PC,#0x18] instruction       */
        MOVS     R0,#+24
        LDR      R1,??BSP_Init_0+0x4  ;; 0xe59ff018
        STR      R1,[R0, #+0]
//   86     BSP_IRQ_ISR_ADDR                  = (INT32U)OS_CPU_IRQ_ISR; /* IRQ exception vector address        */
        MOVS     R0,#+56
        LDR      R1,??BSP_Init_0+0x8  ;; OS_CPU_IRQ_ISR
        STR      R1,[R0, #+0]
//   87 
//   88     BSP_FIQ_VECTOR_ADDR               = 0xE59FF018;             /* LDR PC,[PC,#0x18] instruction       */
        MOVS     R0,#+28
        LDR      R1,??BSP_Init_0+0x4  ;; 0xe59ff018
        STR      R1,[R0, #+0]
//   89     BSP_FIQ_ISR_ADDR                  = (INT32U)OS_CPU_FIQ_ISR; /* FIQ exception vector address        */
        MOVS     R0,#+60
        LDR      R1,??BSP_Init_0+0xC  ;; OS_CPU_FIQ_ISR
        STR      R1,[R0, #+0]
//   90 
//   91 
//   92     BSP_UNDEF_INSTRUCTION_VECTOR_ADDR = 0xEAFFFFFE;             /* Jump to itself                      */
        MOVS     R0,#+4
        LDR      R1,??BSP_Init_0+0x10  ;; 0xeafffffe
        STR      R1,[R0, #+0]
//   93     BSP_SWI_VECTOR_ADDR               = 0xEAFFFFFE;
        MOVS     R0,#+8
        STR      R1,[R0, #+0]
//   94     BSP_PREFETCH_ABORT_VECTOR_ADDR    = 0xEAFFFFFE;
        MOVS     R0,#+12
        STR      R1,[R0, #+0]
//   95     BSP_DATA_ABORT_VECTOR_ADDR        = 0xEAFFFFFE;
        MOVS     R0,#+16
        STR      R1,[R0, #+0]
//   96     BSP_FIQ_VECTOR_ADDR               = 0xEAFFFFFE;
        MOVS     R0,#+28
        STR      R1,[R0, #+0]
//   97 
//   98     VIC_Init();                                   /* Initialize the Vectored Interrupt Controller      */
        BL       VIC_Init
//   99 
//  100     LED_Init();
        BL       LED_Init
//  101     Tmr_TickInit();
        BL       Tmr_TickInit
//  102 }
        POP      {R0}
        BX       R0               ;; return
        Nop      
        DATA
??BSP_Init_0:
        DC32     0xe01fc040
        DC32     0xe59ff018
        DC32     OS_CPU_IRQ_ISR
        DC32     OS_CPU_FIQ_ISR
        DC32     0xeafffffe
        CFI EndBlock cfiBlock1

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        ARM
??LED_Init??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock2
        REQUIRE LED_Init
//  103 
//  104 
//  105 /*
//  106 *********************************************************************************************************
//  107 *                                         BSP INITIALIZATION
//  108 *
//  109 * Description : This function should be called by your application code before you make use of any of the
//  110 *               functions found in this module.
//  111 *               
//  112 * Arguments   : none
//  113 *********************************************************************************************************
//  114 */
//  115 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon1
        CFI Function LED_Init
        THUMB
//  116 void  LED_Init (void)
//  117 {
LED_Init:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//  118     PINSEL0             = 0;                      /* Use GPIO pins P0.0 to P0.15 for LEDs              */
        LDR      R0,??LED_Init_0  ;; 0xe002c000
        MOVS     R1,#+0
        STR      R1,[R0, #+0]
//  119     IODIR              |= 0x0000FFFF;             /* Set GPIO pins as outputs                          */
        LDR      R0,??LED_Init_0+0x4  ;; 0xe0028008
        LDR      R1,[R0, #+0]
        LDR      R2,??DataTable2  ;; 0xffff
        ORRS     R2,R2,R1
        STR      R2,[R0, #+0]
//  120 
//  121     LED_Off(0);                                   /* Turn OFF all the LEDs                             */
        MOVS     R0,#+0
        BL       LED_Off
//  122 
//  123 }
        POP      {R0}
        BX       R0               ;; return
        DATA
??LED_Init_0:
        DC32     0xe002c000
        DC32     0xe0028008
        CFI EndBlock cfiBlock3

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        ARM
??LED_On??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock4
        REQUIRE LED_On
//  124 
//  125 /*
//  126 *********************************************************************************************************
//  127 *                                             LED ON
//  128 *
//  129 * Description : This function is used to control any or all the LEDs on the board.
//  130 *               
//  131 * Arguments   : led    is the number of the LED to control
//  132 *                      0    indicates that you want ALL the LEDs to be ON
//  133 *                      1    turns ON LED1 on the board
//  134 *                      .
//  135 *                      .
//  136 *                      8    turns ON LED8 on the board
//  137 *********************************************************************************************************
//  138 */
//  139 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon1
        CFI Function LED_On
        THUMB
//  140 void  LED_On (INT8U led)
//  141 {
LED_On:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//  142     switch (led) {
        CMP      R0,#+16
        BHI      ??LED_On_1
        ADR      R1,??LED_On_0
        LDRB     R1,[R1, R0]
        ADD      PC,PC,R1
        DATA
??LED_On_0:
        DC8      +16,+22,+28,+34
        DC8      +40,+46,+52,+58
        DC8      +64,+70,+78,+86
        DC8      +94,+102,+110,+118
        DC8      +126,+0
        THUMB
//  143         case 0:
//  144              IOSET = 0x0000FFFF;
??LED_On_2:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        LDR      R1,??DataTable2  ;; 0xffff
        B.N      ??LED_On_4
//  145              break;
//  146 
//  147         case 1:
//  148              IOSET = 1 << 0;
??LED_On_5:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+1
        B.N      ??LED_On_4
//  149              break;
//  150 
//  151         case 2:
//  152              IOSET = 1 << 1;
??LED_On_6:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+2
        B.N      ??LED_On_4
//  153              break;
//  154 
//  155         case 3:
//  156              IOSET = 1 << 2;
??LED_On_7:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+4
        B.N      ??LED_On_4
//  157              break;
//  158 
//  159         case 4:
//  160              IOSET = 1 << 3;
??LED_On_8:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+8
        B.N      ??LED_On_4
//  161              break;
//  162 
//  163         case 5:
//  164              IOSET = 1 << 4;
??LED_On_9:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+16
        B.N      ??LED_On_4
//  165              break;
//  166 
//  167         case 6:
//  168              IOSET = 1 << 5;
??LED_On_10:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+32
        B.N      ??LED_On_4
//  169              break;
//  170 
//  171         case 7:
//  172              IOSET = 1 << 6;

⌨️ 快捷键说明

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