📄 rtx_config.txt
字号:
000230 6800 LDR r0,[r0,#0]
000232 4934 LDR r1,|L1.772|
000234 4288 CMP r0,r1
000236 d001 BEQ |L1.572|
;;;474 os_stk_overflow ();
|L1.568|
000238 f7ff fffe BL os_stk_overflow
;;;475 }
;;;476 }
;;;477 #endif
;;;478 os_runtask->full_ctx = __FALSE;
|L1.572|
00023c 2100 MOVS r1,#0
00023e 4821 LDR r0,|L1.708|
000240 6800 LDR r0,[r0,#0] ; os_runtask
000242 3020 ADDS r0,r0,#0x20
000244 7041 STRB r1,[r0,#1]
;;;479 os_runtask = p_new;
000246 481f LDR r0,|L1.708|
000248 6004 STR r4,[r0,#0] ; os_runtask
;;;480 p_new->state = RUNNING;
00024a 2002 MOVS r0,#2
00024c 7060 STRB r0,[r4,#1]
;;;481 #if (OS_ROBIN == 1)
;;;482 if (p_new->full_ctx == __TRUE) {
00024e 2021 MOVS r0,#0x21
000250 5d00 LDRB r0,[r0,r4]
000252 2801 CMP r0,#1
000254 d102 BNE |L1.604|
;;;483 os_tsk_robin = p_new;
000256 481c LDR r0,|L1.712|
000258 3008 ADDS r0,r0,#8
00025a 6004 STR r4,[r0,#0] ; os_tsk_robin
;;;484 }
;;;485 #endif
;;;486 /* Tsk_Unlock */
;;;487 OS_UNLOCK();
|L1.604|
00025c 481d LDR r0,|L1.724|
00025e 3840 SUBS r0,r0,#0x40
000260 6800 LDR r0,[r0,#0]
000262 2101 MOVS r1,#1
000264 4308 ORRS r0,r0,r1
000266 491b LDR r1,|L1.724|
000268 3940 SUBS r1,r1,#0x40
00026a 6008 STR r0,[r1,#0]
;;;488 } /* end of os_switch_tasks */
00026c bc10 POP {r4}
00026e bc08 POP {r3}
000270 4718 BX r3
ENDP
os_chk_robin PROC
;;;492
;;;493 void os_chk_robin (void) {
000272 b510 PUSH {r4,lr}
;;;494 /* Check if Round Robin timeout expired and switch to the next ready task.*/
;;;495 /* This function is called from the "os_clock_demon()" task scheduler. */
;;;496 #if (OS_ROBIN == 1)
;;;497 P_TCB p_new;
;;;498
;;;499 if (os_rdy.p_lnk != os_tsk_robin) {
000274 4824 LDR r0,|L1.776|
000276 6840 LDR r0,[r0,#4] ; os_rdy
000278 4913 LDR r1,|L1.712|
00027a 3108 ADDS r1,r1,#8
00027c 6809 LDR r1,[r1,#0] ; os_tsk_robin
00027e 4288 CMP r0,r1
000280 d008 BEQ |L1.660|
;;;500 os_robin_time = os_time + OS_ROBINTOUT;
000282 4822 LDR r0,|L1.780|
000284 8800 LDRH r0,[r0,#0] ; os_time
000286 1d40 ADDS r0,r0,#5
000288 490f LDR r1,|L1.712|
00028a 1d09 ADDS r1,r1,#4
00028c 8008 STRH r0,[r1,#0] ; os_robin_time
;;;501 return;
;;;502 }
;;;503 if (os_robin_time == os_time) {
;;;504 /* Round Robin timeout has expired. */
;;;505 os_robin_time += OS_ROBINTOUT;
;;;506 p_new = os_get_first (&os_rdy);
;;;507 os_put_prio ((P_XCB)&os_rdy, p_new);
;;;508 }
;;;509 #endif
;;;510 } /* end of os_chk_robin */
|L1.654|
00028e bc10 POP {r4}
000290 bc08 POP {r3}
000292 4718 BX r3
|L1.660|
000294 480c LDR r0,|L1.712| ;503
000296 1d00 ADDS r0,r0,#4 ;503
000298 8800 LDRH r0,[r0,#0] ;503 ; os_robin_time
00029a 491c LDR r1,|L1.780| ;503
00029c 8809 LDRH r1,[r1,#0] ;503 ; os_time
00029e 4288 CMP r0,r1 ;503
0002a0 d10e BNE |L1.704| ;503
0002a2 4809 LDR r0,|L1.712| ;505
0002a4 1d00 ADDS r0,r0,#4 ;505
0002a6 8800 LDRH r0,[r0,#0] ;505 ; os_robin_time
0002a8 1d40 ADDS r0,r0,#5 ;505
0002aa 4907 LDR r1,|L1.712| ;505
0002ac 1d09 ADDS r1,r1,#4 ;505
0002ae 8008 STRH r0,[r1,#0] ;505 ; os_robin_time
0002b0 4815 LDR r0,|L1.776| ;506
0002b2 f7ff fffe BL os_get_first ;506
0002b6 0004 MOVS r4,r0 ;506
0002b8 0021 MOVS r1,r4 ;507
0002ba 4813 LDR r0,|L1.776| ;507
0002bc f7ff fffe BL os_put_prio ;507
|L1.704|
0002c0 e7e5 B |L1.654|
0002c2 0000 DCW 0000
|L1.708|
0002c4 00000000 DCD os_runtask
|L1.712|
0002c8 00000000 DCD ||.data||
|L1.716|
0002cc e0009000 DCD 0xe0009000
|L1.720|
0002d0 0000f7ff DCD 0x0000f7ff
|L1.724|
0002d4 fffff840 DCD 0xfffff840
|L1.728|
0002d8 00000000 DCD os_clock_TCB
|L1.732|
0002dc 000004ab DCD 0x000004ab
|L1.736|
0002e0 00000863 DCD 0x00000863
|L1.740|
0002e4 00008010 DCD 0x00008010
|L1.744|
0002e8 00000000 DCD os_clock_interrupt
|L1.748|
0002ec 00000000 DCD os_active_TCB
|L1.752|
0002f0 00000000 DCD ||.bss.5||
|L1.756|
0002f4 800012c0 DCD 0x800012c0
|L1.760|
0002f8 00009610 DCD 0x00009610
|L1.764|
0002fc 00000130 DCD ||.bss.5|| + 304
|L1.768|
000300 40000010 DCD 0x40000010
|L1.772|
000304 e25a2ea5 DCD 0xe25a2ea5
|L1.776|
000308 00000000 DCD os_rdy
|L1.780|
00030c 00000000 DCD os_time
ENDP
AREA ||.text.201||, CODE, READONLY, ALIGN=2
ARM
os_def_interrupt PROC
;;;264 OS_IACK();
;;;265 }
000000 e25ef004 SUBS pc,lr,#4
ENDP
AREA ||.text.210||, CODE, READONLY, ALIGN=2
THUMB
os_tmr_force_irq PROC
;;;288 /* Force a timer interrupt. */
;;;289 OS_TFIRQ();
000000 4803 LDR r0,|L3.16|
000002 8b00 LDRH r0,[r0,#0x18]
000004 2101 MOVS r1,#1
000006 0349 LSLS r1,r1,#13
000008 4308 ORRS r0,r0,r1
00000a 4901 LDR r1,|L3.16|
00000c 8308 STRH r0,[r1,#0x18]
;;;290 } /* end of os_tmr_force_irq */
00000e 4770 BX lr
|L3.16|
000010 e0009000 DCD 0xe0009000
ENDP
AREA ||.text.219||, CODE, READONLY, ALIGN=2
os_tmr_inspect_ovf PROC
;;;302 /* Inspect current state of timer overflow flag. */
;;;303 return (OS_TOVF);
000000 4802 LDR r0,|L4.12|
000002 8b80 LDRH r0,[r0,#0x1c]
000004 2101 MOVS r1,#1
000006 02c9 LSLS r1,r1,#11
000008 4008 ANDS r0,r0,r1
;;;304 } /* end of os_tmr_inspect_ovf */
00000a 4770 BX lr
|L4.12|
00000c e0009000 DCD 0xe0009000
ENDP
AREA ||.text.228||, CODE, READONLY, ALIGN=1
os_alloc_TMR PROC
;;;375 #else
;;;376 return (NULL);
000000 2000 MOVS r0,#0
;;;377 #endif
;;;378 } /* end of os_alloc_TMR */
000002 4770 BX lr
ENDP
AREA ||.data||, DATA, ALIGN=2
||task_id@os_stk_overflow_0||
DCD 0x00000000
os_robin_time
DCB 0x00,0x00
DCB 0x00,0x00
os_tsk_robin
DCD 0x00000000
os_del_flag
DCB 0x00
AREA ||.constdata.1||, DATA, READONLY, ALIGN=2
os_maxtaskrun
DCW 0x0006
DCB 0x00,0x00
os_stackinfo
DCD 0x010012c0
os_clockrate
DCD 0x00002710
os_timernum
DCD 0x00000000
os_rrobin
DCD 0x00010005
AREA ||.bss.5||, NOINIT, ALIGN=3
m_tcb
% 304
m_stk
% 38416
os_active_TCB
% 24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -