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

📄 os_core.txt

📁 uc/os在lpc2100系列的KEIL模板 uc/os在lpc2100系列的real view模板 uc/os在lpc210X系列的real view模板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;598    }
00073c  e12fff1e          BX       lr
;;;599    #endif
                          ENDP

                  OS_TCBInit PROC
;;;1035   INT8U  OS_TCBInit (INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt)
;;;1036   {
000740  e92d5fff          PUSH     {r0-r12,lr}
000744  e28db038          ADD      r11,sp,#0x38
000748  e89b0e00          LDM      r11,{r9-r11}
00074c  e1a05000          MOV      r5,r0
000750  e1a06001          MOV      r6,r1
000754  e1a08002          MOV      r8,r2
;;;1037   #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
;;;1038       OS_CPU_SR  cpu_sr;
;;;1039   #endif    
;;;1040       OS_TCB    *ptcb;
;;;1041   
;;;1042   
;;;1043       OS_ENTER_CRITICAL();
000758  ef000002          SVC      #0x2
;;;1044       ptcb = OSTCBFreeList;                                  /* Get a free TCB from the free TCB list    */
00075c  e59f70f8          LDR      r7,|L1.2140|
000760  e5974024          LDR      r4,[r7,#0x24]  ; OSTCBFreeList
;;;1045       if (ptcb != (OS_TCB *)0) {
000764  e3540000          CMP      r4,#0
000768  0a000038          BEQ      |L1.2128|
;;;1046           OSTCBFreeList        = ptcb->OSTCBNext;            /* Update pointer to free TCB list          */
00076c  e5940014          LDR      r0,[r4,#0x14]
000770  e5870024          STR      r0,[r7,#0x24]  ; OSTCBFreeList
;;;1047           OS_EXIT_CRITICAL();
000774  ef000003          SVC      #0x3
;;;1048           ptcb->OSTCBStkPtr    = ptos;                       /* Load Stack pointer in TCB                */
000778  e5846000          STR      r6,[r4,#0]
;;;1049           ptcb->OSTCBPrio      = (INT8U)prio;                /* Load task priority into TCB              */
00077c  e5c4502d          STRB     r5,[r4,#0x2d]
;;;1050           ptcb->OSTCBStat      = OS_STAT_RDY;                /* Task is ready to run                     */
000780  e3a06000          MOV      r6,#0
000784  e5c4602c          STRB     r6,[r4,#0x2c]
;;;1051           ptcb->OSTCBDly       = 0;                          /* Task is not delayed                      */
000788  e1c462ba          STRH     r6,[r4,#0x2a]
;;;1052   
;;;1053   #if OS_TASK_CREATE_EXT_EN > 0
;;;1054           ptcb->OSTCBExtPtr    = pext;                       /* Store pointer to TCB extension           */
00078c  e584a004          STR      r10,[r4,#4]
;;;1055           ptcb->OSTCBStkSize   = stk_size;                   /* Store stack size                         */
000790  e584900c          STR      r9,[r4,#0xc]
;;;1056           ptcb->OSTCBStkBottom = pbos;                       /* Store pointer to bottom of stack         */
000794  e5848008          STR      r8,[r4,#8]
;;;1057           ptcb->OSTCBOpt       = opt;                        /* Store task options                       */
000798  e1c4b1b0          STRH     r11,[r4,#0x10]
;;;1058           ptcb->OSTCBId        = id;                         /* Store task ID                            */
00079c  e59d000c          LDR      r0,[sp,#0xc]
0007a0  e1c401b2          STRH     r0,[r4,#0x12]
;;;1059   #else
;;;1060           pext                 = pext;                       /* Prevent compiler warning if not used     */
;;;1061           stk_size             = stk_size;
;;;1062           pbos                 = pbos;
;;;1063           opt                  = opt;
;;;1064           id                   = id;
;;;1065   #endif
;;;1066   
;;;1067   #if OS_TASK_DEL_EN > 0
;;;1068           ptcb->OSTCBDelReq    = OS_NO_ERR;
0007a4  e5c46032          STRB     r6,[r4,#0x32]
;;;1069   #endif
;;;1070   
;;;1071           ptcb->OSTCBY         = prio >> 3;                  /* Pre-compute X, Y, BitX and BitY          */
0007a8  e1a001a5          LSR      r0,r5,#3
0007ac  e5c4002f          STRB     r0,[r4,#0x2f]
;;;1072           ptcb->OSTCBBitY      = OSMapTbl[ptcb->OSTCBY];
0007b0  e5d4002f          LDRB     r0,[r4,#0x2f]
0007b4  e59f10d0          LDR      r1,|L1.2188|
0007b8  e7d10000          LDRB     r0,[r1,r0]
0007bc  e5c40031          STRB     r0,[r4,#0x31]
;;;1073           ptcb->OSTCBX         = prio & 0x07;
0007c0  e2050007          AND      r0,r5,#7
0007c4  e5c4002e          STRB     r0,[r4,#0x2e]
;;;1074           ptcb->OSTCBBitX      = OSMapTbl[ptcb->OSTCBX];
0007c8  e7d10000          LDRB     r0,[r1,r0]
0007cc  e5c40030          STRB     r0,[r4,#0x30]
;;;1075   
;;;1076   #if OS_EVENT_EN > 0
;;;1077           ptcb->OSTCBEventPtr  = (OS_EVENT *)0;              /* Task is not pending on an event          */
0007d0  e584601c          STR      r6,[r4,#0x1c]
;;;1078   #endif
;;;1079   
;;;1080   #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) && (OS_TASK_DEL_EN > 0)
;;;1081           ptcb->OSTCBFlagNode  = (OS_FLAG_NODE *)0;          /* Task is not pending on an event flag     */
0007d4  e5846024          STR      r6,[r4,#0x24]
;;;1082   #endif
;;;1083   
;;;1084   #if (OS_MBOX_EN > 0) || ((OS_Q_EN > 0) && (OS_MAX_QS > 0))
;;;1085           ptcb->OSTCBMsg       = (void *)0;                  /* No message received                      */
0007d8  e5846020          STR      r6,[r4,#0x20]
;;;1086   #endif
;;;1087   
;;;1088   #if OS_VERSION >= 204
;;;1089           OSTCBInitHook(ptcb);
0007dc  e1a00004          MOV      r0,r4
0007e0  ebfffffe          BL       OSTCBInitHook
;;;1090   #endif
;;;1091   
;;;1092           OSTaskCreateHook(ptcb);                            /* Call user defined hook                   */
0007e4  e1a00004          MOV      r0,r4
0007e8  ebfffffe          BL       OSTaskCreateHook
;;;1093           
;;;1094           OS_ENTER_CRITICAL();
0007ec  ef000002          SVC      #0x2
;;;1095           OSTCBPrioTbl[prio] = ptcb;
0007f0  e59f0084          LDR      r0,|L1.2172|
0007f4  e7804105          STR      r4,[r0,r5,LSL #2]
;;;1096           ptcb->OSTCBNext    = OSTCBList;                    /* Link into TCB chain                      */
0007f8  e597002c          LDR      r0,[r7,#0x2c]  ; OSTCBList
0007fc  e5840014          STR      r0,[r4,#0x14]
;;;1097           ptcb->OSTCBPrev    = (OS_TCB *)0;
000800  e5846018          STR      r6,[r4,#0x18]
;;;1098           if (OSTCBList != (OS_TCB *)0) {
000804  e3500000          CMP      r0,#0
000808  0a000000          BEQ      |L1.2064|
;;;1099               OSTCBList->OSTCBPrev = ptcb;
00080c  e5804018          STR      r4,[r0,#0x18]
                  |L1.2064|
;;;1100           }
;;;1101           OSTCBList               = ptcb;
000810  e587402c          STR      r4,[r7,#0x2c]  ; OSTCBList
;;;1102           OSRdyGrp               |= ptcb->OSTCBBitY;         /* Make task ready to run                   */
000814  e5d40031          LDRB     r0,[r4,#0x31]
000818  e5d71007          LDRB     r1,[r7,#7]  ; OSRdyGrp
00081c  e1800001          ORR      r0,r0,r1
000820  e5c70007          STRB     r0,[r7,#7]  ; OSRdyGrp
;;;1103           OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
000824  e5d4002f          LDRB     r0,[r4,#0x2f]
000828  e59f1058          LDR      r1,|L1.2184|
00082c  e5d43030          LDRB     r3,[r4,#0x30]
000830  e7d12000          LDRB     r2,[r1,r0]
000834  e1822003          ORR      r2,r2,r3
000838  e7c12000          STRB     r2,[r1,r0]
;;;1104           OS_EXIT_CRITICAL();
00083c  ef000003          SVC      #0x3
;;;1105           return (OS_NO_ERR);
000840  e3a00000          MOV      r0,#0
                  |L1.2116|
000844  e28dd010          ADD      sp,sp,#0x10
000848  e8bd5ff0          POP      {r4-r12,lr}
;;;1106       }
;;;1107       OS_EXIT_CRITICAL();
;;;1108       return (OS_NO_MORE_TCB);
;;;1109   }
00084c  e12fff1e          BX       lr
                  |L1.2128|
000850  ef000003          SVC      #0x3                  ;1107
000854  e3a00046          MOV      r0,#0x46              ;1108
000858  eafffff9          B        |L1.2116|
                          ENDP

                  |L1.2140|
00085c  00000000          DCD      ||.data||
                  |L1.2144|
000860  00000018          DCD      ||.bss||+0x18
                  |L1.2148|
000864  0000fffe          DCD      0x0000fffe
                  |L1.2152|
000868  00000814          DCD      ||.bss||+0x814
                  |L1.2156|
00086c  00000818          DCD      ||.bss||+0x818
                  |L1.2160|
000870  0000ffff          DCD      0x0000ffff
                  |L1.2164|
000874  00001014          DCD      ||.bss||+0x1014
                  |L1.2168|
000878  00000000          DCD      ||.bss||
                  |L1.2172|
00087c  00001018          DCD      ||.bss||+0x1018
                  |L1.2176|
000880  0000104c          DCD      ||.bss||+0x104c
                  |L1.2180|
000884  00000008          DCD      ||.constdata||+0x8
                  |L1.2184|
000888  0000000a          DCD      ||.data||+0xa
                  |L1.2188|
00088c  00000000          DCD      ||.constdata||

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

                  OSCPUUsage
000000  00                DCB      0x00
                  OSStatRdy
000001  00                DCB      0x00
                  OSIntNesting
000002  00                DCB      0x00
                  OSIntExitY
000003  00                DCB      0x00
                  OSLockNesting
000004  00                DCB      0x00
                  OSPrioCur
000005  00                DCB      0x00
                  OSPrioHighRdy
000006  00                DCB      0x00
                  OSRdyGrp
000007  00                DCB      0x00
                  OSRunning
000008  00                DCB      0x00
                  OSTaskCtr
000009  00                DCB      0x00
                  OSRdyTbl
00000a  0000              DCB      0x00,0x00
                  OSCtxSwCtr
00000c  00000000          DCD      0x00000000
                  OSEventFreeList
000010  00000000          DCD      0x00000000
                  OSIdleCtrMax
000014  00000000          DCD      0x00000000
                  OSIdleCtrRun
000018  00000000          DCD      0x00000000
                  OSIdleCtr
00001c  00000000          DCD      0x00000000
                  OSTCBCur
000020  00000000          DCD      0x00000000
                  OSTCBFreeList
000024  00000000          DCD      0x00000000
                  OSTCBHighRdy
000028  00000000          DCD      0x00000000
                  OSTCBList
00002c  00000000          DCD      0x00000000
                  OSTime
000030  00000000          DCD      0x00000000

                          AREA ||.constdata||, DATA, READONLY, ALIGN=0

                  OSMapTbl
000000  01020408          DCB      0x01,0x02,0x04,0x08
000004  10204080          DCB      0x10,0x20,0x40,0x80
                  OSUnMapTbl
000008  00000100          DCB      0x00,0x00,0x01,0x00
00000c  02000100          DCB      0x02,0x00,0x01,0x00
000010  03000100          DCB      0x03,0x00,0x01,0x00
000014  02000100          DCB      0x02,0x00,0x01,0x00
000018  04000100          DCB      0x04,0x00,0x01,0x00
00001c  02000100          DCB      0x02,0x00,0x01,0x00
000020  03000100          DCB      0x03,0x00,0x01,0x00
000024  02000100          DCB      0x02,0x00,0x01,0x00
000028  05000100          DCB      0x05,0x00,0x01,0x00
00002c  02000100          DCB      0x02,0x00,0x01,0x00
000030  03000100          DCB      0x03,0x00,0x01,0x00
000034  02000100          DCB      0x02,0x00,0x01,0x00
000038  04000100          DCB      0x04,0x00,0x01,0x00
00003c  02000100          DCB      0x02,0x00,0x01,0x00
000040  03000100          DCB      0x03,0x00,0x01,0x00
000044  02000100          DCB      0x02,0x00,0x01,0x00
000048  06000100          DCB      0x06,0x00,0x01,0x00
00004c  02000100          DCB      0x02,0x00,0x01,0x00
000050  03000100          DCB      0x03,0x00,0x01,0x00
000054  02000100          DCB      0x02,0x00,0x01,0x00
000058  04000100          DCB      0x04,0x00,0x01,0x00
00005c  02000100          DCB      0x02,0x00,0x01,0x00
000060  03000100          DCB      0x03,0x00,0x01,0x00
000064  02000100          DCB      0x02,0x00,0x01,0x00
000068  05000100          DCB      0x05,0x00,0x01,0x00
00006c  02000100          DCB      0x02,0x00,0x01,0x00
000070  03000100          DCB      0x03,0x00,0x01,0x00
000074  02000100          DCB      0x02,0x00,0x01,0x00
000078  04000100        

⌨️ 快捷键说明

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