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

📄 os_core.txt

📁 ATMEL ARM7 SAM64 Porting ucos / Keil ARM VER3.04。不同于其它
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;1536           ptcb->OSTCBY         = (INT8U)(prio >> 3);         /* Pre-compute X, Y, BitX and BitY          */
;;;1537           ptcb->OSTCBBitY      = 1 << ptcb->OSTCBY;
000614  e3a01001          MOV      r1,#1
000618  e1c401b2          STRH     r0,[r4,#0x12]         ;1522
00061c  e1a001a6          LSR      r0,r6,#3              ;1536
000620  e5c40022          STRB     r0,[r4,#0x22]         ;1536
000624  e1a00011          LSL      r0,r1,r0
000628  e5c40024          STRB     r0,[r4,#0x24]
;;;1538           ptcb->OSTCBX         = (INT8U)(prio & 0x07);
00062c  e2060007          AND      r0,r6,#7
000630  e5c40021          STRB     r0,[r4,#0x21]
;;;1539           ptcb->OSTCBBitX      = 1 << ptcb->OSTCBX;
000634  e1a00011          LSL      r0,r1,r0
000638  e5c40023          STRB     r0,[r4,#0x23]
;;;1540   #else
;;;1541           ptcb->OSTCBY         = (INT8U)((prio >> 4) & 0xFF);/* Pre-compute X, Y, BitX and BitY          */
;;;1542           ptcb->OSTCBBitY      = 1 << ptcb->OSTCBY;
;;;1543           ptcb->OSTCBX         = (INT8U)(prio & 0x0F);
;;;1544           ptcb->OSTCBBitX      = 1 << ptcb->OSTCBX;
;;;1545   #endif
;;;1546   
;;;1547   #if OS_EVENT_EN
;;;1548           ptcb->OSTCBEventPtr  = (OS_EVENT *)0;              /* Task is not pending on an event          */
;;;1549   #endif
;;;1550   
;;;1551   #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) && (OS_TASK_DEL_EN > 0)
;;;1552           ptcb->OSTCBFlagNode  = (OS_FLAG_NODE *)0;          /* Task is not pending on an event flag     */
;;;1553   #endif
;;;1554   
;;;1555   #if (OS_MBOX_EN > 0) || ((OS_Q_EN > 0) && (OS_MAX_QS > 0))
;;;1556           ptcb->OSTCBMsg       = (void *)0;                  /* No message received                      */
;;;1557   #endif
;;;1558   
;;;1559   #if OS_TASK_PROFILE_EN > 0
;;;1560           ptcb->OSTCBCtxSwCtr    = 0L;                       /* Initialize profiling variables           */
;;;1561           ptcb->OSTCBCyclesStart = 0L;
00063c  e5845028          STR      r5,[r4,#0x28]
;;;1562           ptcb->OSTCBCyclesTot   = 0L;
000640  e5845030          STR      r5,[r4,#0x30]
;;;1563           ptcb->OSTCBStkBase     = (OS_STK *)0;
000644  e584502c          STR      r5,[r4,#0x2c]
;;;1564           ptcb->OSTCBStkUsed     = 0L;
000648  e5845034          STR      r5,[r4,#0x34]
;;;1565   #endif
;;;1566   
;;;1567   #if OS_TASK_NAME_SIZE > 1
;;;1568           ptcb->OSTCBTaskName[0] = '?';                      /* Unknown name at task creation            */
00064c  e3a0003f          MOV      r0,#0x3f
000650  e5845038          STR      r5,[r4,#0x38]
000654  e5c4003c          STRB     r0,[r4,#0x3c]
;;;1569           ptcb->OSTCBTaskName[1] = OS_ASCII_NUL;
;;;1570   #endif
;;;1571   
;;;1572   #if OS_VERSION >= 204
;;;1573           OSTCBInitHook(ptcb);
000658  e1a00004          MOV      r0,r4
00065c  e5c4503d          STRB     r5,[r4,#0x3d]         ;1569
000660  ebfffffe          BL       OSTCBInitHook
;;;1574   #endif
;;;1575   
;;;1576           OSTaskCreateHook(ptcb);                            /* Call user defined hook                   */
000664  e1a00004          MOV      r0,r4
000668  ebfffffe          BL       OSTaskCreateHook
;;;1577   
;;;1578           OS_ENTER_CRITICAL();
00066c  ebfffffe          BL       OS_CPU_SR_Save
;;;1579           OSTCBPrioTbl[prio] = ptcb;
000670  e51f11f0          LDR      r1,|L1.1160|
;;;1580           ptcb->OSTCBNext    = OSTCBList;                    /* Link into TCB chain                      */
;;;1581           ptcb->OSTCBPrev    = (OS_TCB *)0;
000674  e2842014          ADD      r2,r4,#0x14
000678  e7814106          STR      r4,[r1,r6,LSL #2]     ;1579
00067c  e5971028          LDR      r1,[r7,#0x28]         ;1580  ; OSTCBList
000680  e8820022          STM      r2,{r1,r5}
;;;1582           if (OSTCBList != (OS_TCB *)0) {
000684  e3510000          CMP      r1,#0
;;;1583               OSTCBList->OSTCBPrev = ptcb;
000688  15814018          STRNE    r4,[r1,#0x18]
;;;1584           }
;;;1585           OSTCBList               = ptcb;
00068c  e5874028          STR      r4,[r7,#0x28]  ; OSTCBList
;;;1586           OSRdyGrp               |= ptcb->OSTCBBitY;         /* Make task ready to run                   */
000690  e5d41024          LDRB     r1,[r4,#0x24]
000694  e5d72006          LDRB     r2,[r7,#6]  ; OSRdyGrp
000698  e1811002          ORR      r1,r1,r2
00069c  e5c71006          STRB     r1,[r7,#6]  ; OSRdyGrp
;;;1587           OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
0006a0  e5d41022          LDRB     r1,[r4,#0x22]
0006a4  e51f21e8          LDR      r2,|L1.1220|
0006a8  e5d4c023          LDRB     r12,[r4,#0x23]
0006ac  e7d23001          LDRB     r3,[r2,r1]
0006b0  e183300c          ORR      r3,r3,r12
0006b4  e7c23001          STRB     r3,[r2,r1]
;;;1588           OSTaskCtr++;                                       /* Increment the #tasks counter             */
0006b8  e5d71008          LDRB     r1,[r7,#8]  ; OSTaskCtr
0006bc  e2811001          ADD      r1,r1,#1
0006c0  e5c71008          STRB     r1,[r7,#8]  ; OSTaskCtr
;;;1589           OS_EXIT_CRITICAL();
0006c4  ebfffffe          BL       OS_CPU_SR_Restore
;;;1590           return (OS_NO_ERR);
0006c8  e3a00000          MOV      r0,#0
                  |L1.1740|
0006cc  e28dd010          ADD      sp,sp,#0x10
0006d0  e8bd5ff0          POP      {r4-r12,lr}
;;;1591       }
;;;1592       OS_EXIT_CRITICAL();
;;;1593       return (OS_NO_MORE_TCB);
;;;1594   }
0006d4  e12fff1e          BX       lr
                  |L1.1752|
0006d8  ebfffffe          BL       OS_CPU_SR_Restore     ;1592
0006dc  e3a00046          MOV      r0,#0x46              ;1593
0006e0  eafffff9          B        |L1.1740|             ;1593
                          ENDP

                  OS_SchedNew PROC
;;;1218   
;;;1219       y             = OSUnMapTbl[OSRdyGrp];
0006e4  e51f1260          LDR      r1,|L1.1164|
0006e8  e59f201c          LDR      r2,|L1.1804|
0006ec  e5d10006          LDRB     r0,[r1,#6]  ; OSRdyGrp
;;;1220       OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
0006f0  e2813009          ADD      r3,r1,#9
0006f4  e7d20000          LDRB     r0,[r2,r0]            ;1219
0006f8  e7d33000          LDRB     r3,[r3,r0]
0006fc  e7d22003          LDRB     r2,[r2,r3]
000700  e0820180          ADD      r0,r2,r0,LSL #3
000704  e5c10005          STRB     r0,[r1,#5]  ; OSPrioHighRdy
;;;1221   #else                                            /* We support up to 256 tasks                         */
;;;1222       INT8U   y;
;;;1223       INT16U *ptbl;
;;;1224   
;;;1225   
;;;1226       if ((OSRdyGrp & 0xFF) != 0) {
;;;1227           y = OSUnMapTbl[OSRdyGrp & 0xFF];
;;;1228       } else {
;;;1229           y = OSUnMapTbl[(OSRdyGrp >> 8) & 0xFF] + 8;
;;;1230       }
;;;1231       ptbl = &OSRdyTbl[y];
;;;1232       if ((*ptbl & 0xFF) != 0) {
;;;1233           OSPrioHighRdy = (INT8U)((y << 4) + OSUnMapTbl[(*ptbl & 0xFF)]);
;;;1234       } else {
;;;1235           OSPrioHighRdy = (INT8U)((y << 4) + OSUnMapTbl[(*ptbl >> 8) & 0xFF] + 8);
;;;1236       }
;;;1237   #endif
;;;1238   }
000708  e12fff1e          BX       lr
                  |L1.1804|
00070c  00000000          DCD      ||.constdata.1||
                          ENDP



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

                  OSCPUUsage
                          DCB      0x00
                  OSStatRdy
                          DCB      0x00
                  OSIntNesting
                          DCB      0x00
                  OSLockNesting
                          DCB      0x00
                  OSPrioCur
                          DCB      0x00
                  OSPrioHighRdy
                          DCB      0x00
                  OSRdyGrp
                          DCB      0x00
                  OSRunning
                          DCB      0x00
                  OSTaskCtr
                          DCB      0x00
                  OSRdyTbl
                          DCB      0x00,0x00
                          DCB      0x00
                  OSCtxSwCtr
                          DCD      0x00000000
                  OSIdleCtrMax
                          DCD      0x00000000
                  OSIdleCtrRun
                          DCD      0x00000000
                  OSIdleCtr
                          DCD      0x00000000
                  OSTCBCur
                          DCD      0x00000000
                  OSTCBFreeList
                          DCD      0x00000000
                  OSTCBHighRdy
                          DCD      0x00000000
                  OSTCBList
                          DCD      0x00000000


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

                  OSUnMapTbl
                          DCB      0x00,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x05,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x06,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x05,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x07,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x05,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x06,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x05,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x04,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00
                          DCB      0x03,0x00,0x01,0x00
                          DCB      0x02,0x00,0x01,0x00


                          AREA ||.bss.5||, NOINIT, ALIGN=2

                  OSTaskStatStk
                          % 512
                  OSTaskIdleStk
                          % 512
                  OSTCBPrioTbl
                          % 64
                  OSTCBTbl
                          % 912

⌨️ 快捷键说明

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