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

📄 os_cpu_c.txt

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;325    
;;;326        return (stk);
000158  e8bd4030          POP      {r4,r5,lr}
;;;327    }
00015c  e12fff1e          BX       lr
                          ENDP

                  OSTaskSwHook PROC
;;;345    void  OSTaskSwHook (void)
;;;346    {
000160  e92d4010          PUSH     {r4,lr}
;;;347    #if OS_CPU_FPU_EN > 0
;;;348        void  *pblk;
;;;349    #endif
;;;350    
;;;351    #if OS_CPU_FPU_EN > 0                                      /* Save VFP context of preempted task       */
;;;352        if (OSRunning == OS_TRUE) {                            /* Don't save on OSStart()!                 */
;;;353            if (OSTCBCur->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {    /* See if task used FP                      */
;;;354                pblk = OSTCBCur->OSTCBExtPtr;                  /* Yes, Get pointer to FP storage area      */
;;;355                if (pblk != (void *)0) {                       /*      Make sure we have storage           */
;;;356                    OS_CPU_FP_Save(pblk);                      /*      Save the VFP registers in block     */
;;;357                }
;;;358            }
;;;359        }
;;;360                                                               /* Restore VFP context of new task          */
;;;361        if (OSTCBHighRdy->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {    /* See if new task uses FP                  */
;;;362            pblk = OSTCBHighRdy->OSTCBExtPtr;                  /* Yes, Get pointer to FP storage area      */
;;;363            if (pblk != (void *)0) {                           /*      Make sure we have storage           */
;;;364                OS_CPU_FP_Restore(pblk);                       /*      Get contents of VFP registers       */
;;;365            }
;;;366        }
;;;367    #endif
;;;368    
;;;369    #if OS_VIEW_MODULE > 0
;;;370        OSView_TaskSwHook();
000164  ebfffffe          BL       OSView_TaskSwHook
;;;371    #endif
;;;372    }
000168  e8bd4010          POP      {r4,lr}
00016c  e12fff1e          BX       lr
                          ENDP

                  OSTCBInitHook PROC
;;;389        (void)ptcb;                                                         /* Prevent Compiler warning                                 */
;;;390    }
000170  e12fff1e          BX       lr
                          ENDP

                  OSTimeTickHook PROC
;;;406    void  OSTimeTickHook (void)
;;;407    {
000174  e92d4010          PUSH     {r4,lr}
;;;408    #if OS_VIEW_MODULE > 0
;;;409        OSView_TickHook();
000178  ebfffffe          BL       OSView_TickHook
;;;410    #endif
;;;411    
;;;412    #if OS_TMR_EN > 0
;;;413        OSTmrCtr++;
00017c  e59f00b0          LDR      r0,|L1.564|
000180  e1d000b0          LDRH     r0,[r0,#0]  ; OSTmrCtr
000184  e2800001          ADD      r0,r0,#1
000188  e3c00801          BIC      r0,r0,#0x10000
00018c  e59f10a0          LDR      r1,|L1.564|
000190  e1c100b0          STRH     r0,[r1,#0]  ; OSTmrCtr
;;;414        if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) {
000194  e2810000          ADD      r0,r1,#0
000198  e1d000b0          LDRH     r0,[r0,#0]  ; OSTmrCtr
00019c  e3500064          CMP      r0,#0x64
0001a0  ba000003          BLT      |L1.436|
;;;415            OSTmrCtr = 0;
0001a4  e3a00000          MOV      r0,#0
0001a8  e59f1084          LDR      r1,|L1.564|
0001ac  e1c100b0          STRH     r0,[r1,#0]  ; OSTmrCtr
;;;416            OSTmrSignal();
0001b0  ebfffffe          BL       OSTmrSignal
                  |L1.436|
;;;417        }
;;;418    #endif
;;;419    
;;;420    #if OS_CPU_ARM_DCC_EN > 0
;;;421        OSDCC_Handler();
;;;422    #endif
;;;423    }
0001b4  e8bd4010          POP      {r4,lr}
0001b8  e12fff1e          BX       lr
                          ENDP

                  OS_CPU_InitExceptVect PROC
;;;492    
;;;493        (*(INT32U *)OS_CPU_ARM_EXCEPT_UNDEF_INSTR_VECT_ADDR)       =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001bc  e59f0088          LDR      r0,|L1.588|
0001c0  e3a01000          MOV      r1,#0
0001c4  e5810004          STR      r0,[r1,#4]
;;;494        (*(INT32U *)OS_CPU_ARM_EXCEPT_UNDEF_INSTR_HANDLER_ADDR)    = (INT32U)OS_CPU_ARM_ExceptUndefInstrHndlr;
0001c8  e59f0080          LDR      r0,|L1.592|
0001cc  e5810024          STR      r0,[r1,#0x24]
;;;495    
;;;496        (*(INT32U *)OS_CPU_ARM_EXCEPT_SWI_VECT_ADDR)               =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001d0  e59f0074          LDR      r0,|L1.588|
0001d4  e5810008          STR      r0,[r1,#8]
;;;497        (*(INT32U *)OS_CPU_ARM_EXCEPT_SWI_HANDLER_ADDR)            = (INT32U)OS_CPU_ARM_ExceptSwiHndlr;
0001d8  e59f0074          LDR      r0,|L1.596|
0001dc  e5810028          STR      r0,[r1,#0x28]
;;;498    
;;;499        (*(INT32U *)OS_CPU_ARM_EXCEPT_PREFETCH_ABORT_VECT_ADDR)    =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001e0  e59f0064          LDR      r0,|L1.588|
0001e4  e581000c          STR      r0,[r1,#0xc]
;;;500        (*(INT32U *)OS_CPU_ARM_EXCEPT_PREFETCH_ABORT_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptPrefetchAbortHndlr;
0001e8  e59f0068          LDR      r0,|L1.600|
0001ec  e581002c          STR      r0,[r1,#0x2c]
;;;501    
;;;502        (*(INT32U *)OS_CPU_ARM_EXCEPT_DATA_ABORT_VECT_ADDR)        =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001f0  e59f0054          LDR      r0,|L1.588|
0001f4  e5810010          STR      r0,[r1,#0x10]
;;;503        (*(INT32U *)OS_CPU_ARM_EXCEPT_DATA_ABORT_HANDLER_ADDR)     = (INT32U)OS_CPU_ARM_ExceptDataAbortHndlr;
0001f8  e59f005c          LDR      r0,|L1.604|
0001fc  e5810030          STR      r0,[r1,#0x30]
;;;504    
;;;505        (*(INT32U *)OS_CPU_ARM_EXCEPT_ADDR_ABORT_VECT_ADDR)        =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
000200  e59f0044          LDR      r0,|L1.588|
000204  e5810014          STR      r0,[r1,#0x14]
;;;506        (*(INT32U *)OS_CPU_ARM_EXCEPT_ADDR_ABORT_HANDLER_ADDR)     = (INT32U)OS_CPU_ARM_ExceptAddrAbortHndlr;
000208  e59f0050          LDR      r0,|L1.608|
00020c  e5810034          STR      r0,[r1,#0x34]
;;;507    
;;;508        (*(INT32U *)OS_CPU_ARM_EXCEPT_IRQ_VECT_ADDR)               =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
000210  e59f0034          LDR      r0,|L1.588|
000214  e5810018          STR      r0,[r1,#0x18]
;;;509        (*(INT32U *)OS_CPU_ARM_EXCEPT_IRQ_HANDLER_ADDR)            = (INT32U)OS_CPU_ARM_ExceptIrqHndlr;
000218  e59f0044          LDR      r0,|L1.612|
00021c  e5810038          STR      r0,[r1,#0x38]
;;;510    
;;;511        (*(INT32U *)OS_CPU_ARM_EXCEPT_FIQ_VECT_ADDR)               =         OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
000220  e59f0024          LDR      r0,|L1.588|
000224  e581001c          STR      r0,[r1,#0x1c]
;;;512        (*(INT32U *)OS_CPU_ARM_EXCEPT_FIQ_HANDLER_ADDR)            = (INT32U)OS_CPU_ARM_ExceptFiqHndlr;
000228  e59f0038          LDR      r0,|L1.616|
00022c  e581003c          STR      r0,[r1,#0x3c]
;;;513    }
000230  e12fff1e          BX       lr
                          ENDP

                  |L1.564|
000234  00000000          DCD      ||.data||
                  |L1.568|
000238  14141414          DCD      0x14141414
                  |L1.572|
00023c  12121212          DCD      0x12121212
                  |L1.576|
000240  11111111          DCD      0x11111111
                  |L1.580|
000244  10101010          DCD      0x10101010
                  |L1.584|
000248  09090909          DCD      0x09090909
                  |L1.588|
00024c  e59ff018          DCD      0xe59ff018
                  |L1.592|
000250  00000000          DCD      OS_CPU_ARM_ExceptUndefInstrHndlr
                  |L1.596|
000254  00000000          DCD      OS_CPU_ARM_ExceptSwiHndlr
                  |L1.600|
000258  00000000          DCD      OS_CPU_ARM_ExceptPrefetchAbortHndlr
                  |L1.604|
00025c  00000000          DCD      OS_CPU_ARM_ExceptDataAbortHndlr
                  |L1.608|
000260  00000000          DCD      OS_CPU_ARM_ExceptAddrAbortHndlr
                  |L1.612|
000264  00000000          DCD      OS_CPU_ARM_ExceptIrqHndlr
                  |L1.616|
000268  00000000          DCD      OS_CPU_ARM_ExceptFiqHndlr

                          AREA ||.data||, DATA, ALIGN=1

                  OSTmrCtr
000000  0000              DCB      0x00,0x00

⌨️ 快捷键说明

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