📄 artx_ex1.lst
字号:
ARM COMPILER V2.50a, Artx_ex1 05/04/06 21:09:47 PAGE 1
ARM COMPILER V2.50a, COMPILATION OF MODULE Artx_ex1
OBJECT MODULE PLACED IN .\Obj\Artx_ex1.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe Artx_ex1.c THUMB OPTIMIZE(7,SPEED) DEBUG CODE PRINT(.\LST\ARTX_EX1.LST) TABS
-(4) OBJECT(.\Obj\Artx_ex1.obj)
stmt level source
1 /*----------------------------------------------------------------------------
2 * A R T X K e r n e l E x a m p l e
3 *----------------------------------------------------------------------------
4 * Name: ARTX_EX1.C
5 * Purpose: Your First Advanced RTX example program
6 * Rev.: V2.02 / 6-feb-2006
7 *----------------------------------------------------------------------------
8 * This code is part of the ARTX-ARM kernel package of Keil Software.
9 * Copyright (c) 2004-2006 Keil Software. All rights reserved.
10 *---------------------------------------------------------------------------*/
11
12 #include <ARTX.h> /* ARTX kernel functions & defines */
13
14 /* id1, id2 will contain task identifications at run-time */
15 OS_TID id1, id2;
16
17 /* Forward reference */
18 void task1 (void) __task;
19 void task2 (void) __task;
20
21 /*----------------------------------------------------------------------------
22 * Task 1: ARTX Kernel starts this task with os_sys_init (task1)
23 *---------------------------------------------------------------------------*/
24 void task1 (void) __task {
25 1 /* Obtain own system task identification number */
26 1 id1 = os_tsk_self ();
27 1 /* Assign system identification number of task2 to id2 */
28 1 id2 = os_tsk_create (task2, 1);
29 1 for (;;) { /* do-this */
30 2 /* Indicate to task2 completion of do-this */
31 2 os_evt_set (0x0004, id2);
32 2 /* Wait for completion of do-that (0xffff means no time-out)*/
33 2 os_evt_wait_or (0x0004, 0xffff);
34 2 /* Wait now for 50 ms */
35 2 os_dly_wait (5);
36 2 }
37 1 }
38
39 /*----------------------------------------------------------------------------
40 * Task 2: ARTX Kernel starts this task with os_tsk_create (task2, 1)
41 *---------------------------------------------------------------------------*/
42 void task2 (void) __task {
43 1 for (;;) {
44 2 /* Wait for completion of do-this (0xffff means no time-out) */
45 2 os_evt_wait_or (0x0004, 0xffff); /* do-that */
46 2 /* Pause for 20 ms until signaling event to task1 */
47 2 os_dly_wait (2);
48 2 /* Indicate to task1 completion of do-that */
49 2 os_evt_set (0x0004, id1);
50 2 }
51 1 }
52
53 /*----------------------------------------------------------------------------
54 * Main: Initialize and start ARTX Kernel
55 *---------------------------------------------------------------------------*/
56 void main (void) {
57 1 #ifdef MCB2100
U32 volatile start;
ARM COMPILER V2.50a, Artx_ex1 05/04/06 21:09:47 PAGE 2
/* Wait for debugger connection (about 0.3 sec) */
for (start = 0; start < 1000000; start++) { ; }
#endif
63 1 os_sys_init (task1);
64 1 }
65
66 /*----------------------------------------------------------------------------
67 * end of file
68 *---------------------------------------------------------------------------*/
69
70
ARM COMPILER V2.50a, Artx_ex1 05/04/06 21:09:47 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (os_tsk_create_user?T)
EXTERN CODE16 (os_tsk_self?T)
EXTERN CODE16 (os_sys_init_user?T)
EXTERN CODE16 (os_evt_wait?T)
EXTERN CODE16 (os_evt_set?T)
EXTERN CODE16 (os_dly_wait?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC task1?T
PUBLIC task2?T
PUBLIC main
PUBLIC id1
PUBLIC id2
*** DATA SEGMENT '?DT0?Artx_ex1':
00000000 id1:
00000000 DS 4
00000004 id2:
00000004 DS 4
*** CODE SEGMENT '?PR?task1?T?Artx_ex1':
26: id1 = os_tsk_self ();
00000000 F7FF BL os_tsk_self?T ; T=0x0001 (1)
00000002 FFFE BL os_tsk_self?T ; T=0x0001 (2)
00000004 4800 LDR R1,=id1 ; id1
00000006 6008 STR R0,[R1,#0x0] ; id1
28: id2 = os_tsk_create (task2, 1);
00000008 4800 LDR R0,=task2?T ; task2?T
0000000A 2200 MOV R2,#0x0
0000000C 2101 MOV R1,#0x1
0000000E 2300 MOV R3,#0x0
00000010 F7FF BL os_tsk_create_user?T ; T=0x0001 (1)
00000012 FFF6 BL os_tsk_create_user?T ; T=0x0001 (2)
00000014 4800 LDR R1,=id2 ; id2
00000016 6008 STR R0,[R1,#0x0] ; id2
29: for (;;) { /* do-this */
00000018 L_4:
31: os_evt_set (0x0004, id2);
00000018 4800 LDR R0,=id2 ; id2
0000001A 6801 LDR R1,[R0,#0x0] ; id2
0000001C 2004 MOV R0,#0x4
0000001E F7FF BL os_evt_set?T ; T=0x0001 (1)
00000020 FFEF BL os_evt_set?T ; T=0x0001 (2)
33: os_evt_wait_or (0x0004, 0xffff);
00000022 2004 MOV R0,#0x4
00000024 4800 LDR R1,=0xFFFF
00000026 2200 MOV R2,#0x0
00000028 F7FF BL os_evt_wait?T ; T=0x0001 (1)
0000002A FFEA BL os_evt_wait?T ; T=0x0001 (2)
35: os_dly_wait (5);
0000002C 2005 MOV R0,#0x5
0000002E F7FF BL os_dly_wait?T ; T=0x0001 (1)
00000030 FFE7 BL os_dly_wait?T ; T=0x0001 (2)
36: }
00000032 E7F1 B L_4 ; T=0x00000018
37: }
00000034 ENDP ; 'task1?T'
*** CODE SEGMENT '?PR?task2?T?Artx_ex1':
43: for (;;) {
00000000 L_9:
45: os_evt_wait_or (0x0004, 0xffff); /* do-that */
ARM COMPILER V2.50a, Artx_ex1 05/04/06 21:09:47 PAGE 4
00000000 2004 MOV R0,#0x4
00000002 4800 LDR R1,=0xFFFF
00000004 2200 MOV R2,#0x0
00000006 F7FF BL os_evt_wait?T ; T=0x0001 (1)
00000008 FFFB BL os_evt_wait?T ; T=0x0001 (2)
47: os_dly_wait (2);
0000000A 2002 MOV R0,#0x2
0000000C F7FF BL os_dly_wait?T ; T=0x0001 (1)
0000000E FFF8 BL os_dly_wait?T ; T=0x0001 (2)
49: os_evt_set (0x0004, id1);
00000010 4800 LDR R0,=id1 ; id1
00000012 6801 LDR R1,[R0,#0x0] ; id1
00000014 2004 MOV R0,#0x4
00000016 F7FF BL os_evt_set?T ; T=0x0001 (1)
00000018 FFF3 BL os_evt_set?T ; T=0x0001 (2)
50: }
0000001A E7F1 B L_9 ; T=0x00000000
51: }
0000001C ENDP ; 'task2?T'
*** CODE SEGMENT '?PR?main?Artx_ex1':
56: void main (void) {
00000000 B500 PUSH {LR}
63: os_sys_init (task1);
00000002 4800 LDR R0,=task1?T ; task1?T
00000004 2200 MOV R2,#0x0
00000006 2300 MOV R3,#0x0
00000008 1C19 MOV R1,R3
0000000A F7FF BL os_sys_init_user?T ; T=0x0001 (1)
0000000C FFF9 BL os_sys_init_user?T ; T=0x0001 (2)
64: }
0000000E BC08 POP {R3}
00000010 4718 BX R3
00000012 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = 8
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -