📄 os_time.txt
字号:
000160 e3590000 CMP r9,#0 ;102
000164 cafffff6 BGT |L1.324| ;102
000168 e3a00000 MOV r0,#0 ;107
00016c eaffffd7 B |L1.208| ;107
|L1.368|
000170 e3a00054 MOV r0,#0x54 ;109
000174 eaffffd5 B |L1.208| ;109
ENDP
OSTimeDlyResume PROC
;;;138 INT8U OSTimeDlyResume (INT8U prio)
;;;139 {
000178 e92d4070 PUSH {r4-r6,lr}
00017c e1a05000 MOV r5,r0
;;;140 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;141 OS_CPU_SR cpu_sr;
;;;142 #endif
;;;143 OS_TCB *ptcb;
;;;144
;;;145
;;;146 if (prio >= OS_LOWEST_PRIO) {
000180 e355000c CMP r5,#0xc
000184 ba000002 BLT |L1.404|
;;;147 return (OS_PRIO_INVALID);
000188 e3a0002a MOV r0,#0x2a
|L1.396|
00018c e8bd4070 POP {r4-r6,lr}
;;;148 }
;;;149 OS_ENTER_CRITICAL();
;;;150 ptcb = (OS_TCB *)OSTCBPrioTbl[prio]; /* Make sure that task exist */
;;;151 if (ptcb != (OS_TCB *)0) {
;;;152 if (ptcb->OSTCBDly != 0) { /* See if task is delayed */
;;;153 ptcb->OSTCBDly = 0; /* Clear the time delay */
;;;154 if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) { /* See if task is ready to run */
;;;155 OSRdyGrp |= ptcb->OSTCBBitY; /* Make task ready to run */
;;;156 OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
;;;157 OS_EXIT_CRITICAL();
;;;158 OS_Sched(); /* See if this is new highest priority */
;;;159 } else {
;;;160 OS_EXIT_CRITICAL(); /* Task may be suspended */
;;;161 }
;;;162 return (OS_NO_ERR);
;;;163 } else {
;;;164 OS_EXIT_CRITICAL();
;;;165 return (OS_TIME_NOT_DLY); /* Indicate that task was not delayed */
;;;166 }
;;;167 }
;;;168 OS_EXIT_CRITICAL();
;;;169 return (OS_TASK_NOT_EXIST); /* The task does not exist */
;;;170 }
000190 e12fff1e BX lr
|L1.404|
000194 ef000002 SVC 0x2 ; formerly SWI ;149
000198 e59f00e0 LDR r0,|L1.640| ;150
00019c e7904105 LDR r4,[r0,r5,LSL #2] ;150
0001a0 e3540000 CMP r4,#0 ;151
0001a4 0a00001e BEQ |L1.548| ;151
0001a8 e1d402ba LDRH r0,[r4,#0x2a] ;152
0001ac e3500000 CMP r0,#0 ;152
0001b0 0a000018 BEQ |L1.536| ;152
0001b4 e3a00000 MOV r0,#0 ;153
0001b8 e1c402ba STRH r0,[r4,#0x2a] ;153
0001bc e5d4002c LDRB r0,[r4,#0x2c] ;154
0001c0 e3100008 TST r0,#8 ;154
0001c4 1a000010 BNE |L1.524| ;154
0001c8 e5d40031 LDRB r0,[r4,#0x31] ;155
0001cc e59f10a4 LDR r1,|L1.632| ;155
0001d0 e5d11000 LDRB r1,[r1,#0] ;155 ; OSRdyGrp
0001d4 e1800001 ORR r0,r0,r1 ;155
0001d8 e59f1098 LDR r1,|L1.632| ;155
0001dc e5c10000 STRB r0,[r1,#0] ;155 ; OSRdyGrp
0001e0 e5d4002f LDRB r0,[r4,#0x2f] ;156
0001e4 e59f1088 LDR r1,|L1.628| ;156
0001e8 e7d10000 LDRB r0,[r1,r0] ;156
0001ec e5d41030 LDRB r1,[r4,#0x30] ;156
0001f0 e1800001 ORR r0,r0,r1 ;156
0001f4 e5d4102f LDRB r1,[r4,#0x2f] ;156
0001f8 e59f2074 LDR r2,|L1.628| ;156
0001fc e7c20001 STRB r0,[r2,r1] ;156
000200 ef000003 SVC 0x3 ; formerly SWI ;157
000204 ebfffffe BL OS_Sched ;158
000208 ea000000 B |L1.528| ;158
|L1.524|
00020c ef000003 SVC 0x3 ; formerly SWI ;160
|L1.528|
000210 e3a00000 MOV r0,#0 ;162
000214 eaffffdc B |L1.396| ;162
|L1.536|
000218 ef000003 SVC 0x3 ; formerly SWI ;164
00021c e3a00050 MOV r0,#0x50 ;165
000220 eaffffd9 B |L1.396| ;165
|L1.548|
000224 ef000003 SVC 0x3 ; formerly SWI ;168
000228 e3a0000b MOV r0,#0xb ;169
00022c eaffffd6 B |L1.396| ;169
ENDP
OSTimeGet PROC
;;;187 INT32U OSTimeGet (void)
;;;188 {
000230 e92d4010 PUSH {r4,lr}
;;;189 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;190 OS_CPU_SR cpu_sr;
;;;191 #endif
;;;192 INT32U ticks;
;;;193
;;;194
;;;195 OS_ENTER_CRITICAL();
000234 ef000002 SVC 0x2 ; formerly SWI
;;;196 ticks = OSTime;
000238 e59f0044 LDR r0,|L1.644|
00023c e5904000 LDR r4,[r0,#0] ; OSTime
;;;197 OS_EXIT_CRITICAL();
000240 ef000003 SVC 0x3 ; formerly SWI
;;;198 return (ticks);
000244 e1a00004 MOV r0,r4
000248 e8bd4010 POP {r4,lr}
;;;199 }
00024c e12fff1e BX lr
ENDP
OSTimeSet PROC
;;;215 void OSTimeSet (INT32U ticks)
;;;216 {
000250 e92d4010 PUSH {r4,lr}
000254 e1a04000 MOV r4,r0
;;;217 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;218 OS_CPU_SR cpu_sr;
;;;219 #endif
;;;220
;;;221
;;;222 OS_ENTER_CRITICAL();
000258 ef000002 SVC 0x2 ; formerly SWI
;;;223 OSTime = ticks;
00025c e59f0020 LDR r0,|L1.644|
000260 e5804000 STR r4,[r0,#0] ; OSTime
;;;224 OS_EXIT_CRITICAL();
000264 ef000003 SVC 0x3 ; formerly SWI
;;;225 }
000268 e8bd4010 POP {r4,lr}
00026c e12fff1e BX lr
|L1.624|
000270 00000000 DCD OSTCBCur
|L1.628|
000274 00000000 DCD OSRdyTbl
|L1.632|
000278 00000000 DCD OSRdyGrp
|L1.636|
00027c 0000ffff DCD 0x0000ffff
|L1.640|
000280 00000000 DCD OSTCBPrioTbl
|L1.644|
000284 00000000 DCD OSTime
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -