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

📄 os_core.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;986                              OS_TASK_IDLE_ID,
;;;987                              &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
;;;988                              OS_TASK_IDLE_STK_SIZE,
;;;989                              (void *)0,                                 /* No TCB extension                     */
;;;990                              OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;991        #else
;;;992        (void)OSTaskCreateExt(OS_TaskIdle,
;;;993                              (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;;;994                              &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
;;;995                              OS_TASK_IDLE_PRIO,                         /* Lowest priority level                */
;;;996                              OS_TASK_IDLE_ID,
;;;997                              &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
;;;998                              OS_TASK_IDLE_STK_SIZE,
;;;999                              (void *)0,                                 /* No TCB extension                     */
;;;1000                             OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;1001       #endif
;;;1002   #else
;;;1003       #if OS_STK_GROWTH == 1
;;;1004       (void)OSTaskCreate(OS_TaskIdle,
;;;1005                          (void *)0,
;;;1006                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;;;1007                          OS_TASK_IDLE_PRIO);
;;;1008       #else
;;;1009       (void)OSTaskCreate(OS_TaskIdle,
;;;1010                          (void *)0,
;;;1011                          &OSTaskIdleStk[0],
;;;1012                          OS_TASK_IDLE_PRIO);
;;;1013       #endif
;;;1014   #endif
;;;1015   
;;;1016   #if OS_TASK_NAME_SIZE > 14
;;;1017       OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"uC/OS-II Idle", &err);
000240  aa06              ADD      r2,sp,#0x18
000242  a189              ADR      r1,|L1.1128|
000244  201f              MOVS     r0,#0x1f
000246  f7fff7ff          BL       OSTaskNameSet
;;;1018   #else
;;;1019   #if OS_TASK_NAME_SIZE > 7
;;;1020       OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"OS-Idle", &err);
;;;1021   #endif
;;;1022   #endif
;;;1023   }
00024a  b007              ADD      sp,sp,#0x1c
00024c  bd00              POP      {pc}
;;;1024   /*$PAGE*/
                          ENDP

                  OS_MemClr PROC
;;;1155   {
;;;1156       while (size > 0) {
00024e  2900              CMP      r1,#0
000250  d006              BEQ      |L1.608|
000252  2200              MOVS     r2,#0
                  |L1.596|
000254  f800f800          STRB     r2,[r0],#1
000258  1e49              SUBS     r1,r1,#1
;;;1157           *pdest++ = (INT8U)0;
;;;1158           size--;
00025a  b289              UXTH     r1,r1
00025c  2900              CMP      r1,#0
00025e  d1f9              BNE      |L1.596|
                  |L1.608|
;;;1159       }
;;;1160   }
000260  4770              BX       lr
;;;1161   /*$PAGE*/
                          ENDP

                  OS_InitEventList PROC
;;;846    static  void  OS_InitEventList (void)
;;;847    {
000262  b500              PUSH     {lr}
;;;848    #if OS_EVENT_EN && (OS_MAX_EVENTS > 0)
;;;849    #if (OS_MAX_EVENTS > 1)
;;;850        INT16U     i;
;;;851        OS_EVENT  *pevent1;
;;;852        OS_EVENT  *pevent2;
;;;853    
;;;854    
;;;855        OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table                   */
000264  f44ff44f          MOV      r1,#0x140
000268  4883              LDR      r0,|L1.1144|
00026a  f7fff7ff          BL       OS_MemClr
;;;856        pevent1 = &OSEventTbl[0];
00026e  4882              LDR      r0,|L1.1144|
;;;857        pevent2 = &OSEventTbl[1];
000270  4686              MOV      lr,r0
000272  f10ef10e          ADD      r2,lr,#0x20
;;;858        for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {             /* Init. list of free EVENT control blocks */
000276  2100              MOVS     r1,#0
000278  2300              MOVS     r3,#0
00027a  f04ff04f          MOV      r12,#0x3f
                  |L1.638|
;;;859            pevent1->OSEventType    = OS_EVENT_TYPE_UNUSED;
00027e  7003              STRB     r3,[r0,#0]
;;;860            pevent1->OSEventPtr     = pevent2;
000280  6042              STR      r2,[r0,#4]
;;;861    #if OS_EVENT_NAME_SIZE > 1
;;;862            pevent1->OSEventName[0] = '?';                      /* Unknown name                            */
000282  f880f880          STRB     r12,[r0,#0xf]
;;;863            pevent1->OSEventName[1] = OS_ASCII_NUL;
000286  7403              STRB     r3,[r0,#0x10]
;;;864    #endif
;;;865            pevent1++;
000288  3020              ADDS     r0,r0,#0x20
;;;866            pevent2++;
00028a  3220              ADDS     r2,r2,#0x20
00028c  1c49              ADDS     r1,r1,#1
00028e  b289              UXTH     r1,r1
000290  2909              CMP      r1,#9
000292  d3f4              BCC      |L1.638|
;;;867        }
;;;868        pevent1->OSEventType            = OS_EVENT_TYPE_UNUSED;
000294  7003              STRB     r3,[r0,#0]
;;;869        pevent1->OSEventPtr             = (OS_EVENT *)0;
000296  6043              STR      r3,[r0,#4]
;;;870    #if OS_EVENT_NAME_SIZE > 1
;;;871        pevent1->OSEventName[0]         = '?';
000298  f880f880          STRB     r12,[r0,#0xf]
;;;872        pevent1->OSEventName[1]         = OS_ASCII_NUL;
00029c  7403              STRB     r3,[r0,#0x10]
;;;873    #endif
;;;874        OSEventFreeList                 = &OSEventTbl[0];
00029e  486a              LDR      r0,|L1.1096|
0002a0  f8c0f8c0          STR      lr,[r0,#0x10]  ; OSEventFreeList
;;;875    #else
;;;876        OSEventFreeList                 = &OSEventTbl[0];       /* Only have ONE event control block       */
;;;877        OSEventFreeList->OSEventType    = OS_EVENT_TYPE_UNUSED;
;;;878        OSEventFreeList->OSEventPtr     = (OS_EVENT *)0;
;;;879    #if OS_EVENT_NAME_SIZE > 1
;;;880        OSEventFreeList->OSEventName[0] = '?';                  /* Unknown name                            */
;;;881        OSEventFreeList->OSEventName[1] = OS_ASCII_NUL;
;;;882    #endif
;;;883    #endif
;;;884    #endif
;;;885    }
0002a4  bd00              POP      {pc}
;;;886    /*$PAGE*/
                          ENDP

                  OS_InitTCBList PROC
;;;1105   static  void  OS_InitTCBList (void)
;;;1106   {
0002a6  b500              PUSH     {lr}
;;;1107       INT8U    i;
;;;1108       OS_TCB  *ptcb1;
;;;1109       OS_TCB  *ptcb2;
;;;1110   
;;;1111   
;;;1112       OS_MemClr((INT8U *)&OSTCBTbl[0],     sizeof(OSTCBTbl));      /* Clear all the TCBs                 */
0002a8  f44ff44f          MOV      r1,#0x630
0002ac  4873              LDR      r0,|L1.1148|
0002ae  f7fff7ff          BL       OS_MemClr
;;;1113       OS_MemClr((INT8U *)&OSTCBPrioTbl[0], sizeof(OSTCBPrioTbl));  /* Clear the priority table           */
0002b2  2180              MOVS     r1,#0x80
0002b4  4865              LDR      r0,|L1.1100|
0002b6  f7fff7ff          BL       OS_MemClr
;;;1114       ptcb1 = &OSTCBTbl[0];
0002ba  4870              LDR      r0,|L1.1148|
;;;1115       ptcb2 = &OSTCBTbl[1];
0002bc  4686              MOV      lr,r0
0002be  f10ef10e          ADD      r1,lr,#0x58
;;;1116       for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
0002c2  2200              MOVS     r2,#0
0002c4  f04ff04f          MOV      r12,#0
0002c8  233f              MOVS     r3,#0x3f
                  |L1.714|
;;;1117           ptcb1->OSTCBNext = ptcb2;
0002ca  6141              STR      r1,[r0,#0x14]
;;;1118   #if OS_TASK_NAME_SIZE > 1
;;;1119           ptcb1->OSTCBTaskName[0] = '?';                           /* Unknown name                       */
0002cc  f880f880          STRB     r3,[r0,#0x48]
;;;1120           ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
0002d0  f880f880          STRB     r12,[r0,#0x49]
;;;1121   #endif
;;;1122           ptcb1++;
0002d4  3058              ADDS     r0,r0,#0x58
;;;1123           ptcb2++;
0002d6  3158              ADDS     r1,r1,#0x58
0002d8  1c52              ADDS     r2,r2,#1
0002da  b2d2              UXTB     r2,r2
0002dc  2a11              CMP      r2,#0x11
0002de  d3f4              BCC      |L1.714|
;;;1124       }
;;;1125       ptcb1->OSTCBNext = (OS_TCB *)0;                              /* Last OS_TCB                        */
0002e0  f8c0f8c0          STR      r12,[r0,#0x14]
;;;1126   #if OS_TASK_NAME_SIZE > 1
;;;1127       ptcb1->OSTCBTaskName[0] = '?';                               /* Unknown name                       */
0002e4  f880f880          STRB     r3,[r0,#0x48]
;;;1128       ptcb1->OSTCBTaskName[1] = OS_ASCII_NUL;
0002e8  f880f880          STRB     r12,[r0,#0x49]
;;;1129   #endif
;;;1130       OSTCBList               = (OS_TCB *)0;                       /* TCB lists initializations          */
0002ec  4856              LDR      r0,|L1.1096|
0002ee  f8c0f8c0          STR      r12,[r0,#0x30]  ; OSTCBList
;;;1131       OSTCBFreeList           = &OSTCBTbl[0];
0002f2  f8c0f8c0          STR      lr,[r0,#0x28]  ; OSTCBFreeList
;;;1132   }
0002f6  bd00              POP      {pc}
;;;1133   /*$PAGE*/
                          ENDP

                  OS_InitRdyList PROC
;;;945    
;;;946        OSRdyGrp      = 0;                                     /* Clear the ready list                     */
0002f8  4b53              LDR      r3,|L1.1096|
0002fa  2200              MOVS     r2,#0
0002fc  719a              STRB     r2,[r3,#6]  ; OSRdyGrp
;;;947        prdytbl       = &OSRdyTbl[0];
0002fe  f103f103          ADD      r0,r3,#0x1c
;;;948        for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
000302  2100              MOVS     r1,#0
                  |L1.772|
000304  f800f800          STRB     r2,[r0],#1
000308  1c49              ADDS     r1,r1,#1
00030a  b2c9              UXTB     r1,r1
00030c  2904              CMP      r1,#4
00030e  d3f9              BCC      |L1.772|
;;;949            *prdytbl++ = 0;
;;;950        }
;;;951    
;;;952        OSPrioCur     = 0;
000310  711a              STRB     r2,[r3,#4]  ; OSPrioCur
;;;953        OSPrioHighRdy = 0;
000312  715a              STRB     r2,[r3,#5]  ; OSPrioHighRdy
;;;954    
;;;955        OSTCBHighRdy  = (OS_TCB *)0;
000314  62da              STR      r2,[r3,#0x2c]  ; OSTCBHighRdy
;;;956        OSTCBCur      = (OS_TCB *)0;
000316  625a              STR      r2,[r3,#0x24]  ; OSTCBCur
;;;957    }
000318  4770              BX       lr
;;;958    
                          ENDP

                  OS_InitMisc PROC
;;;902    #if OS_TIME_GET_SET_EN > 0
;;;903        OSTime        = 0L;                                    /* Clear the 32-bit system clock            */
00031a  494b              LDR      r1,|L1.1096|
00031c  2000              MOVS     r0,#0
00031e  6348              STR      r0,[r1,#0x34]  ; OSTime
;;;904    #endif
;;;905    
;;;906        OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
000320  7088              STRB     r0,[r1,#2]  ; OSIntNesting
;;;907        OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
000322  70c8              STRB     r0,[r1,#3]  ; OSLockNesting
;;;908    
;;;909        OSTaskCtr     = 0;                                     /* Clear the number of tasks                */
000324  7208              STRB     r0,[r1,#8]  ; OSTaskCtr
;;;910    
;;;911        OSRunning     = OS_FALSE;                              /* Indicate that multitasking not started   */
000326  71c8              STRB     r0,[r1,#7]  ; OSRunning
;;;912    
;;;913        OSCtxSwCtr    = 0;                                     /* Clear the context switch counter         */
000328  60c8              STR      r0,[r1,#0xc]  ; OSCtxSwCtr
;;;914        OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
00032a  6208              STR      r0,[r1,#0x20]  ; OSIdleCtr
;;;915    
;;;916    #if OS_TASK_STAT_EN > 0
;;;917        OSIdleCtrRun  = 0L;
00032c  6188              STR      r0,[r1,#0x18]  ; OSIdleCtrRun
;;;918        OSIdleCtrMax  = 0L;
00032e  6148              STR      r0,[r1,#0x14]  ; OSIdleCtrMax
;;;919        OSStatRdy     = OS_FALSE;                              /* Statistic task is not ready              */
000330  7048              STRB     r0,[r1,#1]  ; OSStatRdy
;;;920    #endif
;;;921    }
000332  4770              BX       lr
;;;922    /*$PAGE*/
                          ENDP

                  OSInit PROC
;;;246    void  OSInit (void)
;;;247    {
000334  b510              PUSH     {r4,lr}

⌨️ 快捷键说明

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