📄 artx_config.lst
字号:
00000000 DS 300
0000012C m_stk:
0000012C DS 1612
00000778 os_active_TCB:
00000778 DS 24
00000790 os_tsk_robin:
00000790 DS 4
00000794 task_id:
00000794 DS 4
00000798 os_robin_time:
00000798 DS 2
0000079A os_del_flag:
0000079A DS 1
*** CODE SEGMENT '?PR?os_idle_demon?T?ARTX_Config':
215: }
00000000 L_3:
00000000 E7FE B L_3 ; T=0x00000000
216: } /* end of os_idle_demon */
00000002 ENDP ; 'os_idle_demon?T'
*** CODE SEGMENT '?PR?os_tmr_call?T?ARTX_Config':
226: } /* end of os_tmr_call */
00000000 4770 BX R14
00000002 ENDP ; 'os_tmr_call?T'
*** CODE SEGMENT '?PR?os_stk_overflow?T?ARTX_Config':
231: static void os_stk_overflow (void) {
00000000 B500 PUSH {LR}
239: task_id = os_get_TID (os_runtask);
00000002 4800 LDR R0,=os_runtask ; os_runtask
00000004 6800 LDR R0,[R0,#0x0] ; os_runtask
00000006 F7FF BL os_get_TID?T ; T=0x0001 (1)
00000008 FFFB BL os_get_TID?T ; T=0x0001 (2)
0000000A 4800 LDR R1,=task_id ; task_id
0000000C 6008 STR R0,[R1,#0x0] ; task_id
242: for (;;);
0000000E L_8:
0000000E E7FE B L_8 ; T=0x0000000E
243: }
00000010 BC08 POP {R3}
00000012 4718 BX R3
00000014 ENDP ; 'os_stk_overflow?T'
*** CODE SEGMENT '?PR?os_clock_interrupt?A?ARTX_Config':
ARM COMPILER V2.50a, ARTX_Config 03/05/18 17:46:19 PAGE 12
251: STMDB SP!,{R0-R1} ; Save Full Context
00000000 E92D0003 STMDB R13!,{R0-R1}
252: STMDB SP,{SP}^ ; User SP
00000004 E94D2000 STMDB R13,{SP}^
253: LDMDB SP,{R0}
00000008 E91D0001 LDMDB R13,{R0}
254: MRS R1,SPSR ; User CPSR
0000000C E14F1000 MRS R1,SPSR
255: SUB LR,LR,#0x4
00000010 E24EE004 SUB R14,R14,#0x0004
256: STMDB R0!,{R1,LR} ; Push PC, CPSR
00000014 E9204002 STMDB R0!,{R1,LR}
257: STMDB R0,{LR}^ ; Push User LR
00000018 E9404000 STMDB R0,{LR}^
258: SUB R0,R0,#0x4 ; Write back problem !!
0000001C E2400004 SUB R0,R0,#0x0004
259: STMDB R0!,{R2-R12} ; Push R12-R2
00000020 E9201FFC STMDB R0!,{R2-R12}
260: LDMIA SP!,{R2-R3}
00000024 E8BD000C LDMIA R13!,{R2-R3}
261: STMDB R0!,{R2-R3} ; Push R1-R0
00000028 E920000C STMDB R0!,{R2-R3}
263: LDR R1,=os_runtask ; os_runtask
0000002C E51F1000 LDR R1,=os_runtask
264: LDR R1,[R1,#0x0] ; os_runtask
00000030 E5911000 LDR R1,[R1,#0x0]
265: STR R0,[R1,#TCB_TSTACK] ; os_runtask->tsk_stack
00000034 E5810024 STR R0,[R1,#0x24]
267: OS_TIACK();
00000038 E3A01001 MOV R1,#0x1
0000003C E5100000 LDR R0,=0xE0008000
00000040 E5801000 STR R1,[R0,#0x0]
00000044 E3A01020 MOV R1,#0x20
00000048 E5100000 LDR R0,=0xFFFFF01C
0000004C E5801000 STR R1,[R0,#0x0]
00000050 E3A01000 MOV R1,#0x0
00000054 E5100000 LDR R0,=0xFFFFF030
00000058 E5801000 STR R1,[R0,#0x0]
268: tsk_lock ();
0000005C EBFFFFE7 BL tsk_lock?A ; Targ=0x0
269: os_runtask->full_ctx = __TRUE;
00000060 E3A00001 MOV R0,#0x1
00000064 E5101000 LDR R1,=os_runtask ; os_runtask
00000068 E5911000 LDR R1,[R1,#0x0] ; os_runtask
0000006C E5C10021 STRB R0,[R1,#0x21]
270: os_runtask->state = READY;
00000070 E3A00001 MOV R0,#0x1
00000074 E5101000 LDR R1,=os_runtask ; os_runtask
00000078 E5911000 LDR R1,[R1,#0x0] ; os_runtask
0000007C E5C10001 STRB R0,[R1,#0x1]
271: os_put_rdy_first (os_runtask);
00000080 E5100000 LDR R0,=os_runtask ; os_runtask
00000084 E5900000 LDR R0,[R0,#0x0] ; os_runtask
00000088 EBFFFFDC BL os_put_rdy_first?A ; Targ=0x0
272: os_runtask = &os_clock_TCB;
0000008C E5101000 LDR R1,=os_clock_TCB ; os_clock_TCB
00000090 E5100000 LDR R0,=os_runtask ; os_runtask
00000094 E5801000 STR R1,[R0,#0x0] ; os_runtask
273: os_clock_TCB.state = RUNNING;
00000098 E3A01002 MOV R1,#0x2
0000009C E5100000 LDR R0,=os_clock_TCB + 0x1 ; os_clock_TCB+1
000000A0 E5C01000 STRB R1,[R0,#0x0] ; os_clock_TCB+1
275: LDR R0,=os_runtask ; os_runtask
000000A4 E51F0000 LDR R0,=os_runtask
276: LDR R0,[R0,#0x0] ; os_runtask
000000A8 E5900000 LDR R0,[R0,#0x0]
ARM COMPILER V2.50a, ARTX_Config 03/05/18 17:46:19 PAGE 13
277: LDR R0,[R0,#TCB_TSTACK] ; os_runtask->tsk_stack
000000AC E5900024 LDR R0,[R0,#0x24]
278: LDMIA R0!,{R4-R8,R12}
000000B0 E8B011F0 LDMIA R0!,{R4-R8,R12}
279: MSR SPSR_cxsf,R8
000000B4 E16FF008 MSR SPSR_cxsf,R8
280: STMDB SP,{R0} ; Set User SP
000000B8 E90D0001 STMDB R13,{R0}
281: LDMDB SP,{SP}^
000000BC E95D2000 LDMDB R13,{SP}^
282: MOVS PC,R12 ; RETI
000000C0 E1B0F00C MOVS R15,R12
284: } /* end of os_clock_interrupt */
000000C4 ENDP ; 'os_clock_interrupt?A'
*** CODE SEGMENT '?PR?os_def_interrupt?A?ARTX_Config':
288: void os_def_interrupt (void) __irq {
00000000 E92D0003 STMDB R13!,{R0-R1}
290: OS_IACK();
00000004 E3A01000 MOV R1,#0x0
00000008 E5100000 LDR R0,=0xFFFFF030
0000000C E5801000 STR R1,[R0,#0x0]
291: }
00000010 E8BD0003 LDMIA R13!,{R0-R1}
00000014 E25EF004 SUBS R15,R14,#0x0004
00000018 ENDP ; 'os_def_interrupt?A'
*** CODE SEGMENT '?PR?os_tmr_init?T?ARTX_Config':
298: OS_TINIT();
00000000 4800 LDR R1,=0x249EF
00000002 4800 LDR R0,=0xE0008018
00000004 6001 STR R1,[R0,#0x0]
00000006 2103 MOV R1,#0x3
00000008 4800 LDR R0,=0xE0008014
0000000A 6001 STR R1,[R0,#0x0]
0000000C 2101 MOV R1,#0x1
0000000E 4800 LDR R0,=0xE0008004
00000010 6001 STR R1,[R0,#0x0]
00000012 4900 LDR R1,=os_def_interrupt?A ; os_def_interrupt?A
00000014 4800 LDR R0,=0xFFFFF034
00000016 6001 STR R1,[R0,#0x0]
00000018 4900 LDR R1,=os_clock_interrupt?A ; os_clock_interrupt?A
0000001A 4800 LDR R0,=0xFFFFF13C
0000001C 6001 STR R1,[R0,#0x0]
0000001E 2125 MOV R1,#0x25
00000020 4800 LDR R0,=0xFFFFF23C
00000022 6001 STR R1,[R0,#0x0]
300: os_robin_time = OS_ROBINTOUT;
00000024 2105 MOV R1,#0x5
00000026 4800 LDR R0,=os_robin_time ; os_robin_time
00000028 8001 STRH R1,[R0,#0x0] ; os_robin_time
302: } /* end of os_tmr_init */
0000002A 4770 BX R14
0000002C ENDP ; 'os_tmr_init?T'
*** CODE SEGMENT '?PR?os_tmr_reload?T?ARTX_Config':
309: } /* end of os_tmr_reload */
00000000 4770 BX R14
00000002 ENDP ; 'os_tmr_reload?T'
*** CODE SEGMENT '?PR?os_tmr_force_irq?T?ARTX_Config':
315: OS_TFIRQ();
00000000 2220 MOV R2,#0x20
00000002 4800 LDR R0,=0xFFFFF018
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
316: } /* end of os_tmr_force_irq */
0000000A 4770 BX R14
0000000C ENDP ; 'os_tmr_force_irq?T'
ARM COMPILER V2.50a, ARTX_Config 03/05/18 17:46:19 PAGE 14
*** CODE SEGMENT '?PR?os_tmr_inspect_cnt?T?ARTX_Config':
322: return (OS_TVAL);
00000000 4800 LDR R0,=0xE0008008
00000002 6800 LDR R0,[R0,#0x0]
323: } /* end of os_tmr_inspect_cnt */
00000004 4770 BX R14
00000006 ENDP ; 'os_tmr_inspect_cnt?T'
*** CODE SEGMENT '?PR?os_tmr_inspect_ovf?T?ARTX_Config':
329: return (OS_TOVF);
00000000 4800 LDR R0,=0xE0008000
00000002 6800 LDR R0,[R0,#0x0]
00000004 2101 MOV R1,#0x1
00000006 4008 AND R0,R1
330: } /* end of os_tmr_inspect_ovf */
00000008 4770 BX R14
0000000A ENDP ; 'os_tmr_inspect_ovf?T'
*** CODE SEGMENT '?PR?tsk_lock?T?ARTX_Config':
337: OS_LOCK();
00000000 2120 MOV R1,#0x20
00000002 4800 LDR R0,=0xFFFFF014
00000004 6001 STR R1,[R0,#0x0]
338: } /* end of tsk_lock */
00000006 4770 BX R14
00000008 ENDP ; 'tsk_lock?T'
*** CODE SEGMENT '?PR?tsk_unlock?T?ARTX_Config':
344: OS_UNLOCK();
00000000 2220 MOV R2,#0x20
00000002 4800 LDR R0,=0xFFFFF010
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
345: } /* end of tsk_unlock */
0000000A 4770 BX R14
0000000C ENDP ; 'tsk_unlock?T'
*** CODE SEGMENT '?PR?os_init_mem?T?ARTX_Config':
349: void os_init_mem (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
352: for (i = 0; i < OS_TASKCNT; i++) {
00000002 2000 MOV R0,#0x0
00000004 ---- Variable 'i' assigned to Register 'R0' ----
00000004 L_16:
353: os_active_TCB[i] = NULL;
00000004 2100 MOV R1,#0x0
00000006 1C03 MOV R3,R0 ; i
00000008 009B LSL R3,R3,#0x2 ; i
0000000A 4800 LDR R2,=os_active_TCB ; os_active_TCB
0000000C 50D1 STR R1,[R2,R3]
354: }
0000000E 3001 ADD R0,#0x1
00000010 1C01 MOV R1,R0 ; i
00000012 2906 CMP R1,#0x6 ; i
00000014 D3F6 BCC L_16 ; T=0x00000004
355: _init_box (&m_tcb, sizeof(m_tcb), sizeof(struct OS_TCB));
00000016 4800 LDR R0,=m_tcb ; m_tcb
00000018 494B LDR R1,=0x12C
0000001A 2230 MOV R2,#0x30
0000001C F7FF BL _init_box?T ; T=0x0001 (1)
0000001E FFF0 BL _init_box?T ; T=0x0001 (2)
356: _init_box (&m_stk, sizeof(m_stk), OS_STKSIZE*4);
00000020 4800 LDR R0,=m_stk ; m_stk
00000022 4800 LDR R1,=0x64C
00000024 22C8 MOV R2,#0xC8
00000026 F7FF BL _init_box?T ; T=0x0001 (1)
00000028 FFEB BL _init_box?T ; T=0x0001 (2)
0000002A ; SCOPE-END
ARM COMPILER V2.50a, ARTX_Config 03/05/18 17:46:19 PAGE 15
360: } /* end of os_init_mem */
0000002A BC08 POP {R3}
0000002C 4718 BX R3
0000002E ENDP ; 'os_init_mem?T'
*** CODE SEGMENT '?PR?os_alloc_TCB?T?ARTX_Config':
364: P_TCB os_alloc_TCB () {
00000000 B500 PUSH {LR}
365: return (_alloc_box (m_tcb));
00000002 4800 LDR R0,=m_tcb ; m_tcb
00000004 DF06 SWI 0x6 ; _alloc_box?T
366: } /* end of os_alloc_TCB */
00000006 BC08 POP {R3}
00000008 4718 BX R3
0000000A ENDP ; 'os_alloc_TCB?T'
*** CODE SEGMENT '?PR?os_free_TCB?T?ARTX_Config':
370: void os_free_TCB (P_TCB p_TCB) {
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; p_TCB
00000004 ---- Variable 'p_TCB' assigned to Register 'R4' ----
372: _free_box (m_stk, p_TCB->stack);
00000004 1C20 MOV R0,R4 ; p_TCB
00000006 6A81 LDR R1,[R0,#0x28]
00000008 4800 LDR R0,=m_stk ; m_stk
0000000A DF07 SWI 0x7 ; _free_box?T
373: _free_box (m_tcb, p_TCB);
0000000C 4800 LDR R0,=m_tcb ; m_tcb
0000000E 1C21 MOV R1,R4 ; p_TCB
00000010 DF07 SWI 0x7 ; _free_box?T
375: if (os_runtask == p_TCB) {
00000012 1C21 MOV R1,R4 ; p_TCB
00000014 4800 LDR R0,=os_runtask ; os_runtask
00000016 6800 LDR R0,[R0,#0x0] ; os_runtask
00000018 4288 CMP R0,R1 ; p_TCB
0000001A D102 BNE L_19 ; T=0x00000022
377: os_del_flag = __TRUE;
0000001C 2101 MOV R1,#0x1
0000001E 4800 LDR R0,=os_del_flag ; os_del_flag
00000020 7001 STRB R1,[R0,#0x0] ; os_del_flag
378: }
00000022 L_19:
380: } /* end of os_free_TCB */
00000022 BC10 POP {R4}
00000024 BC08 POP {R3}
00000026 4718 BX R3
00000028 ENDP ; 'os_free_TCB?T'
*** CODE SEGMENT '?PR?os_alloc_TMR?T?ARTX_Config':
388: return (NULL);
00000000 2000 MOV R0,#0x0
390: } /* end of os_alloc_TMR */
00000002 4770 BX R14
00000004 ENDP ; 'os_alloc_TMR?T'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -